Relato ⑦: Ressuscitando com IA um aplicativo iOS parado

Casos de adoção de IA

O aplicativo iOS do mesmo serviço era o campo principal, onde estava a maioria dos membros. Ainda assim, as notificações estavam ainda mais silenciosas que no Android — a rota de notificação da geração anterior fora completamente cortada. Dando sequência ao Relato ⑥ (a parte Android), desta vez reunimos os pontos de travamento específicos do iOS e, comum aos dois sistemas, como modernizamos as notificações sem tocar no servidor antigo.

Quanto mais usuários uma plataforma tem, mais silenciosamente o silêncio das notificações amplia o prejuízo.
É justamente a “falha que ninguém percebe” que vale eliminar primeiro.

A maioria dos usuários estava no iOS. E no iOS as notificações estavam mortas.

Assim como no Android, o aplicativo iOS também era uma casca nativa exibindo um serviço web existente — um invólucro WebView somado a notificações. O envio dependia de um mecanismo da geração anterior e a entrega parou no instante em que essa rota deixou de funcionar. Como a maior parte dos usuários estava aqui, o alcance do impacto era o maior possível. Migrar justamente esta parte para uma plataforma de entrega moderna foi o maior retorno do projeto.

aprox. 10.800dispositivos iOS (a maioria do total)
aprox. 14.000dispositivos registrados (total)
0 ienescusto de troca do servidor

Os travamentos do iOS eram todos daqueles que só aparecem no aparelho real.

No iOS, os problemas eram sobretudo aqueles que nem o dispositivo virtual nem a revisão de código revelam — problemas que só afloram no aparelho real.

A rota de notificação da geração anterior estava completamente rompidaRota de comunicaçãoO esquema antigo de notificação teve seu fornecimento encerrado, sem nenhum meio de envio. Adotamos a plataforma de entrega atual (FCM) como eixo e registramos novamente a chave de autenticação do lado da Apple pelo novo esquema, restaurando a entrega.
O texto em japonês dentro do WebView virava “tofu”AplicaçãoUm sintoma exclusivo do aparelho real: por incompatibilidade da configuração de fonte padrão, o japonês vira uma fileira de □. Injetamos uma definição de fonte que preserva a aparência existente do texto latino e garante que apenas o japonês seja exibido corretamente, o que resolveu o caso.
Entre gerações do sistema, as regras de selo de notificação e de exibição web mudamAplicaçãoNo iOS mais novo, mudou a forma de escrever a atualização do selo e as permissões do WebView. Fizemos ramificações por geração para que aparelhos antigos e novos entreguem a mesma experiência.
Só a conexão de teste era barrada pelas configurações de segurançaRota de comunicaçãoO iOS proíbe conexões em texto puro por padrão. Mantivemos a produção somente com comunicação criptografada, criamos uma exceção restrita ao ambiente de teste e retiramos essa exceção na versão de lançamento, voltando ao lado seguro.

A casca foi refeita em Swift; o conteúdo e os membros permaneceram.

O aplicativo iOS foi reconstruído por um agente de IA sobre uma pilha nativa atual (Swift + WKWebView + a plataforma de notificação atual). Percorremos tudo, da geração do esqueleto do projeto até a verificação no aparelho real, confirmando o funcionamento em uma build de dispositivo a partir do Mac. O conteúdo exibido (o serviço web existente) e o ativo de membros representado por cerca de 14.000 dispositivos registrados foram herdados sem alteração.

ItemAntesDepois da reconstrução
Rota das notificaçõesEsquema de notificação da geração anterior
(descontinuada – não envia)
Plataforma de entrega atual + chave de autenticação do novo esquema
Casca do aplicativoImplementação nativa de geração antigaRegerado com Swift + WKWebView
Telas (conteúdo)Exibem o serviço web existenteContinuam iguais (ativos dos membros preservados)
Defeitos no aparelho realTexto japonês corrompido, entre outrosFontes, selos e diferenças de geração tratados caso a caso

O servidor antigo foi modernizado sem ser trocado.

O ponto comum aos dois sistemas era o servidor do lado do envio. Esse servidor roda em um ambiente de execução muito antigo, de modo que as ferramentas oficiais atuais não funcionam nele como estão. Por isso implementamos por conta própria o processamento de assinatura exigido pela autenticação e conectamos à plataforma de entrega atual. Sem trocar o servidor inteiro, migramos apenas as notificações para um esquema moderno.

Além disso, o lado do envio também foi separado da base compartilhada e refeito como um serviço de entrega independente, permitindo escolher os destinatários e enviar pela tela administrativa.

Antes de disparar para 14.000 aparelhos, comece por 1.Notificação não tem volta. Por isso embutimos primeiro uma trava que só permite enviar a dispositivos autorizados e, durante os testes, começamos com as mensagens chegando a um único aparelho nosso. O envio para todos os dispositivos só foi liberado depois que a rota e o texto foram inteiramente verificados no aparelho real — eliminar pelo projeto o risco de um envio equivocado é a nossa prioridade máxima.

Mesmo um aplicativo móvel dado como “quebrado” pode voltar à operação atual com uma única reconstrução: refaça a casca, herde as chaves e os ativos dos membros e modernize o servidor antigo. Se você tem um aplicativo que já desistiu por considerá-lo intocável, comece conversando conosco sobre analisar o que de fato existe.

* Este artigo generaliza um projeto real na medida em que nem a empresa nem o serviço possam ser identificados. Os números são aproximados, com base em medições de agosto de 2026. Prazo e escopo do trabalho variam conforme a estrutura do aplicativo.

Tags:

🌐 Português