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 anderweitig betroffen.
Implementieren Sie den Instanz-ID-Listenerdienst 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>