Os exemplos a seguir ajudam 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 SDK do Google Play Services
Para escrever o aplicativo cliente, use o SDK do Google Play Services, conforme descrito em Configurar o SDK do Google Play Services. A biblioteca do Play Services inclui a biblioteca do ID da instância.
Receber um ID da instância
A linha de código a seguir retorna um ID da instância:
String iid = InstanceID.getInstance(context).getId();
Gerar um token
A geração de tokens exige um ID do 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âncias
O ID da instância permite excluir e atualizar tokens.
Excluir tokens e IDs de instâncias
String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);
Também é possível excluir o ID da instância, incluindo todos os tokens associados. Na próxima vez que você chamar getInstance(), um novo
ID da instância será gerado:
InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();
Atualizar tokens
O serviço de ID da instância inicia retornos de chamada periodicamente (por exemplo, a cada seis meses), solicitando que o app atualize os tokens. Ele também pode iniciar retornos de chamada quando:
- Há problemas de segurança, por exemplo, problemas de SSL ou de plataforma.
- As informações do dispositivo não são mais válidas, por exemplo, backup e restauração.
- O serviço de ID da instância é afetado de outra forma.
Implemente o serviço de listener de ID da instância no app para receber esses retornos de chamada:
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>