Доу отправить несколько уведомлений FCM - PullRequest
0 голосов
/ 28 мая 2020

Мне нужно отправить уведомления на несколько устройств.

Я могу отправить уведомление на одно устройство, используя следующий код:

            var SENDER_ID = "xxxx";
            string regId="xxx";
            var SERVERKEY =xxx";


            WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
            tRequest.Method = "post";
            tRequest.Headers.Add(string.Format("Authorization: key={0}", SERVERKEY));
            tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));
            tRequest.ContentType = "application/json";

            var payload = new
            {
                to = regId,
                priority = "high",
                content_available = true,
                data = new
                {
                    body = "Test Massege",
                    title = "Test Title",
                    badge = 1

                },
                notification = new
                {
                    body = "Test Massege",
                    title = "Test Title",
                    badge = 1,
                    sound = "default"

                }



            };

            string postbody = JsonConvert.SerializeObject(payload).ToString();
            Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
            tRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = tRequest.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
                using (WebResponse tResponse = tRequest.GetResponse())
                {
                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    {
                        if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                            {
                                String sResponseFromServer = tReader.ReadToEnd();
                            }
                    }
                }
            }

Я пытался отправить на несколько устройств без успех. Вот код, который я использовал:

                var SENDER_ID = "xxx";
                var SERVERKEY = "xxx";


            WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
            tRequest.Method = "post";
            tRequest.Headers.Add(string.Format("Authorization: key={0}", SERVERKEY));
            tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));
            tRequest.ContentType = "application/json";

            List<string> Tokens = new List<string>();
            Tokens.Add("xxx1");
            Tokens.Add("xxx2");
            Tokens.Add("xxx3");
            Tokens.Add("xxx4");


            string tokenjson = JsonConvert.SerializeObject(Tokens).ToString();

            var payload = new
            {
                //to = ,
                registration_ids = tokenjson,
                priority = "high",
                content_available = true,
                data = new
                {
                    body = "Test Massege",
                    title = "Test Title",
                    badge = 1

                },
                notification = new
                {
                    body = "Test Massege",
                    title = "Test Title",
                    badge = 1,
                    sound = "default"

                }



            };

            string postbody = JsonConvert.SerializeObject(payload).ToString();
            Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
            tRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = tRequest.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
                using (WebResponse tResponse = tRequest.GetResponse())
                {
                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    {
                        if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                            {
                                String sResponseFromServer = tReader.ReadToEnd();
                            }
                    }
                }
            }

Это приводит к сообщению об ошибке:

(400) Bad Request

Какое максимальное число устройств, которые я могу отправить в каждом запросе? Как правильно достичь моей цели?

...