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>