Как определить идентификаторы устройств для отмены регистрации на сервере с помощью GCM Android push

Я успешно реализовал все, что связано с GCM, но это последнее, что доставляет мне неприятности. Проще говоря, я хочу прекратить отправку на устройства, на которых больше нет приложения, - удалить их регистрационные идентификаторы.

Проблема в том, что я использую переменную registration_ids, которая позволяет отправлять на несколько устройств одновременно. Я мог бы послать 1 на 1, и тогда я бы точно знал, какие устройства удалить. Я изолировал отправку на 2 DeviceIds - один зарегистрирован, а другой нет. Конечно же, вот ответ, который я получаю от Google:

{
   "multicast_id":4688510806873974237,
   "success":1,
   "failure":1,
   "canonical_ids":0,
   "results":[
      {"error":"NotRegistered"},
      {"message_id":"0:1459152002041797%5c073a337cbfbb56"}
   ]
}

Как я могу из этого ответа определить, какие устройства мне нужно отменить регистрацию в будущих нажатиях GCM?

1 ответ

Набирая вопрос и форматируя ответ JSON, я заметил, что массив результатов имеет поле ошибки для первой регистрации. После более подробного изучения справочной страницы GCM создается впечатление, что вы получите запись в результатах для каждого отправленного сообщения.

Так что в моем случае у меня есть "failure":1 а затем для первого сообщения в results я получил {"error":"NotRegistered"} и это может сказать мне, что мне нужно удалить это устройство из списка отправителей.

Если вам интересно canonical_ids для случая, когда идентификатор устройства должен быть обновлен в вашей базе данных, в случае, если это canonical_ids > 0 ты получишь registration_id в results массив.

Другие вопросы по тегам