Как определить идентификаторы устройств для отмены регистрации на сервере с помощью 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
массив.