Android-Implementierung

In den folgenden Beispielen erfahren Sie, wie Sie die Instanz-ID in einem Android-Client implementieren. In diesen Beispielen wird der GCM-Zugriffsbereich verwendet, der nur zu Demonstrationszwecken nützlich ist, da Google Cloud Messaging eingestellt wurde.

Google Play-Dienste einrichten

Verwenden Sie zum Erstellen Ihrer Clientanwendung das Google Play Services SDK, wie unter Google Play Services SDK einrichten beschrieben. Die Play-Dienstbibliothek enthält die Instanz-ID-Bibliothek.

Instanz-ID abrufen

Die folgende Codezeile gibt eine Instanz-ID zurück:

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

Token generieren

Zum Generieren von Tokens ist eine Projekt-ID erforderlich, die in der Google Developers Console generiert wurde.

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

Tokens und Instanz-IDs verwalten

Mit der Instanz-ID können Sie Tokens löschen und aktualisieren.

Tokens und Instanz-IDs löschen

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

Sie können auch die Instanz-ID selbst löschen, einschließlich aller zugehörigen Tokens. Wenn Sie getInstance() das nächste Mal aufrufen, erhalten Sie eine neue Instanz-ID:

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

Aktualisierungstokens

Der Instance ID-Dienst initiiert regelmäßig (z. B. alle sechs Monate) Callbacks, bei denen Ihre App aufgefordert wird, ihre Tokens zu aktualisieren. Außerdem kann es Callbacks in folgenden Fällen auslösen:

  • Es gibt Sicherheitsprobleme, z. B. SSL- oder Plattformprobleme.
  • Geräteinformationen sind nicht mehr gültig, z. B. Sicherung und Wiederherstellung.
  • Der Instanz-ID-Dienst ist andernfalls betroffen.

Implementieren Sie den Instanz-ID-Listener-Dienst in Ihrer App, um diese Callbacks zu erhalten:

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

Sie müssen diesen Dienst auch in der Manifestdatei für das Projekt konfigurieren:

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