Android-Implementierung

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

Google Play-Dienste einrichten

Verwenden Sie zum Schreiben Ihrer Clientanwendung das Google Play Services SDK, wie unter Google Play einrichten Services SDK. 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 vom 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);

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 anrufen, 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 6 Monate). Möglicherweise In folgenden Fällen können Rückrufe initiiert werden:

  • Es gibt Sicherheitsprobleme: z. B. SSL- oder Plattformprobleme.
  • Geräteinformationen sind nicht mehr gültig. z. B. Sichern und Wiederherstellen.
  • Der Instanz-ID-Dienst ist ansonsten betroffen.

Instanz-ID-Listener-Dienst in Ihrer App implementieren, um diese zu empfangen Callbacks verwenden:

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>