Implémentation Android

Les exemples suivants vous aideront à implémenter l'ID d'instance dans un client Android. Notez que ces exemples utilisent la portée GCM, qui n'est utile qu'à des fins de démonstration, car Google Cloud Messaging n'est plus utilisé.

Configurer les services Google Play

Pour écrire votre application cliente, utilisez le SDK des services Google Play, comme décrit dans la section Configurer le SDK des services Google Play. La bibliothèque Play Services inclut la bibliothèque d'ID d'instance.

Obtenir un ID d'instance

La ligne de code suivante renvoie un ID d'instance:

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

Générer un jeton

Pour générer des jetons, vous devez disposer d'un ID de projet généré par la 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);

Gérer les jetons et les ID d'instance

L'ID d'instance vous permet de supprimer et d'actualiser des jetons.

Supprimer les jetons et les ID d'instance

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

Vous pouvez également supprimer l'ID d'instance lui-même, y compris tous les jetons associés. La prochaine fois que vous appelez getInstance(), vous obtiendrez un nouvel ID d'instance:

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

Jetons d'actualisation

Le service Instance ID lance des rappels périodiquement (par exemple, tous les six mois), demandant à votre application d'actualiser ses jetons. Il peut également lancer des rappels dans les cas suivants:

  • Il existe des problèmes de sécurité, par exemple des problèmes SSL ou de plate-forme.
  • Les informations sur l'appareil ne sont plus valides (par exemple, la sauvegarde et la restauration).
  • Le service d'ID d'instance est autrement affecté.

Implémentez le service d'écouteur d'ID d'instance dans votre application pour recevoir ces rappels:

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
    }
  }
};

Vous devez également configurer ce service dans le fichier manifeste du projet:

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