gpt4 book ai didi

c# - 如何从 C# 控制台应用程序发送通知

转载 作者:太空狗 更新时间:2023-10-29 21:01:10 35 4
gpt4 key购买 nike

我想创建控制台应用程序,用于通过 Goolge Firebase 通知向不同的移动设备发送通知,

我已经看到来自链接 Send push to Android by C# using FCM (Firebase Cloud Messaging) 的代码

我收到状态代码为 500 的内部服务器错误

try{
string url = @"https://fcm.googleapis.com/fcm/send";
WebRequest tRequest = WebRequest.Create(url);
tRequest.Method = "post";
tRequest.ContentType = "application/json";

string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" + "This is the message" + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceId + "";
var data = new
{
to = deviceId,
notification = new
{
body = "This is the message",
title = "This is the title"

}
};
string jsonss = Newtonsoft.Json.JsonConvert.SerializeObject(data);

Byte[] byteArray = Encoding.UTF8.GetBytes(jsonss);
tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));
tRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
tRequest.ContentLength = byteArray.Length;
tRequest.ContentType = "application/json";
using (Stream dataStream = tRequest.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);

using (WebResponse tResponse = tRequest.GetResponse())
{
using (Stream dataStreamResponse = tResponse.GetResponseStream())
{
using (StreamReader tReader = new StreamReader(dataStreamResponse))
{
String sResponseFromServer = tReader.ReadToEnd();
Console.Write(sResponseFromServer);
}
}
}
}
}

catch (Exception ex)
{
Console.Write(ex.Message);
{
var sss = ex.Message;
if (ex.InnerException != null)
{
var ss = ex.InnerException;
}
}

}

最佳答案

enter image description here

这是使用 C# 发送通知的代码,我已经让它工作了

 WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
tRequest.Method = "post";
tRequest.ContentType = "application/json";
var objNotification = new
{
to = notification.DeviceToken,
data = new
{
title = notification.NotificationTitle,
body = notification.NotificationBody
}
};
string jsonNotificationFormat = Newtonsoft.Json.JsonConvert.SerializeObject(objNotification);

Byte[] byteArray = Encoding.UTF8.GetBytes(jsonNotificationFormat);
tRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey));
tRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
tRequest.ContentLength = byteArray.Length;
tRequest.ContentType = "application/json";
using (Stream dataStream = tRequest.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);

using (WebResponse tResponse = tRequest.GetResponse())
{
using (Stream dataStreamResponse = tResponse.GetResponseStream())
{
using (StreamReader tReader = new StreamReader(dataStreamResponse))
{
String responseFromFirebaseServer = tReader.ReadToEnd();

FCMResponse response = Newtonsoft.Json.JsonConvert.DeserializeObject<FCMResponse>(responseFromFirebaseServer);
if (response.success == 1)
{
new NotificationBLL().InsertNotificationLog(dayNumber, notification, true);
}
else if (response.failure == 1)
{
new NotificationBLL().InsertNotificationLog(dayNumber, notification, false);
sbLogger.AppendLine(string.Format("Error sent from FCM server, after sending request : {0} , for following device info: {1}", responseFromFirebaseServer, jsonNotificationFormat));

}

}
}

}
}

这是此代码中用于存储从 FMServer 发送的响应的类 FCMResponse

 public class FCMResponse
{
public long multicast_id { get; set; }
public int success { get; set; }
public int failure { get; set; }
public int canonical_ids { get; set; }
public List<FCMResult> results { get; set; }
}
public class FCMResult
{
public string message_id { get; set; }
}

关于c# - 如何从 C# 控制台应用程序发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873523/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com