logo hsb.horse
← Voltar para o índice do blog

Blog

Não selecione NEDNSProxyProvider ao criar um bloco de site no iOS

Registramos uma investigação sobre os problemas técnicos e políticos do uso do NEDNSProxyProvider em aplicativos iOS de autocontrole distribuídos na App Store, levando à decisão de migrar para a API Screen Time.

Publicado:

Quando você acabou de iniciar o desenvolvimento para iOS e deseja criar um aplicativo que bloqueie sites, seu primeiro pensamento pode ser DNS. Parece mais confiável e simples interromper o processo no estágio de resolução de nomes do que monitorar o processo.

Ao pesquisar, você encontrará uma classe chamada NEDNSProxyProvider. O nome permanece o mesmo e o propósito parece ser o mesmo.

Mas não use isso. É fácil perder tempo aqui, principalmente se você não tem experiência com iOS.

Para que serve a aula?

NEDNSProxyProvider faz parte da estrutura de extensão de rede e é uma classe para configurar um proxy DNS em um dispositivo. Tecnicamente, é assim que funciona.

O problema está no ambiente de destino. Se você ler o TN3134 (Network Extension Provider Deployment) da Apple, verá que esta classe é destinada a dispositivos supervisionados controlados por MDM – terminais gerenciados por empresas e escolas.

Não se destina a aplicativos distribuídos a usuários individuais na App Store. Se você tem experiência com desenvolvimento iOS, entenderá o contexto de “para dispositivos gerenciados por MDM”, mas esta parte é difícil de ler no início.

Mensagens consistentes em fóruns de desenvolvedores

Quando você pergunta sobre a implementação de aplicativos de autocontrole nos fóruns de desenvolvedores da Apple, as respostas são bastante consistentes. Você será direcionado para Family Controls + ManagedSettings.

Mesmo quando explico minha necessidade de filtrar o DNS, recebo uma resposta dizendo: “Esse não é o caso de uso pretendido”. Tentar implementar o bloqueio de sites prejudiciais para usuários individuais usando extensões de rede é contrário à filosofia de design da Apple.

Muitas pessoas descobrem pela primeira vez depois de lerem fóruns que “iOS tem sua própria API”.

O que realmente acontecerá?

Por ser um recurso para dispositivos supervisionados, não está claro se ele será aprovado na análise como um aplicativo normal da App Store. O desenvolvimento continuará com o risco de rejeição da App Review.

Além do mais, se você escolher esse caminho, não poderá usar FamilyActivityPicker ou ManagedSettings. Você acaba escrevendo toda a lógica do bloco sozinho e não se beneficia de nenhum dos mecanismos que a Apple mantém no nível da plataforma.

Conclusão da mudança

Para aplicativos iOS de autocontrole para usuários individuais, a combinação de Family Controls + ManagedSettings é a resposta. Se você não tem experiência com desenvolvimento iOS, prosseguirá sem saber que existe uma API formal.

Entendo que você deseja alterar o sistema DNS. Mas seguir as políticas da plataforma da Apple reduz o atrito da revisão de aplicativos e os custos de manutenção a longo prazo. Você deve ler a documentação da API Screen Time antes de dedicar algum tempo ao NEDNSProxyProvider.