Android-Implementierung

Die folgenden Beispiele helfen Ihnen bei der Implementierung der Instanz-ID in einem Android-Client. Beachten Sie, dass in diesen Beispielen der GCM-Bereich verwendet wird, der nur zu Demonstrationszwecken nützlich ist, da Google Cloud Messaging eingestellt wurde.

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 Services Library enthält die Instance ID Library.

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 wird.

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 das nächste Mal getInstance() aufrufen, erhalten Sie eine neue Instanz-ID:

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

Tokens aktualisieren

Der Instanz-ID-Dienst initiiert regelmäßig (z. B. alle 6 Monate) Callbacks, in denen Ihre App aufgefordert wird, ihre Tokens zu aktualisieren. Callbacks können auch initiiert werden, wenn:

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

Implementieren Sie den Instanz-ID-Listener-Dienst in Ihrer 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>