Ответ 1
Этот метод выполняет трюк:
gcm.unregister();
Однако gcm.unregister() теперь устарел, поэтому вы должны использовать один из них:
InstanceID.deleteToken() или InstanceID.deleteInstanceID().
Эти методы принимают следующие параметры:
public void deleteToken (String authorizedEntity, String scope)
Будучи авторизованным сущностью, объект, который вы хотите удалить...
//СЛЕДУЮЩЕЕ ОБЪЯСНЕНИЕ ТОЛЬКО ДЛЯ "НЕРЕГИСТРАТОРА"
Итак, на основе вашего комментария:
Но это смущает меня, что метод unregister() не регистрируется Id как аргумент, что делает невозможным отменить регистрацию определенного устройство.
Это потому, что вы ожидаете, что он будет работать таким образом, чтобы этого не произошло. Похоже, вы хотите, чтобы HTTP-запрос передавал параметр урегистеру (например, http://www.gcmserver.com?unregisterid=xxxx"), и это не так, как это работает. как это работает на основе документации Google:
Как работает отмена регистрации
Приложение может быть автоматически незарегистрировано после того, как оно удалены с устройства. Однако этот процесс не происходит сразу же, поскольку Android не обеспечивает обратного вызова для удаления. Какие в этом случае происходит следующее:
Конечный пользователь удаляет приложение.
Сервер сторонних производителей отправляет сообщение на сервер GCM.
Сервер GCM отправляет сообщение на устройство.
Клиент GCM получает сообщение и запросы диспетчера пакетов есть ли широковещательные приемники, сконфигурированные для его приема, что возвращает false.
Клиент GCM информирует сервер GCM о том, что приложение было удалено.
Сервер GCM отмечает идентификатор регистрации для удаления.
Сервер сторонних производителей отправляет сообщение в GCM.
GCM возвращает сообщение NotRegistered об ошибке на сторонний сервер.
Третья сторона удаляет регистрационный идентификатор.
Таким образом, на самом деле метод gcm.unregister() фактически указывает на то, что это устройство для удаления (подумайте об этом как о том, чтобы заставить его выполнить первые шаги процесса без фактической деинсталляции приложения), позволяя серверу знать, что это больше не требуется получать уведомления, также не принимая "Id" в качестве параметра, это означает, что он ссылается на это конкретное устройство.
Привет!