Уведомления пользователей – Как восстановить потерянное уведомление от GCM?

Я генерирую notification_key s, как описано здесь .

Предположим, что из-за некоторой ошибки я не могу ее сохранить, поэтому я пытаюсь перерегистрироваться.
На этот раз я получаю ошибку 400 с сообщением "notification_key already exists" .
Это выглядит странно, особенно по сравнению с регистрацией устройства в GCM , где вы можете регистрироваться столько раз, сколько хотите, и всегда получать одинаковый идентификатор регистрации со статусом 200.
Теперь я не могу зарегистрироваться снова, и я также не могу отменить регистрацию, потому что у меня нет notification_id .

Есть ли способ получить ранее сгенерированную команду notification_key из GCM?
Или это единственный способ зарегистрироваться снова с другим notification_key_name ?

Основываясь на документах, нет способа получить из GCM notification_key существующего notification_key_name . Если вы подумаете об этом, имеет смысл, что попытка создать новое notification_key для существующего notification_key_name будет давать вам ошибку, поскольку, если это не так, вы можете случайно переписать идентификаторы регистрации существующей notification_key если это произойдет Для того, чтобы по ошибке было notification_key_name существующее имя_из_и_и_и_и_и_и_и_и_.

Вы сравниваете это с регистрацией устройства на GCM несколько раз, каждый раз получая тот же идентификатор регистрации, но это не похоже на ситуацию. Когда вы регистрируете устройство в GCM, GCM имеет способ идентифицировать устройство и знать, что он уже зарегистрирован и возвращает тот же идентификатор регистрации. Благодаря уведомлениям пользователя, у него есть только имя_из_и_и_и_и_и_и_и_и, и нет ничего, что помешало бы вам использовать одно и то же notification_key_name для нескольких пользователей. То есть вас что-то останавливает – ошибка, возникшая при попытке создать notification_key с ранее используемым notification_key_name .

Легкий способ преодолеть вашу проблему – обработать notification_key_name как уникальный идентификатор, сгенерированный вашим сервером. Если у вас нет notification_key о notification_key для определенного пользователя (потому что это новый пользователь или из-за того, что вы не смогли сохранить notification_key вы ранее получили от Google), вы создаете новое уникальное notification_key_name и создаете новое notification_key . Вам не нужно заботиться о старом notification_key которое вы не смогли сохранить.

Наконец, вы сохраняете как notification_key и notification_key_name в таблице, содержащей идентификатор пользователя.

Я не могу найти документацию об этом, но теперь можно восстановить notification_key для группы устройств, выполнив запрос GET на https://android.googleapis.com/gcm/notification?notification_key_name=my_notification_key_name с требуемыми заголовками: Authorization: key=my_key , Content-Type: application/json и project_id: my_id .

Вы получите ответ вроде
{ "notification_key": "lost_key" }

Если вам известны все зарегистрированные идентификаторы регистрации в группе устройств. Затем удалите их все, и группа устройств также будет удалена. После этого вы можете создать группу устройств с ранее указанным именем_из_и_и_и_и_и_.