我正在编写一个c#服务,允许我使用FCM发送推送通知。现在,一切正常,但后来我想使用FCM发送批量推送通知。
我希望能够同时向多个设备发送相同的消息。当前需要一个注册令牌,然后完成整个过程,然后转到下一个。但如果我必须立即向许多号码发送推送通知,这将毫无用处。什么应该是我最好的选择?
c#code
public String SendPushNotification(string regtoken)
{
try
{
string applicationID = "#############3";
string senderId = "##########";
string deviceId = regtoken;
WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
tRequest.Method = "post";
tRequest.ContentType = "application/json";
var data = new
{
to = deviceId,
notification = new
{
body = message,
title = "",
sound = ""
}
};
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(data);
Byte[] byteArray = Encoding.UTF8.GetBytes(json);
tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));
tRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
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())
{
using (StreamReader tReader = new StreamReader(dataStreamResponse))
{
String sResponseFromServer = tReader.ReadToEnd();
String str = sResponseFromServer;
}
}
}
status = statusmessages();
}
}
catch (Exception ex)
{
string str = ex.Message;
status = "failure";
}
return status;
}
答案 0 :(得分:4)
更新:对于v1,似乎不再支持registration_ids
,并且使用主题是最佳方法。
您可以使用registration_ids
参数,在那里您最多可以指定1000个注册令牌:
此参数指定多播消息的收件人,即发送到多个注册令牌的消息。
该值应该是要向其发送多播消息的注册令牌数组。该数组必须包含至少1个且最多1000个注册令牌。要将消息发送到单个设备,请使用to参数。
只需替换
to = deviceId
类似
registration_ids = deviceIds
其中deviceIds
是一个令牌数组。
或者您可以使用Topic Messaging,只要用户订阅了您的主题,他们就会收到发送到该主题的消息。