在应用程序被杀后,我无法通过Firebase通过HTTP请求向我的iOS设备发送推送通知。当应用程序处于前台或在后台处于活动状态时,一切都按预期工作。但如果我杀了应用程序它将无法正常工作。如果应用程序被杀,我可以通过Firebase控制台向我的应用程序发送通知,因此我认为我使用的代码一定有问题。
这是我发送推送通知的代码:
private void SendPushNotification(string devicetoken, string header, string content, string pushdescription)
{
var textNotification = new
{
to = devicetoken,
notification = new
{
title = header,
text = content,
content_available = true,
sound = "enabled",
priority = "high",
id = pushdescription,
},
project_id = "rrp-mobile",
};
var senderId = "212579566459";
var notificationJson = Newtonsoft.Json.JsonConvert.SerializeObject(textNotification);
using (var client = new WebClient())
{
client.Encoding = Encoding.UTF8;
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Headers[HttpRequestHeader.Authorization] = "key=AIfrSyAtgsWCMH4s_bOyj-Us4CrdsifHv-GqElg";
client.Headers["Sender"] = $"id={senderId}";
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.UploadString("https://fcm.googleapis.com/fcm/send", "POST", notificationJson);
}
}
我忘记了什么吗?这适用于在前台,后台以及应用程序被杀时向Android设备发送推送通知,就像我在前台和后台对iOS设备所说的那样。
唯一的问题是在应用程序被杀死时向iOS设备发送推送通知。有没有人知道如何解决这个问题?
答案 0 :(得分:1)
我刚刚意识到自己的错误,而且非常简单。我在这里张贴这个,因为我相信这可能是一件容易错过的事情。
var textNotification = new
{
to = devicetoken,
notification = new
{
title = header,
text = content,
content_available = true,
sound = "enabled",
**priority = "high",**
id = pushdescription,
},
project_id = "rrp-mobile",
};
您需要确保在“通知”范围之外定义优先级属性,如下所示:
var textNotification = new
{
to = devicetoken,
**priority = "high",**
notification = new
{
title = header,
text = content,
content_available = true,
sound = "enabled",
id = pushdescription,
},
project_id = "rrp-mobile",
};
即使应用程序被杀,这也会使您的推送通知得以传递。