通过 Firebase 推送通知不会显示在 iOS 上,并且应用程序在后台



我们正在为AndroidiOS开发一个Ionic应用程序,该应用程序具有Push Notifications。我们通过Firebase Cloud Messaging发送这些通知

iOS我们遇到此问题(我们已接受应用程序的通知权限(:

  • 当应用程序处于foreground,我们会立即收到通知(我们在应用程序内获取通知,而不是使用卡片(。
  • 当应用程序关闭或处于background时,我们似乎没有收到通知。但是,当我们打开或恢复应用程序时,我们会收到通知,就像该应用程序在foreground中收到的那样。我们的假设是我们正在silent notifications.
  • (当我们发送 Firebase 测试通知时,我们会收到相同的行为(。

我们有接下来的配置:

  • Xcode:功能 -> 后台模式 -> 远程通知(显示一个检查(
  • Xcode:功能 -> 推送通知(显示两个检查(
  • 苹果开发者:标识符 ->我的应用程序 ->推送通知(带有开发和生产证书(
  • 苹果开发者:键 ->带有"苹果推送通知服务(APNs("的.p8键
  • Firebase:我的应用 -> 配置 -> 云消息传递(使用密钥和团队 ID 上传的 .p8 文件(

这是我们尝试通过Firebase POST API发送的几个通知之一,它结合了我们在研究此问题时阅读的几乎所有内容。(我们还会发送所需的 Firebase HTTP 标头(

{
"to": "<firebase_token>",
"notification": {
"body": "NOTIFICATION BODY",
"title": "NOTIFICATION TITLE",
},
"apns": {
"headers": {
"apns-push-type": "alert",
"apns-expiration": 0,
"apns-priority": 5,
"apns-topic": "<my_app>"
},
"payload": {
"alert": {
"title": "NOTIFICATION TITLE",
"body": "NOTIFICATION BODY"
},
"aps": {
"content-available": 1,
"alert": {
"title": "NOTIFICATION TITLE",
"body": "NOTIFICATION BODY"
}
},
"sound": "default",
"content-available": 1
}
},
"data": {
"field": "1",
"type": "CHAR"
}
}

尽管POST请求对于 bacground 通知可能不正确,但我们认为这不是问题所在,因为 Firebase 测试通知在后台时也无法显示。

我们终于能够在后台和前台使用应用程序获得通知。

Firebase 的有效负载为:

{
"to": "<firebase token>",
"notification": {
"title": "TITLE",
"body": "BODY"
},
"data": {
"title": "TITLE",
"body": "BODY",
"extraField1": "extra value 1",
"extraField2": "extra value 2"
},
"apns": {
"headers": {
"apns-topic": "<my-app>",
"apns-push-type": "background",
"apns-priority": 10
}
}
}

更新到 iOS 12 后,.p13 证书似乎存在问题,我们使用 .p8 证书解决了这个问题。在Firebase上更改证书后,开始收到后台通知,但前台在最初的几个小时内停止了。

我不确定,但似乎您的有效载荷结构不合适。

请参考以下示例

{
"to" : "FCM TOKEN",
"notification" : {
"body" : "Body of Your Notification",
"title": "Title of Your Notification"
},
"data" : {
"body" : "Body of Your Notification in Data",
"title": "Title of Your Notification in Title",
"key_1" : "Value for key_1",
"key_2" : "Value for key_2"
}
}

如果您使用的是普通的 APNS,则无需传递content-available

在 XCode 日志中查找消息。这是我得到的,见下文:

在访问正文的 js 代码中,使用 data.aps.alert.body

this.fcm.onNotification().subscribe(data => {
console.log("notifiation data", data);
alert(data.aps.alert.body);

Message ID 1: 1593974546767029
{
aps =     {
alert =         {
body = "Hi, this is ios and android test 6!!!";
title = " iOS and Android Test";
};
badge = 1;
sound = default;
};
"gcm.message_id" = 1593974546767029;
"gcm.n.e" = 1;
"gcm.notification.sound2" = default;
"google.c.a.c_id" = 2904766990309581961;
"google.c.a.e" = 1;
"google.c.a.ts" = 1593974546;
"google.c.a.udt" = 0;
"google.c.sender.id" = 291488852090;
}

相关内容

  • 没有找到相关文章

最新更新