3 coisas que eu queria que a Apple corrigisse na Screen Time API
Eu faço o HonorFit, um bloqueador de apps em que você ganha tempo de tela fazendo flexões (sistema de honra, sem câmera). É o mesmo app no iPhone e no Android, a mesma ideia e, na maior parte, o mesmo código. E, sinceramente? A versão de Android é mais agradável de usar.
Não é porque o Android bloqueia apps melhor. A Screen Time API do iOS é bem sólida na parte do bloqueio. É porque o iOS deixa você preso em três coisas específicas, e nenhuma delas parece estar lá para proteger os usuários. Então aqui vai a minha lista, com o que eu pediria à Apple. Tentei ficar só em coisas que não custariam privacidade a ninguém.
(Se você quer a versão técnica, de quem programa em cima dessa API, escrevi sobre isso separadamente: o que a documentação da Apple não conta.)
1. Só dá para ter um app usando o Tempo de Uso por vez
Digamos que você já usa o Brick, o Opal ou o one sec e quer experimentar o HonorFit também. No iPhone, não dá. Quando o segundo app pede acesso ao Tempo de Uso, o iOS nem mostra o pedido de permissão. Ele só devolve um erro dizendo que o Family Controls está disponível para apenas um aplicativo por vez. Eu mesmo já vi esse erro, e outros desenvolvedores também estão esbarrando nele.
Para trocar, você precisa ir em Ajustes › Tempo de Uso › Apps com Acesso ao Tempo de Uso, desativar o outro app e, às vezes, reiniciar o celular. O HonorFit agora detecta o erro e explica o passo a passo, porque a mensagem de erro crua não significa nada para uma pessoa normal.
Agora a parte estranha: quando a Apple apresentou esse tipo de autorização na WWDC22, ela disse que, ao contrário da autorização de controle parental, a autorização individual pode ser usada por qualquer número de apps num aparelho. Não é isso que acontece hoje, e não encontrei isso documentado em lugar nenhum.
Por que isso não é do interesse dos usuários: as pessoas combinam ferramentas. Alguém pode usar um Brick para sessões de foco pesado no trabalho e o HonorFit para conquistar a rolagem da noite. A Apple já tem uma regra para combinar restrições: quando vários ManagedSettingsStores definem a mesma coisa, nas palavras da Apple, "the most restrictive setting always wins" (a configuração mais restritiva sempre vence). Fazer o mesmo entre apps permitiria usar os dois, e desse jeito um celular só pode acabar mais travado, nunca menos.
2. O seletor de apps é desajeitado, e os apps não podem personalizá-lo
No iPhone, escolher quais apps bloquear significa usar o FamilyActivityPicker da Apple. É uma tela do sistema que o app não pode mudar, a não ser por uma linha de texto no cabeçalho e no rodapé. Ela abre numa lista de categorias (Redes Sociais, Jogos, Entretenimento...), e você toca numa categoria para encontrar os apps de verdade. No Android, eu mesmo monto a lista, então o HonorFit mostra os apps instalados ordenados por quanto você usou cada um nas últimas 24 horas.
Duas coisas me incomodam no do iOS:
- É muito fácil bloquear uma categoria inteira sem querer. Toque na linha da categoria em vez de abri-la e pronto: você acabou de escolher todos os apps dela, inclusive os que instalar depois. Para muitos apps, isso nunca é o que você quer. Você quer o Instagram e o TikTok, não “Redes Sociais”.
- Não dá para ver quais apps estão de fato comendo o seu dia. O motivo pelo qual alguém abre um bloqueador de apps é “passo tempo demais no celular”. O seletor é o único momento em que a pessoa está decidindo o que bloquear, e ele não dá nenhuma informação sobre para onde vai o tempo dela. Seu iPhone sabe exatamente quanto tempo você passou em cada app (está ali nos Ajustes), mas o seletor não mostra.
Isso não custaria nada de privacidade. O seletor é desenhado pelo iOS, no processo dele. O app nunca vê o que tem ali dentro, só tokens opacos do que você escolheu. O HonorFit literalmente não consegue saber quais apps você escolheu. Então o iOS poderia mostrar os tempos de uso dentro do seletor, e o app continuaria sem saber de nada. A Apple já faz algo parecido com as extensões DeviceActivityReport, que mostram seu uso dentro de uma sandbox que o app não consegue ler.
- Uma opção no seletor para escolher categorias inteiras ou só apps, para que um bloqueador de apps possa oferecer uma lista só de apps, sem escolher categorias por acidente (e esconder sites, se não usar).
- Uma opção para ordenar pelo tempo de tela medido, e mostrá-lo, ao lado de cada app, desenhado pelo iOS para que o app nunca veja os números.
3. Não dá para ver uma contagem regressiva precisa do tempo que resta
No HonorFit, o tempo que você conquistou só é descontado enquanto você está de fato num app bloqueado. Então o óbvio a mostrar é uma contagem regressiva: “faltam 12:34”, descendo enquanto você rola o feed e parando quando você sai.
No Android, é fácil. O serviço em segundo plano do HonorFit verifica qual app está na tela a cada segundo, e a notificação usa o cronômetro regressivo nativo do Android, então a aba de notificações redesenha o tempo a cada segundo sozinha. Você puxa a aba para baixo e vê exatamente quanto tempo resta, ao segundo.
No iPhone, não é possível, e eis o porquê:
- O iOS nunca avisa o app quando você abre ou sai de um app bloqueado. Tudo o que você recebe são eventos do tipo “tanto de uso já se acumulou”. O HonorFit configura um a cada 15 segundos de uso, e eles são entregues a uma extensão em segundo plano que atualiza a notificação.
- Uma notificação comum não consegue fazer contagem regressiva sozinha, então o melhor que o HonorFit pode fazer é trocar o texto a cada evento que chega. É por isso que a notificação do iPhone diz “~12:30 restantes”, com um til: ela pula de 15 em 15 segundos.
- Esses eventos também nem sempre chegam na hora. No iOS 26, já vi chegarem atrasados, ou vários de uma vez.
- As Atividades ao Vivo conseguem fazer contagem regressiva sozinhas, mas não podem pausar. Nada avisa o app de que você saiu do Instagram, então uma Atividade ao Vivo continuaria correndo com o celular parado em cima da mesa, o que estaria errado.
Então quem usa iPhone recebe uma estimativa aproximada, enquanto quem usa Android vê o número real.
DeviceActivity controlar uma contagem regressiva que o próprio iOS desenha: numa notificação, numa Atividade ao Vivo ou no shield, correndo só enquanto os apps monitorados estão na tela. O iOS já mede esse uso ao segundo, então poderia mostrar o tempo sem entregar nada de novo ao app. Até simples callbacks de “app bloqueado aberto / fechado” para a extensão de monitoramento resolveriam boa parte disso.É isso
Para ser justo com a Apple, o modelo de privacidade aqui é muito bom. O app nunca descobre o que você bloqueou nem quanto você usa, e eu odiaria ver isso mudar. Nenhuma das três coisas acima mudaria isso. Elas só deixariam os apps de iPhone tão úteis quanto as versões de Android já são.
Se você também desenvolve em cima do Tempo de Uso e quer alguma dessas coisas, registre o pedido no Assistente de Feedback. Pelo que entendo, relatos duplicados são o que faz as coisas serem notadas. E se você só quer experimentar o app, o HonorFit é grátis no iPhone e no Android. Quem sabe alguns de vocês curtem!