FCM (Firebase Cloud Messaging) Отправить на несколько устройств

Я выполняю этот код для отправки уведомлений на мобильное устройство с использованием библиотеки FCM

public string PushFCMNotification(string deviceId, string message) { string SERVER_API_KEY = "xxxxxxxxxxxxxxxxxxxxxxx"; var SENDER_ID = "xxxxxxxxx"; var value = message; WebRequest tRequest; tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); tRequest.Method = "post"; tRequest.ContentType = "application/json"; tRequest.Headers.Add(string.Format("Authorization: key={0}", SERVER_API_KEY)); tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID)); var data = new { to = deviceId, notification = new { body = "This is the message", title = "This is the title", icon = "myicon" } }; var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(data); Byte[] byteArray = Encoding.UTF8.GetBytes(json); tRequest.ContentLength = byteArray.Length; Stream dataStream = tRequest.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); WebResponse tResponse = tRequest.GetResponse(); dataStream = tResponse.GetResponseStream(); StreamReader tReader = new StreamReader(dataStream); String sResponseFromServer = tReader.ReadToEnd(); tReader.Close(); dataStream.Close(); tResponse.Close(); return sResponseFromServer; } 

теперь, как отправить сообщение на многоуровневое устройство, предположим, что параметр string deviceId заменен на ListIDID List.

вы можете помочь

Обновление: для v1 кажется, что registration_ids больше не поддерживается. Настоятельно рекомендуется использовать темы. Для v1 поддерживаются только параметры, показанные в документации .


Просто используйте параметр registration_ids, а не в своей полезной нагрузке. В зависимости от вашего варианта использования вы можете использовать либо текстовые сообщения, либо сообщения группы устройств .

Обмен сообщениями

Служба обмена сообщениями Firebase Cloud Messaging (FCM) позволяет отправлять сообщения нескольким устройствам, которые выбрали конкретную тему . На основе модели публикации / подписания тема обмена сообщениями поддерживает неограниченное количество подписчиков для каждого приложения. Вы составляете сообщения темы по мере необходимости, а Firebase обрабатывает маршрутизацию сообщений и надежно передает сообщение соответствующим устройствам.

Например, пользователи локального приложения outlookирования погоды могут выбрать тему «суровых погодных предупреждений» и получать уведомления о штормах, угрожающих указанным областям. Пользователи спортивного приложения могут подписаться на автоматические обновления в живых играх для своих любимых команд. Разработчики могут выбрать любое название темы, которое соответствует регулярному выражению: "/topics/[a-zA-Z0-9-_.~%]+" .


Сообщения группы устройств

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

Обмен сообщениями групп устройств позволяет каждому экземпляру приложения в группе отражать последнее состояние обмена сообщениями. В дополнение к отправке сообщений вниз по течению к ключу уведомлений вы можете разрешать устройствам отправлять восходящие сообщения в группу устройств. Вы можете использовать обмен группами устройств с сервером соединений XMPP или HTTP. Предел полезной нагрузки данных составляет 2 КБ при отправке на устройства iOS и 4 КБ для других платформ.

Максимальное количество членов, разрешенных для notification_key равно 20.


Для получения дополнительной информации вы можете проверить отправку на несколько устройств в документах FCM .

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

 FirebaseMessaging.getInstance().subscribeToTopic("news"); 

См. Эту ссылку: https://firebase.google.com/docs/cloud-messaging/android/topic-messaging

 https://fcm.googleapis.com/fcm/send Content-Type:application/json Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA { "to": "/topics/news", "data": { "message": "This is a Firebase Cloud Messaging Topic Message!", } } 

Пожалуйста, выполните следующие действия.

 public String addNotificationKey( String senderId, String userEmail, String registrationId, String idToken) throws IOException, JSONException { URL url = new URL("https://android.googleapis.com/gcm/googlenotification"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoOutput(true); // HTTP request header con.setRequestProperty("project_id", senderId); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Accept", "application/json"); con.setRequestMethod("POST"); con.connect(); // HTTP request JSONObject data = new JSONObject(); data.put("operation", "add"); data.put("notification_key_name", userEmail); data.put("registration_ids", new JSONArray(Arrays.asList(registrationId))); data.put("id_token", idToken); OutputStream os = con.getOutputStream(); os.write(data.toString().getBytes("UTF-8")); os.close(); // Read the response into a string InputStream is = con.getInputStream(); String responseString = new Scanner(is, "UTF-8").useDelimiter("\\A").next(); is.close(); // Parse the JSON string and return the notification key JSONObject response = new JSONObject(responseString); return response.getString("notification_key"); 

}

Надеюсь, приведенный выше код поможет вам отправить push на несколько устройств. Подробнее см. Ссылку https://firebase.google.com/docs/cloud-messaging/android/device-group

*** Примечание. Пожалуйста, прочтите ссылку на создание / удаление группы по вышеуказанной ссылке.

  • Открыть конкретную активность, когда уведомление было нажато в FCM
  • Пределы использования Firebase FCM
  • API-ключ для GCM неожиданно недействителен? Несанкционированная ошибка (401)
  • Уведомление о облачных сообщениях Firebase, которое не получено устройством
  • Как отправить одно сообщение с помощью Firebase Messaging
  • Как отправить уведомление устройства на устройство с помощью FCM без использования XMPP или любого другого скрипта.?
  • Получать push-уведомления в одном приложении Android из двух проектов Firebase
  • Firebase onMessageReceived не вызывается, когда приложение в фоновом режиме
  • Консоль Firebase: как указать click_action для уведомлений
  • Необходима миграция из GCM в FCM?
  • Как поместить несколько идентификаторов идентификатора_компьютера / отправителя в google-services.json
  • Давайте будем гением компьютера.