Android-Implementierung

Stay organized with collections Save and categorize content based on your preferences.

Die folgenden Beispiele zeigen, wie Sie die Instanz-ID in einem Android-Client implementieren. In diesen Beispielen wird der GCM-Bereich verwendet, den Sie zum Verwalten von Tokens im Android-Client für Google Cloud Messaging verwenden würden.

Google Play-Dienste einrichten

Verwenden Sie zum Schreiben Ihrer Clientanwendung das Google Play Services SDK, wie unter Google Play Services SDK einrichten beschrieben. Die Play-Dienste-Bibliothek 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 von der Google Developers Console generierte Projekt-ID erforderlich.

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 Instanz-ID-Dienst initiiert Callbacks in regelmäßigen Abständen (z. B. alle 6 Monate) und fordert die Anwendung auf, ihre Tokens zu aktualisieren. Sie kann auch Callbacks auslösen, wenn:

  • Es gibt Sicherheitsprobleme, z. B. SSL- oder Plattformprobleme.
  • Die Geräteinformationen, z. B. zum Sichern und Wiederherstellen, sind nicht mehr gültig.
  • Andernfalls ist der Instanz-ID-Dienst betroffen.

Implementiere den Instanz-ID-Listener-Dienst in deiner App, um diese Callbacks zu empfangen:

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>