FCM:-使用C#将通知发送到IOS和Android的多个设备

时间:2020-09-22 16:31:57

标签: c# firebase-cloud-messaging

因此,我正在使用下面的代码将通知发送到多个设备,但是对于某些令牌,即使令牌有效,它也没有在响应中显示注册错误。有什么办法可以解决此问题?有什么方法可以将它异步成功地发送到所有设备。我正在从数据表中的数据库中提取注册令牌并将其转换为数组。

private void getUsers()
    {
        DataTable dt = new DataTable();
        List<String> deviceIds = new List<String>();
        dt =objclsFunctions.FillDataTable("procedureName",objClsConnection.GetConnection);


        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i][2].ToString() != null)
                {
                    deviceIds.Add(dt.Rows[i][2].ToString());
                    
                }

            }
        }
        var data = new
        {
            //to = deviceIds,
            registration_ids = deviceIds,
            priority = "high",
            content_available = true,
            notification = new
            {
                body = Session["Message"].ToString(),
                title = txtHeader.Text,
            }
        };
        SendNotification(data);
    }
    public void SendNotification(object data)
    {
        //string respose = await FirebaseMessaging.DefaultInstance.SendAsync(message);
        var serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(data);
        Byte[] byteArray = Encoding.UTF8.GetBytes(json);
        SendNotificationToApp(byteArray);
    }
    public void SendNotificationToApp(Byte[] byteArray)
    {
        try
        {
            var serverAPIKey = ConfigurationManager.AppSettings["SERVER_API_KEY"];
            var senderId = ConfigurationManager.AppSettings["SENDER_ID"];
            WebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://fcm.googleapis.com/fcm/send");


            webRequest.Method = "POST";
            webRequest.ContentType = "application/json";
            webRequest.Headers.Add(string.Format("Authorization: key={0}", serverAPIKey));
            webRequest.Headers.Add(string.Format("Sender: id={0}", senderId));

            //webRequest.Headers.Add("wsc-access-key:", senderId);
            //webRequest.Headers.Add("Sender:key",senderId);

            webRequest.ContentLength = byteArray.Length;
            Stream dataStream = webRequest.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            WebResponse webResponse = webRequest.GetResponse();
            dataStream = webResponse.GetResponseStream();
            StreamReader streamReader = new StreamReader(dataStream);

            string sResponseFromServer =streamReader.ReadToEnd();

            streamReader.Close();
            dataStream.Close();

        }
        catch (Exception ex)
        {
            LogErrors(ex.ToString());
        }
    }

0 个答案:

没有答案
相关问题