Получение нескольких уведомлений о незарегистрированных устройствах Android от FCM |Джава - PullRequest
1 голос
/ 04 апреля 2019

Мы поддерживаем таблицу в MySQL всех gcmids, к которым мы отправляем уведомления. Со временем срок действия некоторых из них может истечь, поскольку пользователь может удалить приложение или перегрузить его другой версией. Однако, возможно, срок его действия истек, когда мы пытаемся отправить push-уведомление на эти устройства, FCM отвечает сообщением "nack" с DEVICE_UNRуточным или аналогичным кодом ошибки. Используя эту информацию, я удаляю этот gcmid из нашей базы данных.

Но проблема в том, что я получаю намного больше уведомлений для каждого message_id. Я добавил SyncStanzaListener к XMPP-соединению , которое прослушивает и передает мой сервис, если это сообщение о несоответствии. И, как следствие этого, процессор зашкаливает, потому что есть куча сообщений для обработки. Из-за этого машина погибла на производстве.

Я также пытался отправить "ack" сообщение этому конкретному gcmid и идентификатору сообщения, подтверждающему, что я его получил. Я все еще получаю одно и то же сообщение снова и снова.

Есть идеи?

Я попытался сохранить все идентификаторы сообщений в redis с помощью ttl. Но дело в том, что я не должен получать столько подтверждений для конкретного gcmid с истекшим сроком действия, но и с тем же идентификатором сообщения ?! Иногда я получаю до 30 подтверждений с одинаковым идентификатором сообщения.

...