Это структура JSON, когда мне нужно отправить уведомление на конкретное устройство с помощью Firebase. Итак, как мне изменить его для отправки того же уведомления всем устройствам или двум выбранным устройствам?
{ "notification": {
"title": "Quiz App",
"text": "Your Quiz has submitted Successfully."
},
"to" : "Unique Key"
}
Какова будет структура JSON для отправки push-уведомления всем устройствам с использованием Firebase в android?
Если вы ищете параметр полезной нагрузки, чтобы указать, что вы намереваетесь отправить сообщение всем своим пользователям, к сожалению, его не существует.
Обычно при отправке уведомлений нескольким пользователям вы можете использовать параметр registration_ids
вместо to
. Однако допускается только до 1000 регистрационных токенов. Если вы намереваетесь использовать это, вы можете сделать пакетные запросы по 1000 регистрационных токенов каждый, итерации по всем регистрационным маркерам, которые вы сохранили на своем сервере приложений.
Как уже упоминалось в @looptheloop88, вы можете использовать Firebase Console для отправки сообщения всем пользователям конкретного приложения, но если вы планируете отправлять его через свой собственный сервер приложений, наиболее удобный способ вы можете сделать, это использовать Тема сообщений. В соответствии с ответом в возможном дублирующем сообщении я прокомментировал @DiegoGiorgini:
Отправка сообщения всем телефонам, как то, что вы делаете с веб-консоли Firebase, возможно только из веб-консоли. Если вам нужна эта функция из API, вы можете отправить запрос функции: https://firebase.google.com/support/contact/bugs-features/
Другая возможность заключается в том, чтобы все клиенты регистрировались в определенной теме через
FirebaseMessaging.getInstance().subscribeToTopic(topicName)
Таким образом вы можете отправить сообщение по всему тегу без сбора идентификаторов регистрации вручную.
Однако имейте в виду, что Диагностика сообщений, отправленных в Темы, не поддерживается.
У меня была такая же потребность, и я решил это, установив to
в /topics/all
и restricted_package_name
в имя моего пакета:
{
"to": "/topics/all",
"restricted_package_name": "<PACKAGE_NAME>",
"notification": {
"title": "<TITLE>",
"body": "<BODY>",
"click_action": "FCM_PLUGIN_ACTIVITY"
}
}
Каждое отправляемое сообщение принимается мобильными приложениями без необходимости программной подписки на тему.
У нас есть микросервис, который создает push-данные, когда он получает событие. Наш милый пушер не имеет представления о клиентских устройствах и не имеет никакого хранилища. Когда в базовых системах происходит новое событие, оно получает уведомление. Затем он отправляет уведомления на мобильные платформы. Наш толкатель отправляет запрос HTPP в FCM. Вы можете узнать больше о реализации FCM на сервере здесь. Наша основная структура запросов выглядит следующим образом:
https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=SERVER_API_KEY
{
"condition": "'condition1' in topics && 'condition2' in topics",
"notification": {
"category": "notification_category",
"title_loc_key": "notification_title",
"body_loc_key": "notification_body",
"badge": 1
},
"data": {
"data_type": "notification_data_type",
"data_id": "111111",
"data_detail": "FOO",
"data_detail_body": "BAR"
}
}
С помощью Сообщения группы Firebase Group вы можете отправить одно сообщение нескольким экземплярам приложения, работающего на устройствах, принадлежащих к группе. Как правило, "группа" относится к набору различных устройств, принадлежащих одному пользователю. Все устройства в группе имеют общий ключ уведомления, который является маркером, который использует FCM для рассылки сообщений всем устройствам в группе.
Шаги и рекомендации вместе с полезной нагрузкой JSON приведены в документации Firebase. Пожалуйста, проверьте это.
С другой стороны, вы можете отправлять сообщения на устройства, зарегистрированные в приложении, через Firebase Notification console. Вам просто нужно составить новое сообщение и выбрать приложение в разделе "Цель".