> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Registro com Firebase Installation ID

> Entenda o registro com Firebase Installation ID (FID) no Android, como saber se ele está habilitado no seu aplicativo e o que o OneSignal exige.

O registro com Firebase Installation ID (FID) é um recurso do **Firebase**, introduzido no `firebase-messaging` 25.1.x, que substitui o token de registro FCM legado por um Firebase Installation ID.

Ele é controlado por uma configuração de manifesto chamada `firebase_messaging_installation_id_enabled`. **Esta é uma configuração do Firebase, não do OneSignal.** O OneSignal a lê para decidir como se registrar para push, mas não a define, não pode alterá-la e não pode aplicá-la somente ao OneSignal.

> [!WARNING]
>
> `firebase_messaging_installation_id_enabled` se aplica ao **aplicativo inteiro**. Quando é `true`, o Firebase desabilita `getToken()` para todos os SDKs do seu processo: o OneSignal, qualquer outro SDK de terceiros e o seu próprio código Firebase.
>
> Como o Android mescla os manifestos das suas dependências, **outro SDK pode habilitá-la por você.** Você pode estar nesse caminho sem tê-lo escolhido.

***

## Você deve habilitá-lo? \\

O registro com FID é opcional, mas **recomendado**. O Google [descontinuou os tokens de registro FCM](https://firebase.google.com/docs/cloud-messaging/android/client#access-fcm-registration-token) em favor dos Firebase Installation IDs, então todos os aplicativos precisarão migrar em algum momento. A mudança mantém seus usuários existentes inscritos e recebendo mensagens, e o OneSignal continua enviando pela sua Conta de Serviço do FCM. Cada dispositivo substituirá o token de registro FCM legado pelo novo valor de token push (FID) na próxima inicialização.

### Antes de ativar \\

Revise estes pontos antes de habilitar o registro com FID:

* **Dispositivos mais antigos.** O registro com FID exige o Google Play Services `261200000` ou posterior. Dispositivos que já estão inscritos mantêm o token push atual. Novas instalações em dispositivos Android mais antigos, ou em dispositivos que não recebem atualizações do Google Play Services, não conseguem receber push até que o Google Play Services seja atualizado. Eles exibem o status de notification\_type [`-34`](#34-fid-registration-failed).
* **Outros SDKs de push.** A configuração se aplica ao aplicativo inteiro e desabilita `getToken()` e `deleteToken()` para todos os SDKs. Isso afeta principalmente outros SDKs que enviam notificações push. Verifique se cada um deles é compatível com Firebase Installation IDs.
* **Formato do token push.** `OneSignal.User.pushSubscription.token` e `IPushSubscriptionObserver` retornam um Firebase Installation ID em vez de um token de registro FCM. O tipo da propriedade não muda, então nada falha em tempo de compilação. Qualquer código que armazene, valide ou envie esse valor como token FCM deixa de funcionar sem erro.
* **Integrações personalizadas do Firebase.** Se o seu aplicativo tem o próprio `FirebaseMessagingService`, o Firebase chama `onRegistered()` em vez de `onNewToken()`. Mova o tratamento de tokens para `onRegistered()`. Se o seu aplicativo chama `deleteToken()` (ao sair da conta, por exemplo), mude para `unregister()`. O OneSignal não precisa de nenhum desses callbacks. Veja o guia do Firebase sobre [registro via Firebase Installation ID](https://firebase.google.com/docs/cloud-messaging/android/client#enable-registration-via-firebase-installation-id) e [Conflito com o SDK do Firebase Messaging](https://documentation.onesignal.com/docs/pt-BR/notifications-show-successful-but-are-not-being-shown.md#firebase-messaging-sdk-conflict) para usá-lo junto com o OneSignal.
* **Requisitos de build.** Seu aplicativo deve declarar `firebase-messaging` 25.1.2 ou posterior e usar `minSdk` 23 ou superior. No `firebase-messaging` 26.x, seu aplicativo precisa de `minSdk` 24 ou superior e Kotlin 2.0.0 ou posterior. Veja [Requisitos](#requirements).
* **Reverter exige uma nova versão.** A configuração faz parte do build do seu aplicativo. Ativá-la ou desativá-la exige um novo build e uma nova publicação na loja. Não existe um controle do lado do servidor.

***

## Está habilitado no seu aplicativo? \\

Verifique o manifesto **mesclado**, não apenas o seu próprio `AndroidManifest.xml`. Uma dependência pode adicionar essa configuração sem que ela apareça no seu código-fonte.

**1. Gerar o manifesto mesclado**

```bash theme={null}
./gradlew :app:processDebugManifest
```

**2. Pesquisar no resultado mesclado**

```bash theme={null}
grep -r "firebase_messaging_installation_id_enabled" app/build/intermediates/ --include=AndroidManifest.xml
```

Um resultado do grep não basta. Leia o `android:value` mesclado. O registro com FID só está habilitado quando esse valor é o booleano `true`.

Nenhuma entrada `meta-data`, ou um valor mesclado `false`, significa que você está no caminho de token legado. Para forçar o valor para `false` quando uma dependência o define como `true`, veja [Desabilitar o registro com FID](#disable-fid-registration).

Quando o registro falha, o erro inclui o valor do manifesto, se um `FirebaseApp` padrão foi encontrado e se `register()` está disponível. Um registro bem-sucedido não registra esses três dados, então o [log detalhado](https://documentation.onesignal.com/docs/pt-BR/capturing-a-debug-log.md) não os mostrará em um dispositivo saudável. Use o manifesto mesclado para confirmar a configuração.

> [!NOTE]
>
> **SDKs conhecidos que habilitam essa configuração.** O SDK Android da Braze 43.0.0 e posteriores adicionam `firebase_messaging_installation_id_enabled="true"` por meio da mesclagem de manifestos. Se o seu aplicativo inclui Braze 43+, o registro com FID está habilitado, quer você tenha adicionado a configuração ou não.

***

## Habilitar o registro com FID \\

Para habilitar o registro com FID, dê ao seu aplicativo a própria configuração do Firebase, exija `firebase-messaging` 25.1.2 ou posterior e ative a configuração de manifesto. Depois, confirme que os dispositivos se registram com um Firebase Installation ID.

### Requisitos \\

O registro com FID exige todos os itens a seguir. Se algum estiver faltando, o registro falha com um dos status em [Solução de problemas](#troubleshooting).

* **SDK Android do OneSignal** `5.11.0` ou posterior, ou uma versão de SDK wrapper que o inclua. Veja [Versões mínimas do SDK do OneSignal](#minimum-onesignal-sdk-versions)
* **`com.google.firebase:firebase-messaging`** `25.1.2` ou posterior, declarado pelo seu aplicativo. Versões 25.1.x anteriores têm bugs de registro, incluindo falhas após a restauração de um backup ou quando os dados do aplicativo são clonados
* **Android API 23+** (o `firebase-messaging` 25.0.0 elevou o mínimo de 21 para 23). No `firebase-messaging` 26.x, API 24+ e Kotlin 2.0.0 ou posterior. Veja [Usar o firebase-messaging 26.x](#using-firebase-messaging-26-x)
* **Google Play Services** versão `261200000` ou posterior no dispositivo
* **Um `FirebaseApp` padrão para o seu próprio projeto Firebase.** Veja [Etapa 1: Adicionar o google-services.json ao seu aplicativo](#step-1-add-google-services-json-to-your-app)
* **Projetos Firebase correspondentes.** O projeto do seu `google-services.json` deve ser o mesmo projeto da Conta de Serviço do FCM carregada no OneSignal. Veja [Fazer corresponder seus projetos Firebase](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#match-your-firebase-projects)

#### Versões mínimas do SDK do OneSignal \\

O suporte ao registro com FID chegou no SDK Android do OneSignal `5.11.0`. Cada SDK wrapper abaixo indica a primeira versão que o inclui. Versões mais antigas usam apenas o caminho de token legado, então, com a configuração ativada, o registro de push falha nessas versões.

| SDK | Versão mínima | Observações |
| - | - | - |
| Android (nativo) | `5.11.0` | |
| Flutter | `5.7.2` | |
| React Native | `5.5.16` | |
| Expo | `react-native-onesignal` `5.5.16` | O `onesignal-expo-plugin` `2.8.0` adiciona a propriedade `enableFirebaseInstallationId`, que grava a configuração de manifesto por você. Requer um build de desenvolvimento. O Expo Go não é compatível |
| Cordova | `5.6.2` | |
| Capacitor | `1.2.2` | |
| Unity | `5.4.2` | |
| .NET / MAUI | `6.4.2` | |

### Etapa 1: Adicionar o google-services.json ao seu aplicativo \\

O registro com FID precisa dos detalhes do seu projeto Firebase no lado do cliente. Baixe o `google-services.json` do mesmo projeto Firebase da Conta de Serviço do FCM carregada no OneSignal. Se os projetos não corresponderem, o registro falha com [`-6`](#6-sender-id-mismatch). Adicione o arquivo ao seu aplicativo e aplique o plugin Gradle do Google Services. O local do arquivo depende do seu aplicativo. Veja [Adicionar seu arquivo de configuração do Firebase](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#add-your-firebase-configuration-file) para as etapas. Talvez você já tenha feito isso.

### Etapa 2: Declarar o firebase-messaging 25.1.2 ou posterior \\

O OneSignal é compilado com o `firebase-messaging` 24.x, que usa `FirebaseMessaging.getToken()` para tokens de registro FCM legados.

O registro com FID usa `FirebaseMessaging.register()`, que exige o `firebase-messaging` 25.1.2 ou posterior.

Para atualizar o `firebase-messaging`, adicione isto ao arquivo Gradle do módulo do seu aplicativo:

```kotlin app/build.gradle.kts theme={null}
implementation("com.google.firebase:firebase-messaging:[25.1.2, 25.99.99]")
```

```groovy app/build.gradle theme={null}
implementation 'com.google.firebase:firebase-messaging:[25.1.2, 25.99.99]'
```

#### Usar o firebase-messaging 26.x \\

O intervalo `[25.1.2, 25.99.99]` mantém seu aplicativo na 25.x, que não tem requisitos extras. Se o seu aplicativo ou outra dependência trouxer o `firebase-messaging` 26.x, o Gradle resolve para a 26.x, e seu aplicativo também precisa de:

* `minSdk` 24 ou superior
* Kotlin 2.0.0 ou posterior

Verifique qual versão o seu aplicativo resolve:

```bash theme={null}
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep firebase-messaging
```

### Etapa 3: Adicionar a configuração de manifesto do Firebase \\

Adicione isto dentro da tag `<application>` do seu `AndroidManifest.xml`:

```xml AndroidManifest.xml theme={null}
<meta-data
    android:name="firebase_messaging_installation_id_enabled"
    android:value="true" />
```

No Expo, defina `enableFirebaseInstallationId: true` na configuração do `onesignal-expo-plugin` (versão `2.8.0` ou posterior) e depois execute `expo prebuild`.

### Etapa 4: Verificar o registro com FID \\

Compile e execute em um dispositivo e verifique o **Push Token** no log ou em **Dashboard > Audience > Subscriptions**.

> [!TIP]
>
> Sua Subscription do OneSignal deve estar **Subscribed** e o token push deve ser um Firebase Installation ID curto como `cXp9fY-TRFCLSy9kVTqorZ`, e não um token FCM legado mais longo com dois-pontos como `dN8Ya5MTR2OO-0BXdqimCI:APA91bFw...`. Se o status for negativo, veja [Solução de problemas](#troubleshooting).

***

## Desabilitar o registro com FID \\

O método necessário depende de onde vem a configuração.

> [tab] Você a adicionou
>
> Remova o elemento `<meta-data>` do seu `AndroidManifest.xml` e recompile.

> [tab] Uma dependência a adicionou
>
> Se a configuração chega pela mesclagem de manifestos, remover a sua própria entrada não adianta, porque ela não existe. Em vez disso, substitua o valor mesclado. Um valor `false` com `tools:replace` vence a mesclagem, então um `true` vindo de uma dependência nunca entra em vigor:
>
> ```xml AndroidManifest.xml theme={null}
> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
>     xmlns:tools="http://schemas.android.com/tools">
>
>     <application>
>         <meta-data
>             android:name="firebase_messaging_installation_id_enabled"
>             android:value="false"
>             tools:replace="android:value" />
>     </application>
> </manifest>
> ```
>
> Recompile e verifique novamente o manifesto mesclado para confirmar que o valor agora é `false`.

> [!WARNING]
>
> Desabilitar o registro com FID afeta todos os SDKs do seu aplicativo, não apenas o OneSignal. Se outro SDK depende do registro com FID, consulte a documentação dele antes de desativar a configuração.

Os dispositivos se registram novamente na próxima inicialização do aplicativo. As Subscriptions existentes são preservadas e recebem um novo valor de token.

***

## Solução de problemas \\

Encontre a Subscription em **Dashboard > Audience > Subscriptions** e verifique o status. Cada status abaixo tem uma causa e uma correção.

Depois que você corrige a configuração e publica um novo build, a **mesma Subscription se recupera em uma sessão posterior**. Não é preciso reinstalar, e nenhuma nova Subscription é criada.

| Status | Significado | Correção |
| - | - | - |
| `-32` | O registro com FID está habilitado, mas seu aplicativo não tem um `FirebaseApp` padrão | [Adicionar a configuração do Firebase](#32-no-default-firebase-app) |
| `-33` | O registro com FID está habilitado, mas `FirebaseMessaging.register()` não está disponível | [Atualizar o firebase-messaging](#33-register-api-unavailable) |
| `-34` | O registro com FID falhou, ou o Google Play Services está desatualizado | [Atualizar o Google Play Services](#34-fid-registration-failed) |
| `-6` | O Sender ID não corresponde entre seu aplicativo e o OneSignal | [Fazer corresponder seus projetos Firebase](#6-sender-id-mismatch) |

### -32: Nenhum aplicativo Firebase padrão \\

O registro com FID exige o `FirebaseApp` padrão do próprio aplicativo. O projeto Firebase compartilhado do OneSignal não consegue gerar um installation ID.

Causas mais comuns, em ordem:

1. **O `google-services.json` está ausente.** Baixe-o do seu [console do Firebase](https://console.firebase.google.com/) em **Project settings > Your apps** e adicione-o ao seu aplicativo. Aplicativos Android nativos usam o diretório `app/`. Outras plataformas usam caminhos diferentes. Veja [Adicionar seu arquivo de configuração do Firebase](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#add-your-firebase-configuration-file).
2. **O plugin Gradle do Google Services não está aplicado.** O arquivo sozinho não faz nada. O plugin o converte nos recursos que o Firebase lê em tempo de execução. Veja [Adicionar seu arquivo de configuração do Firebase](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#add-your-firebase-configuration-file).
3. **O plugin está aplicado no arquivo Gradle errado.** O `apply` deve estar no `build.gradle` do **módulo do aplicativo**, não no arquivo de nível de projeto.
4. **A inicialização programática foi executada tarde demais, ou não foi executada.** Se você inicializa o aplicativo padrão por conta própria (por exemplo, porque condiciona o Firebase ao consentimento do usuário), ela deve terminar antes de o OneSignal ser inicializado. Veja [Configurar o Firebase sem google-services.json](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#set-up-firebase-without-google-services-json).

Se você não pretendia usar o registro com FID, [desabilite-o](#disable-fid-registration).

### -33: API register indisponível \\

A API `FirebaseMessaging.register()` não existe na versão do `firebase-messaging` que seu aplicativo resolveu, ou foi removida do seu build de release.

1. **Declare o `firebase-messaging` 25.1.2 ou posterior.** O `register()` apareceu pela primeira vez na 25.1.0, e o OneSignal é compilado com a 24.x, então seu aplicativo precisa trazer a biblioteca mais recente. Use 25.1.2 ou posterior em vez de 25.1.0 ou 25.1.1. Veja [Requisitos](#requirements).

2. **Verifique a versão resolvida.** Outra dependência pode estar fixando uma versão mais antiga:

   ```bash theme={null}
   ./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep firebase-messaging
   ```

3. **Se isso só acontece em builds de release,** o R8 removeu ou renomeou o método. Confirme que as regras ProGuard de consumidor do OneSignal estão aplicadas e que você não as desabilitou.

### -34: Falha no registro com FID \\

Este status permite nova tentativa. O SDK tenta novamente em uma sessão posterior.

1. **O Google Play Services está desatualizado.** O registro com FID exige a versão `261200000` ou posterior. Abaixo dessa versão, o Firebase solicita um token legado em vez de registrar o installation ID, e esse token nunca fica disponível para o seu aplicativo. O SDK falha em vez de relatar uma Subscription que não pode receber push. Atualize o Google Play Services no dispositivo pela Play Store.
2. **Uma falha transitória do Firebase.** Nenhuma ação é necessária. O registro se recupera em uma inicialização posterior do aplicativo.

### -6: Sender ID não corresponde \\

Exibido no painel como `Invalid Google Project Number`. O projeto Firebase do seu aplicativo e a Conta de Serviço do FCM carregada no OneSignal não são o mesmo projeto.

Uma divergência de projeto só causa este status com o registro com FID ativado. No caminho de token legado, a mesma divergência não falha, e o SDK se registra pelo projeto Firebase compartilhado do OneSignal. É por isso que `-6` pode aparecer logo depois de você habilitar o registro com FID, mesmo que o push funcionasse antes.

Compare os dois projetos com [Fazer corresponder seus projetos Firebase](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#match-your-firebase-projects). Se os valores forem diferentes, carregue a Conta de Serviço do projeto Firebase correto ou inclua o `google-services.json` do projeto cuja Conta de Serviço você carregou.

> [!WARNING]
>
> Ao contrário dos outros status, `-6` marca as Subscriptions existentes como inválidas. Corrija a configuração e publique um build atualizado; os dispositivos se registram novamente e voltam a **Subscribed** na próxima inicialização.

***

## Perguntas frequentes

### Preciso do `google-services.json` mesmo se não usar FID? \\

O push funciona sem ele hoje, mas você deve adicioná-lo. Adicionar o arquivo não ativa a configuração de manifesto. Veja [O que acontece se eu não adicionar o google-services.json?](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md#what-happens-if-i-skip-google-services-json)

### Vou perder minhas Subscriptions existentes? \\

Não. Os dispositivos se registram novamente na próxima inicialização do aplicativo e mantêm a mesma Subscription, com um novo valor de token push. Isso vale nos dois sentidos, ao habilitar e ao desabilitar. A exceção é uma divergência de projeto Firebase, que marca as Subscriptions existentes como inválidas até você publicar uma correção. Veja [`-6`](#6-sender-id-mismatch).

### Posso habilitar o registro com FID somente para o OneSignal? \\

Não. A configuração se aplica ao processo inteiro e desabilita `getToken()` para todos os SDKs. O registro com installation ID só pode usar o seu `FirebaseApp` padrão. O aplicativo compartilhado do OneSignal não consegue gerar esse ID.

### Por que o formato do meu token push mudou? \\

Seu aplicativo agora se registra com um Firebase Installation ID. Os Installation IDs são curtos e sem dois-pontos, como `cXp9fY-TRFCLSy9kVTqorZ`. Os tokens FCM legados são mais longos e contêm dois-pontos, como `dN8Ya5MTR2OO-0BXdqimCI:APA91bFw...`.

***

## Páginas relacionadas

> [card] [Credenciais do Android Firebase](https://documentation.onesignal.com/docs/pt-BR/android-firebase-credentials.md)
>
> Carregue sua chave privada de Conta de Serviço do FCM e adicione o `google-services.json` ao seu aplicativo.

> [card] [Configuração do SDK Android](https://documentation.onesignal.com/docs/pt-BR/android-sdk-setup.md)
>
> Instale e inicialize o SDK Android do OneSignal.

> [card] [Subscriptions](https://documentation.onesignal.com/docs/pt-BR/subscriptions.md)
>
> Consulte os status de Subscription, incluindo `-6` e os status de FID `-32` a `-34`.

> [card] [Capturar um log de depuração](https://documentation.onesignal.com/docs/pt-BR/capturing-a-debug-log.md)
>
> Colete logs detalhados do SDK para ver erros de registro.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.