Как очистить ожидающие сообщения от GCM?

#android #cordova #google-cloud-messaging #firebase-cloud-messaging

# #Android #кордова #google-облако-обмен сообщениями #firebase-облако-обмен сообщениями

Вопрос:

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

есть ли какой-нибудь способ сделать это в GCM? или мой сценарий совершенно неверен !?

Спасибо.

Комментарии:

1. Вы должны отправить идентификатор пользователя в полезной нагрузке GCM и проверить его на стороне клиента, если идентификатор пользователя, полученный в GCM, предназначен для текущего пользователя, вошедшего в систему, а затем показать его уведомление, в противном случае проигнорируйте его.

2. Привет @Arash смогли ли вы опробовать подход в моем ответе? Было ли это хорошо? Если да, пожалуйста, примите это как правильный ответ, чтобы ваш пост был правильно помечен. Приветствия!

Ответ №1:

Регистрационный токен соответствует одному экземпляру приложения (привязанному к устройству), а не конкретному пользователю.

Я также искал эту тему раньше, и обычным решением для вас является включение идентификатора пользователя в вашу полезную нагрузку, скажем, a userid . Затем в вашем клиентском приложении вы должны проверить, userid соответствует ли он тому, кто в данный момент вошел в систему. Если true, покажите уведомление, иначе игнорируйте сообщение.

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

Однако это означает, что только в том случае, если исходный пользователь вошел в систему, ваше приложение будет показывать уведомление.

В любом случае, это все еще допустимый обходной путь для поведения, к которому вы стремитесь. Надеюсь, это имеет смысл. Приветствия!

Комментарии:

1. таким образом, уведомление будет отображаться в строке состояния Android, но когда пользователь нажимает на идентификатор пользователя app validater и предпринимает соответствующие действия! правильно?

2. @Arash Да. В зависимости от типа используемой вами полезной нагрузки, я думаю, вам следует использовать data полезную нагрузку, чтобы ваше клиентское приложение обрабатывало ее onMessageReceived , а затем, если userId не совпадает, не показывайте никаких уведомлений.

3. я еще не, я изо всех сил пытаюсь справиться с cordova push, когда приложение работает в фоновом режиме, я попробую ваш ответ, когда справлюсь с этим. Спасибо.

4. Я вижу. Тогда удачи. Дайте мне знать, как это происходит. Приветствия!