【问题标题】:Firebase Push notifications don't work on iOS 13Firebase 推送通知在 iOS 13 上不起作用
【发布时间】:2020-01-31 13:05:42
【问题描述】:

Firebase 推送通知无法在 iOS 13 上运行。但在 iOS 12.4 上运行良好。有什么解决办法吗?

编辑:04.10.19

静默推送通知在 iOS 13 中不起作用

【问题讨论】:

  • 您使用哪个 xCode 生成构建?
  • 我在 13.2.1 上也遇到了同样的问题,我什至无法收到 gmail 应用程序的通知,但是当我将 iOS 版本更新到 13.3 时,所有通知都开始收到了。问题已解决。

标签: swift xcode firebase push-notification ios13


【解决方案1】:

快速修复解决方案:

如果您在 iOS 13.2.X 版本上接收推送通知时遇到问题,请在设备设置中进行以下更改并再次检查:

设备 > 设置 > 搜索您的 AppName > 通知 > 横幅样式 > 将其从“临时”更改为 “持久”,反之亦然。

现在再次发送推送通知并开始接收。

【讨论】:

  • 这对我有用。知道为什么会这样吗?不想强迫我的用户这样做..
  • 是的,知道如何在代码中完成这一切吗?对于成千上万的用户来说,这不是一个可靠或可扩展的解决方案。 :\ 在我的测试中它确实有效。
【解决方案2】:

在 iOS 13 之前,我遇到了无法接收推送通知的问题,因为我没有在 XCode - 签名和功能 -> 后台模式 -> 后台获取中进行选择。在我选择它之后一切正常。 在 iOS 13 之后,我遇到了同样的问题,即不再接收推送通知。今天我看到在 XCode 中,Background Fetch 选项再次被取消选中。 XCode更新后可能发生了什么?

我还没有测试它。检查这是否适合您。

【讨论】:

  • 我认为这也为我解决了问题!我需要添加后台模式 1. 远程通知和 2. 后台处理。一直选择远程通知。通过后台处理,我不确定它是否被选中然后以某种方式取消选中。但是同时启用,推送消息再次起作用。谢谢!
【解决方案3】:

Ref link here

Firebase 推送正文示例

{
  "topic": "topic_test",
  "message": {
    "data": {
      "key": "some_value"
    },
    "notification": {
      "body": "description ~",
      "title": "title !"
    }
  },
  "options": {
    "mutableContent": true,
    "contentAvailable": true,
    "apnsPushType": "background"
  }
}

【讨论】:

  • this "contentAvailable": true 对我有用。谢谢
【解决方案4】:

也许是它的iOS13 bug 或更新模式, 这将适用于 iOS12 和 iOS13

{
"to":"",
"priority":"high",
"content_available":true,
"data":{
    "abc":"abc"
    },
"notification":{
    "body":"abc"
    }
}

Or

{
"to":"",
"priority":"high",
"content_available":true,
"data":{
    "abc":"abc"
    }
}

【讨论】:

    【解决方案5】:

    如果代理didRegisterForRemoteNotificationsWithDeviceToken 触发失败,请尝试更改网络。我将其更改为蜂窝数据,它又开始工作了

    此外,如果您使用 MAC 中的 Internet 连接通过 USB 进行共享。将其关闭并将您的 iPhone 连接到普通的 wifi 或移动数据网络。

    【讨论】:

      【解决方案6】:

      希望你添加通知委托和其他方法

      所以首先你可以使用下面的链接尝试使用邮递员

      https://fcm.googleapis.com/fcm/send

      在邮递员标题中 1)。 Authorization = key="添加 Firebase 服务器密钥" 2)。内容类型 = 应用程序/json

      在邮递员正文中作为行

      { "to" : "Your iPhone Device FCM Toen", “通知” : { "body" : "你的通知正文", "title": "您的通知标题", “声音”:“默认”, “警报”:“新” }, “优先级”:“高”, “内容可用”:真, “数据” : { "body" : "您的数据通知正文", "title": "你在 Title 中的通知标题", "key_1" : "key_1 的值", "key_2" : "key_2 的值", } }

      首先尝试在上面的示例中使用邮递员并检查 iOS 13

      【讨论】:

        【解决方案7】:

        可能与推送令牌从Data 对象中拉出的方式有关。我对 Firebase 推送通知不是很熟悉,但如果您必须将推送令牌传递给 Firebase,您可能需要更改获取令牌的方式。如果 Firebase 有处理此问题的 SDK,您可能需要对其进行更新。

        OneSignal 谈变化here

        【讨论】:

          【解决方案8】:

          更新我的 Pod 后我遇到了同样的问题。从 6.18.0 版开始:

          已弃用通过 shouldEstablishDirectChannel 的 FCM 直接频道消息传递。相反,使用 APNs 进行下游消息传递。如果您想继续使用旧版 API,请将 content_available 密钥添加到您的有效负载中,但我们强烈推荐 HTTP v1 API,因为它提供了完整的 APN 支持。已弃用的 API 将在 Firebase 7 (#4710) 中移除。"Release notes

          在我的 AppDelegate 中,我注释掉了 2 行代码:

          func connectToFCM() {
          //        Messaging.messaging().shouldEstablishDirectChannel = true
              }
          
          func disconnectFCM() {
          //        Messaging.messaging().shouldEstablishDirectChannel = false
              }
          

          当我使用它的设备令牌向我的设备发送通知时,一切似乎都在工作。但是,在将我的更新上传到 App Store 后,我看到了

          0% 的潜在用户有资格参加此活动:0

          我从 Firebase 重新下载了 GoogleService-Info.plist,并将其与我的 xcworkspace 中已有的内容进行了比较。 GOOGLE_APP_ID 已更改。因此,替换 .plist 修复了它。我不确定为什么 .plist 中的信息会改变。希望这可以帮助。

          ps- 当前 Pod 为 6.23.0

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-29
            相关资源
            最近更新 更多