Следующие примеры помогут вам реализовать идентификатор экземпляра в клиенте Android. Обратите внимание, что в этих примерах используется область GCM, которая полезна только в демонстрационных целях, поскольку Google Cloud Messaging больше не используется.
Настройте сервисы Google Play
Чтобы написать клиентское приложение, используйте SDK сервисов Google Play, как описано в разделе Настройка SDK сервисов Google Play . Библиотека сервисов Play включает библиотеку идентификаторов экземпляров.
Получить идентификатор экземпляра
Следующая строка кода возвращает идентификатор экземпляра:
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
}
}
};
Вы также должны настроить эту службу в файле манифеста проекта:
<service android:name=".MyInstanceIDService" android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>