Implementacja na Androidzie

Poniższe przykłady pomogą Ci wdrożyć identyfikator instancji w kliencie na Androida. Pamiętaj, że te przykłady korzystają z zakresu GCM, który jest przydatny tylko do celów demonstracyjnych, ponieważ usługa Google Cloud Messaging została wycofana.

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 Google Play zawiera bibliotekę Identyfikator instancji.

Pobieranie identyfikatora instancji

Ten fragment kodu zwraca identyfikator instancji:

String iid = InstanceID.getInstance(context).getId();

Generowanie tokena

Aby wygenerować tokeny, musisz mieć identyfikator projektu wygenerowany w Konsoli programistów Google.

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 tokeny. Gdy następnym razem zadzwonisz pod numer getInstance(), otrzymasz nowy identyfikator instancji:

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

Tokeny odświeżania

Usługa Instance ID 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 nie są już aktualne, np. kopia zapasowa i przywracanie;
  • Usługa Identyfikator instancji jest w inny sposób dotknięta.

Aby otrzymywać te wywołania zwrotne, w aplikacji zaimplementuj usługę odsłuchu Identyfikatora instancji:

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>