Как определить, свернул ли GCM сообщение?

Как получатель сообщения GCM может определить, было ли сообщение «свернуто» сервером GCM с помощью Collapse_key? Доступна ли обратная связь? или лучшая практика?

Цель состоит в том, чтобы создать оптимальную (самую дешевую) реализацию шаблона «send_to_sync», где клиент «синхронизируется» только в том случае, если есть пропущенные сообщения.

Пример. Допустим, группа из 10 устройств обновляет друг друга относительно своего точного местоположения с помощью сообщений GCM. Актуально только последнее обновление, поэтому было бы неплохо, чтобы у каждого пользователя была своя клавиша сворачивания. Из-за ограничения в 4 ключа свертывания при использовании GCM вы не можете использовать ключ сворачивания для каждого пользователя, поэтому вам необходимо создать свою собственную систему и использовать шаблон «send_to_sync». Было бы неплохо, если бы каждое сообщение "send_to_sync" содержало последнее обновление + указание на наличие пропущенных сообщений, если нет, то и не нужно синхронизировать.


person Tom Bevelander    schedule 11.05.2014    source источник


Ответы (1)


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

person Eran    schedule 11.05.2014
comment
Мне нравится простота и решение на стороне клиента, это будет мой путь. Спасибо! - person Tom Bevelander; 12.05.2014