Poniższe przykłady pomogą Ci wdrożyć identyfikator instancji w kliencie Androida. Pamiętaj, że w tych przykładach używany jest zakres GCM, który jest przydatny tylko do celów demonstracyjnych, ponieważ Google Cloud Messaging zostało wycofane.
Konfigurowanie Usług Google Play
Aby napisać aplikację kliencką, użyj pakietu SDK Usług Google Play, zgodnie z opisem w artykule Konfigurowanie pakietu SDK Usług Google Play. Biblioteka Usług Play zawiera bibliotekę identyfikatorów instancji.
Uzyskiwanie identyfikatora instancji
Ten wiersz kodu zwraca identyfikator instancji:
String iid = InstanceID.getInstance(context).getId();
Generowanie tokena
Do generowania tokenów wymagany jest identyfikator projektu wygenerowany przez 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);
Zarządzanie tokenami i identyfikatorami instancji
Identyfikator instancji umożliwia usuwanie i odświeżanie tokenów.
Usuwanie tokenów i identyfikatorów instancji
String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);
Możesz też usunąć sam identyfikator instancji, w tym wszystkie powiązane z nim tokeny. Następnym razem, gdy zadzwonisz pod numer getInstance()
, otrzymasz nowy identyfikator instancji:
InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();
Tokeny odświeżania
Usługa identyfikatora instancji okresowo (np. co 6 miesięcy) inicjuje wywołania zwrotne, prosząc aplikację o odświeżenie tokenów. Może też inicjować wywołania zwrotne, gdy:
- Występują problemy z bezpieczeństwem, np. problemy z SSL lub platformą.
- Informacje o urządzeniu są już nieaktualne, np. kopia zapasowa i przywracanie.
- Usługa identyfikatora instancji jest w inny sposób dotknięta.
Zaimplementuj w aplikacji usługę odbiornika identyfikatora instancji, aby otrzymywać te wywołania zwrotne:
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
}
}
};
Musisz też skonfigurować tę usługę w pliku manifestu projektu:
<service android:name=".MyInstanceIDService" android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>