Implémentation Android

Les exemples suivants vous aideront à implémenter un ID d'instance dans un client Android. Notez que ces exemples utilisent le champ d'application GCM, qui n'est utile qu'à des fins de démonstration, car Google Cloud Messaging ne peut plus être 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 des services Play inclut la bibliothèque d'ID d'instances.

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 Play 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 appellerez getInstance(), vous obtiendrez un nouvel ID d'instance:

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

Jetons d'actualisation

Le service d'ID d'instance lance des rappels régulièrement (par exemple, tous les six mois) pour demander à votre application d'actualiser ses jetons. Elle peut également déclencher des rappels dans les cas suivants:

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

Implémentez le service d'écoute 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>