Implementação no Android

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

Configurar o Google Play Services

Para criar 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 de IDs de instâncias.

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

A geração de tokens requer 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

Com o ID da instância, é possível 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 código da instância, incluindo todos os tokens associados. Na próxima vez que você chamar getInstance(), receberá um novo ID da instância:

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

Tokens de atualização

O serviço de ID da instância 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, por exemplo, 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 de ID da instância é afetado.

Implemente o serviço listener do ID da instância no app para receber esses 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>