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