Implementação no Android

Os exemplos a seguir vão ajudar você a implementar o ID da instância em um cliente Android. Esses exemplos usam o escopo do GCM, que é útil apenas para fins de demonstração porque o Google Cloud Messaging foi desativado.

Configurar o Google Play Services

Para escrever seu aplicativo cliente, use o SDK do Google Play Services, conforme descrito em Configurar o SDK do Google Play Services. A biblioteca do Google Play Services inclui a biblioteca do ID da instância.

Receber um ID de instância

A linha de código a seguir retorna um ID de instância:

String iid = InstanceID.getInstance(context).getId(); 

Gerar um token

Para gerar tokens, é necessário um ID de projeto gerado pelo Google Developers Console.

String authorizedEntity = PROJECT_ID; // Project id from Google Developer Console String scope = "GCM"; // e.g. communicating using GCM, but you can use any                       // URL-safe characters up to a maximum of 1000, or                       // you can also leave it blank. String token = InstanceID.getInstance(context).getToken(authorizedEntity,scope); 

Gerenciar tokens e IDs de instância

O ID da instância permite excluir e atualizar tokens.

Excluir tokens e IDs de instância

String authorizedEntity = PROJECT_ID; String scope = "GCM"; InstanceID.getInstance(context).deleteToken(authorizedEntity,scope); 

Também é possível excluir o próprio ID da instância, incluindo todos os tokens associados. Na próxima vez que você chamar getInstance(), vai receber um novo ID de instância:

InstanceID.getInstance(context).deleteInstanceID(); String newIID = InstanceID.getInstance(context).getId(); 

Tokens de atualização

O serviço Instance ID inicia callbacks periodicamente (por exemplo, a cada seis meses), solicitando que o app atualize os tokens. Ele também pode iniciar callbacks quando:

  • Há problemas de segurança, como problemas de SSL ou da plataforma.
  • As informações do dispositivo não são mais válidas, por exemplo, backup e restauração.
  • O serviço do ID da instância será afetado.

Implemente o serviço de listener do ID da instância no seu app para receber estes callbacks:

public class MyInstanceIDService extends InstanceIDListenerService {   public void onTokenRefresh() {     refreshAllTokens();   }    private void refreshAllTokens() {     // assuming you have defined TokenList as     // some generalized store for your tokens     ArrayList<TokenList> tokenList = TokensList.get();     InstanceID iid = InstanceID.getInstance(this);     for(tokenItem : tokenList) {       tokenItem.token =         iid.getToken(tokenItem.authorizedEntity,tokenItem.scope,tokenItem.options);       // send this tokenItem.token to your server     }   } }; 

Você também precisa configurar esse serviço no arquivo de manifesto do projeto:

<service android:name=".MyInstanceIDService" android:exported="false">   <intent-filter>         <action android:name="com.google.android.gms.iid.InstanceID"/>   </intent-filter> </service>