Firebase Cloud Messaging的C#服务器端代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Script.Serialization;
namespace Sch_WCFApplication
{
public class PushNotification
{
public PushNotification(Plobj obj)
{
try
{
var applicationID = "AIza---------4GcVJj4dI";
var senderId = "57-------55";
string deviceId = "euxqdp------ioIdL87abVL";
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 = obj.Message,
title = obj.TagMsg,
icon = "myicon"
}
};
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;
}
}
}
}
}
catch (Exception ex)
{
string str = ex.Message;
}
}
}
}
APIKey和senderId,你可以在此处---------如下(下图)(转到你的firebase应用)
从哪里获取设备ID?
它是在服务中使用方法FirebaseInstanceId.getInstance()。getToken()生成的令牌。
弄清楚了..该服务是FirebaseInstanceIdService。另外,tRequest.GetResponse()引发“远程服务器返回错误:(401)未经授权。”。即使执行了此处所说的操作,也仍然会出错-> stackoverflow.com/questions/10205854 / ...还有其他解决方案吗?
请使用代码(上面已发布)而不是您使用的代码。...我希望您可以通过...免费获得该错误。
而不是使用Web应用程序中的api密钥,而必须使用在“项目设置”>“云消息传递”中找到的服务器密钥(而不是旧版服务器密钥)。这样就可以了。