Ограничить уведомление FCM для определенных пользователей во Flutter

Я новичок в DART. Фактическая проблема заключается в том, что «приложение получает уведомление FCM, даже если пользователь вышел из системы». Поэтому я хочу предотвратить уведомление, если пользователь вышел из системы. Мой вопрос: "Могу ли я проверить, предназначено ли новое уведомление для текущего пользователя, вошедшего в систему, или нет" (используя идентификатор маркера, отправленный с сервера после успешного входа в систему).

Могу ли я добавить выписку о проверке после получения уведомления и до его показа в трее с использованием идентификатора токена

if(stored_apiToken == apiToken_sent_with_the_Notification){ ShowNotification(); }else{ dontShowNotification(); }

заранее спасибо


person ABHIMANGAL MS    schedule 07.12.2019    source источник
comment
Как вы собираетесь идентифицировать получателя в отправленном сообщении? Это кажется необходимым.   -  person Doug Stevenson    schedule 07.12.2019
comment
используя onMessage, onResume и onLaunch   -  person ABHIMANGAL MS    schedule 07.12.2019
comment
На самом деле я делаю следующее: 1. Я получаю токен FCm, когда приложение открыто. (Токен FCM изменится после удаления приложения). 2. Когда я вызываю LoginApi, я передаю некоторые учетные данные вместе с FCMToken. 3. Backe-end дает в ответ ключ API. (Я храню его внутри SharedPreferences) 4. И уведомление отправляется с сервера с использованием FCM-токена, который я уже передал серверу при входе в систему. 5. Этот FCMToken также содержит тот же самый ключ API. Есть ли какой-либо способ проверить, предназначено ли входящее уведомление FCM для пользователя A или пользователя B, с помощью какого-либо сравнения или чего-то еще?   -  person ABHIMANGAL MS    schedule 07.12.2019


Ответы (1)


Это не лучший способ сделать это на стороне клиента. Мы можем настроить Firebase Cloud Messaging (FCM) для выполнения тяжелой работы. Например, мы можем заставить FCM отправлять уведомления только тем устройствам или пользователям, которых мы хотим получать. Это может быть заархивировано разными способами в зависимости от варианта использования,

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

Отправить сообщение в тему FCM

Если вы хотите отправить сообщение конкретному пользователю, FCM создает токен регистрации устройства при первоначальном запуске приложения. вы можете получить этот токен, вызвав getToken() в объект ФКМ. firebase может обновить токен, поэтому вы должны прослушивать это, используя onTokenRefresh. Свяжите полученный токен с пользователем в базе данных, после чего вы сможете отправить уведомление этому конкретному пользователю, используя этот токен. существует несколько способов отправить уведомление с помощью AdminSDK или REST

если вы хотите получать уведомление только тогда, когда пользователь вошел в систему, вы можете заставить пользователя подписаться на тему (например, вошедшие пользователи) после того, как они войдут в систему. или вы можете добавить настройте метод внутри блока if, чтобы проверить, соответствует ли пользователь вошел в систему (не рекомендуется).

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

person Arjunraj kokkadan    schedule 07.12.2019
comment
Спасибо за информацию. Итак, как мы можем удалить токен fcm после того, как пользователь вышел из системы на определенном устройстве. ? - person ABHIMANGAL MS; 07.12.2019
comment
Вам не нужно, токен fcm не уникален для каждого устройства, а уникален для каждого экземпляра приложения, даже очистка данных приложения удаляет токен, и при повторном запуске приложения будет создан новый токен fcm. подробнее об этом здесь ссылка< /а>. вам просто нужно перезаписать токен fcm в базе данных, когда пользователь снова войдет в систему. - person Arjunraj kokkadan; 07.12.2019
comment
Метод deleteInstance() для fcm удалит текущий токен fcm. Спасибо за информацию. - person ABHIMANGAL MS; 12.12.2019