温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Push notifications via Firebase not appearing on iOS with app on background
firebase firebase-cloud-messaging ionic-framework ios push-notification

其他 - 通过Firebase进行的推送通知未在iOS上出现且后台有应用程序

发布于 2020-04-04 00:36:58

我们正在开发一个Ionic用于应用程序AndroidiOSPush Notifications我们通过以下方式发送这些通知Firebase Cloud Messaging

关于iOS我们有此问题(我们已接受该应用程序的通知权限):

  • 当应用程序处于时foreground,我们会立即收到通知(我们将其发送到应用程序内,而不是使用卡)。
  • 当应用关闭或进入时background,我们似乎没有收到通知。但是,如果我们打开或恢复该应用程序,则会收到与中收到该应用程序的通知一样的通知foreground我们的假设是我们正在得到silent notifications
  • (当我们发送Firebase测试通知时,我们会得到相同的行为)。

我们有以下配置:

  • Xcode:功能->后台模式->远程通知(显示一项检查)
  • Xcode:功能->推送通知(显示两个检查)
  • Apple Developer:标识符->我的应用程序->推送通知(带有针对开发和生产的证书)
  • Apple Developer:具有“ Apple Push Notifications服务(APN)”的键-> .p8键
  • Firebase:我的应用程序->配置->云消息传递(.p8文件上传了密钥和团队ID)

这是我们尝试通过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请求对于免费通知可能是不正确的,但我们认为这不是问题,因为Firebase测试通知在后台时也无法显示。

查看更多

提问者
Antonio Parra
被浏览
114
Antonio Parra 2020-01-08 00:31

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

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 13之后,似乎使用.p12证书存在问题,我们使用.p8证书解决了该问题。在Firebase上更改证书后,开始接收后台通知,但是前台停止了最初的几个小时。