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żywamy zakresu GCM, który jest przydatny tylko do celów demonstracyjnych, ponieważ usługa Google Cloud Messaging nie jest już używana.

Skonfiguruj Usługi 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ów instancji.

Pobieranie identyfikatora instancji

Ten wiersz kodu zwraca identyfikator instancji:

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

Generowanie tokena

Generowanie tokenów wymaga identyfikatora projektu wygenerowanego 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 pozwala usuwać i odświeżać tokeny.

Usuń tokeny i identyfikatory instancji

String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);

Możesz też usunąć identyfikator instancji, w tym wszystkie powiązane tokeny. Przy następnym wywołaniu połączenia 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) i prosi o odświeżenie tokenów przez aplikację. Może też inicjować wywołania zwrotne, gdy:

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

Zaimplementuj w swojej aplikacji usługę detektora identyfikatorów 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>