Android-Implementierung

Die folgenden Beispiele helfen Ihnen bei der Implementierung der Instanz-ID in einem Android-Client. In diesen Beispielen wird der GCM-Bereich verwendet, der nur zu Demonstrationszwecken dient, da Google Cloud Messaging nicht mehr verwendet wird.

Google Play-Dienste einrichten

Verwenden Sie zum Schreiben Ihrer Client-App das Google Play Services SDK, wie unter Google Play Services SDK einrichten beschrieben. Die Play Services Library 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 von 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 verknüpften 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 Instanz-ID-Dienst initiiert regelmäßig Callbacks (z. B. alle sechs Monate) und fordert die Anwendung auf, die Tokens zu aktualisieren. In den folgenden Fällen können Callbacks auch initiiert werden:

  • Es gibt Sicherheitsprobleme, z. B. SSL- oder Plattformprobleme.
  • Geräteinformationen, z. B. zu Sicherung und Wiederherstellung, sind nicht mehr gültig.
  • Ansonsten ist der Instanz-ID-Dienst 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>