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

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

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

Для написания клиентского приложения используйте SDK Google Play Services, как описано в разделе «Настройка SDK Google Play Services» . Библиотека Play Services включает библиотеку идентификаторов экземпляров.

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

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

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

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

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

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

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

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

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

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

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

Токены обновления

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

  • Существуют проблемы с безопасностью, например, связанные с SSL или особенностями платформы.
  • Информация об устройстве больше недействительна; например, данные для резервного копирования и восстановления.
  • В остальном работа службы идентификаторов экземпляров нарушается.

Для приема этих обратных вызовов реализуйте в своем приложении службу прослушивания идентификаторов экземпляров:

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

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

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