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

Blog

Com Personal Team, não dá para testar Family Controls em dispositivo real

Uma conta gratuita de Personal Team não consegue obter a entitlement Family Controls Development. Este texto organiza por que a adesão ao Apple Developer Program vira pré-requisito para testes em dispositivo real e o que mais é afetado.

Publicado:

Uma das primeiras surpresas no desenvolvimento iOS é descobrir que existem recursos que continuam inutilizáveis em um dispositivo real mesmo quando o build passa. Você tenta rodar no aparelho um app que usa a Screen Time API e trava logo de cara em assinatura e provisioning. Em muitos casos, a causa está nas limitações do Personal Team.

Personal Team é o time de desenvolvimento que o Xcode cria automaticamente quando você entra com um Apple ID gratuito. Ele permite compilar um app e executá-lo no próprio dispositivo sem pagar, mas os recursos disponíveis são limitados.

Family Controls Development é só para membros pagos

Um app que usa FamilyControls precisa da entitlement Family Controls (Development), que funciona como a permissão que autoriza o uso dessa capability. No Personal Team, essa entitlement não pode ser obtida.

Isso está documentado pela Apple em Supported capabilities (iOS). O recurso aparece explicitamente como indisponível para Personal Team, sem exceção.

Na prática, isso significa que testar esse tipo de app em dispositivo real exige uma assinatura paga do Apple Developer Program, hoje 99 dólares por ano. Sem experiência em iOS, é fácil imaginar que tudo possa ser feito de graça, mas esse limite existe.

O que dá para verificar no simulador

No simulador, o app ainda compila mesmo sem a entitlement Family Controls. A checagem de tipos na compilação e a lógica de camadas que não usam FamilyControls diretamente ainda podem ser verificadas ali.

O que não dá para verificar no simulador é o fluxo de autorização do AuthorizationCenter, a aplicação das regras de ManagedSettings e o comportamento real da tela de shield. Quando se está começando em iOS, é comum pensar “funcionou no simulador, então está tudo certo”, mas a Screen Time API se comporta de forma bem diferente entre simulador e dispositivo real.

O caminho prático é usar o simulador para pegar erros de compilação e conferir layout de UI.

App Group também pode ser afetado

Family Controls não é a única capability limitada pelo Personal Team. App Group, o mecanismo usado para compartilhar dados entre app e extension, em geral funciona no Personal Team, mas algumas composições ainda podem sofrer restrições.

Além disso, In-App Purchase também não pode ser provisionado em Personal Team. Se monetização faz parte do plano, o ideal é montar o ambiente já como membro pago.

Quando vale virar membro pago

Se o desenvolvimento continua sem testes em dispositivo real, chega uma hora em que o app compila mas não pode ser validado de verdade. Grande parte do comportamento de Shield Extension e da aplicação de regras de ManagedSettings só pode ser testada em hardware real.

Se a intenção é desenvolver esse app com seriedade, faz mais sentido decidir pela assinatura no momento em que o primeiro teste em dispositivo real se torna necessário. Esperar “até a implementação terminar” faz você encontrar o problema de ambiente justamente quando ele começa a consumir tempo. Sem experiência em iOS, esse tipo de bloqueio é difícil de prever, então vale entender isso cedo.

Fazer primeiro tudo o que der com Personal Team antes de pagar reduz o risco financeiro inicial, mas é preciso assumir que o fluxo de desenvolvimento vai parar em algum momento.