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>