Android-реализация

Следующие примеры помогут вам реализовать Instance ID в клиенте Android. Обратите внимание, что в этих примерах используется область действия GCM, которая полезна только для демонстрационных целей, поскольку Google Cloud Messaging больше не используется.

Настройка сервисов Google Play

Для написания клиентского приложения используйте SDK сервисов Google Play, как описано в разделе Настройка SDK сервисов Google Play . Библиотека сервисов Play включает библиотеку Instance ID.

Получить идентификатор экземпляра

Следующая строка кода возвращает идентификатор экземпляра:

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

Сгенерировать токен

Для генерации токенов требуется идентификатор проекта, сгенерированный 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);

Управление токенами и идентификаторами экземпляров

Идентификатор экземпляра позволяет удалять и обновлять токены.

Удалить токены и идентификаторы экземпляров

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

Вы также можете удалить сам идентификатор экземпляра, включая все связанные с ним токены. При следующем вызове getInstance() вы получите новый идентификатор экземпляра:

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

Обновление токенов

Служба Instance ID периодически инициирует обратные вызовы (например, каждые 6 месяцев), запрашивая у вашего приложения обновление токенов. Она также может инициировать обратные вызовы в следующих случаях:

  • Имеются проблемы с безопасностью, например, проблемы с SSL или платформой.
  • Информация об устройстве больше недействительна (например, резервное копирование и восстановление).
  • В противном случае затронута служба Instance ID.

Реализуйте службу прослушивателя идентификатора экземпляра в своем приложении, чтобы получать следующие обратные вызовы:

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
    }
  }
};

Эту службу также необходимо настроить в файле манифеста проекта:

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