Implementacja na Androidzie

Poniższe przykłady pomogą Ci wdrożyć identyfikator instancji w kliencie na Androida. Pamiętaj, że w tych przykładach używany jest zakres GCM, który jest przydatny tylko w celach demonstracyjnych, ponieważ usługa Google Cloud Messaging została wycofana z użycia.

Skonfiguruj Usługi Google Play

Aby napisać aplikację kliencką, użyj pakietu SDK Usług Google Play w sposób opisany w artykule Konfigurowanie pakietu SDK usług Google Play. Biblioteka usług Google Play zawiera bibliotekę identyfikatorów instancji.

Pobieranie identyfikatora instancji

Ten wiersz kodu zwraca identyfikator instancji:

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

Wygeneruj token

Aby wygenerować tokeny, wymagany jest identyfikator projektu wygenerowany w 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.

Usuń tokeny i identyfikatory 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 wywołasz instancję getInstance(), otrzymasz nowy identyfikator instancji:

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

Odśwież tokeny

Usługa identyfikatora instancji okresowo inicjuje wywołania zwrotne (np. co 6 miesięcy), aby aplikacja odświeżała tokeny. Może też rozpoczynać wywołania zwrotne, gdy:

  • Występują problemy z bezpieczeństwem, np. problemy z protokołem SSL lub platformą.
  • Informacje z urządzenia, na przykład tworzenie kopii zapasowej i przywracanie, nie są już prawidłowe.
  • W inny sposób wpływa to na usługę identyfikatora instancji.

Aby otrzymywać te wywołania zwrotne, zaimplementuj w aplikacji usługę detektora identyfikatorów 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 w projekcie:

<service android:name=".MyInstanceIDService" android:exported="false">
  <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
  </intent-filter>
</service>