Conectando suas contas Apple e Google
As credenciais que a plataforma usa para assinar, enviar e notificar em seu nome, onde gerar cada uma e o erro clássico de cada uma delas. Elas ficam criptografadas e nunca voltam para a tela.
São quatro credenciais, e elas parecem iguais duas a duas
| Credencial | Para que serve | Precisa se |
|---|---|---|
Chave da App Store Connect (.p8 + Key ID + Issuer ID + Team ID) |
assinar e enviar o build para a Apple | você publica no iOS |
Conta de serviço do Play Console (.json) |
enviar versões ao Google Play | você publica no Android |
Firebase: google-services.json + conta de serviço (.json) |
entregar notificação no Android | você usa push no Android |
Chave de In-App Purchase da Apple (.p8) |
verificar uma compra feita dentro do app | você vende dentro do app no iOS |

Duas armadilhas nascem daí. A conta de serviço do Play Console não é a do Firebase: uma publica o app, a
outra manda notificação, e as duas são arquivos .json parecidos. E a chave de In-App Purchase não é a chave da
App Store Connect: a Apple emite as duas separadamente, as duas são arquivos .p8 com um bloco BEGIN PRIVATE KEY,
e por fora são indistinguíveis. Por isso a plataforma confere a de compras com a Apple na hora de salvar, em vez
de olhar o formato.
Google Play
1. Criar o app no console, com o identificador exato
No Play Console, Criar app. O nome do pacote precisa ser exatamente o identificador que a aba Aplicativo mostra (há um botão de copiar ao lado dele).
A API do Google não cria o app. Se o pacote não existir, o envio falha com Package not found, e o nome do
pacote não pode ser renomeado depois.
2. Criar a conta de serviço
A conta de serviço é o "usuário robô" que envia as versões. Ela é criada no Google Cloud e autorizada no Play Console. Hoje o Google não exige mais vincular o projeto do Cloud ao Play Console para usar a API, então o caminho é direto:
- no Google Cloud Console, crie (ou escolha) um projeto;
- ative a Google Play Android Developer API nesse projeto;
- em APIs e serviços → Credenciais → Criar credenciais → Conta de serviço, crie a conta. Não precisa dar papel nenhum aqui: a permissão que importa é a do Play Console, no passo seguinte;
- na conta criada, aba Chaves → Adicionar chave → Criar nova chave → JSON. O arquivo baixa na hora, e é ele que você envia para a plataforma.
Guarde esse .json como se fosse uma senha: quem tem o arquivo consegue publicar no seu Play Console.
3. Dar permissão no Play Console
Este é o passo esquecido com mais frequência, e o sintoma engana: o arquivo é aceito aqui e o envio é recusado lá.
No Play Console, Usuários e permissões → Convidar novo usuário, use o e-mail da conta de serviço (algo como
nome@projeto.iam.gserviceaccount.com), adicione o app na aba de permissões por app e marque:
- Liberar apps para faixas de teste (release to testing tracks);
- Liberar para produção, excluir dispositivos e usar o Play App Signing, se você vai publicar em produção.
Convide. A conta de serviço aparece na lista como qualquer outro usuário.
4. A impressão digital SHA-256 (opcional)
Serve só para os links do seu site abrirem dentro do app. Fica em Configurações → Integridade do app → Assinatura de apps. Use a do certificado da chave de assinatura do app, não a da chave de upload: usar a de upload é o erro clássico, o valor parece certo e a verificação de links nunca passa.
Apple
1. A chave da App Store Connect
No App Store Connect, em Users and Access → Integrations → App Store Connect API → Team Keys, clique em Generate API Key. Dê um nome e escolha o papel.
O papel precisa ser Admin. App Manager não consegue criar o certificado de assinatura, e essa falha só aparece no fim do build, depois de 20 minutos de compilação, numa mensagem sobre certificado que não diz "papel errado".
Ao gerar, a Apple deixa você baixar o arquivo .p8 uma única vez. Se perder, não dá para recuperar: revogue a
chave e gere outra. Da mesma tela você tira os outros dois campos: o Key ID (dez caracteres, na linha da chave)
e o Issuer ID (um UUID, escrito acima da lista, igual para todas as suas chaves).
Trocar Issuer ID por Key ID é o erro mais comum, porque os dois vêm da mesma tela.
2. O Team ID
Em developer.apple.com → Membership, no canto superior direito, ao lado do nome do time. São dez caracteres. Sem ele o build não consegue se autenticar para assinar, e falha na nuvem com um erro sobre certificado.
3. Guardar o identificador
O mesmo identificador do passo Marca. É por ele que a Apple reconhece que uma versão nova é o mesmo app, e ele não muda depois da primeira publicação.
Notificações no Android: os dois arquivos do Firebase
O Android entrega notificação pelo Firebase Cloud Messaging, e isso exige um projeto Firebase seu. São dois arquivos diferentes do mesmo projeto, e eles só funcionam juntos:
| Arquivo | Onde fica | Onde baixar |
|---|---|---|
google-services.json |
dentro do app, para ele saber a qual projeto pertence | Firebase → Configurações do projeto → Seus apps → Android |
Conta de serviço (.json) |
no nosso servidor, para autorizar o envio | Firebase → Configurações do projeto → Contas de serviço → Gerar nova chave privada |
Crie o app Android dentro do projeto Firebase com o mesmo identificador do app. Se os dois arquivos vierem de projetos diferentes, o envio da notificação falha com um erro de remetente que não diz isso com essas palavras.
O iOS não usa Firebase. Lá a entrega passa pela Apple, com a credencial que a plataforma já cria na sua conta. Sem estes dois arquivos, o push funciona no iPhone e não no Android.
A chave de In-App Purchase
Só é necessária se você vai vender assinatura ou compra dentro do app no iOS. Em Users and Access → Integrations → In-App Purchase, clique em Generate In-App Purchase Key. Também baixa uma única vez, e o papel exigido é Account Holder ou Admin.
O guia Vender assinaturas dentro do app explica o resto do caminho.
O que a plataforma não consegue verificar por você
Conectar a conta é metade do trabalho. A outra metade acontece dentro do console da loja, e de fora não dá para ver se foi feita: se o app existe no Play Console, se a conta de serviço recebeu permissão, se a chave tem papel Admin.
Por isso a tela lista essas exigências sem travar o botão. Ela prefere deixar você tentar e falhar com uma mensagem clara a fingir que sabe algo que não sabe.