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 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 des services Play 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

La génération de jetons nécessite 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 les 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 régulièrement des rappels (par exemple, tous les six mois), demandant que votre application actualise ses jetons. Elle peut également déclencher des rappels lorsque:

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

Mettez en œuvre 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>