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.
hsb.horse