Firebase 通知在 iOS 10 上触发错误的委托

Posted

技术标签:

【中文标题】Firebase 通知在 iOS 10 上触发错误的委托【英文标题】:Firebase Notifications triggers wrong delegate on iOS 10 【发布时间】:2016-10-02 22:49:24 【问题描述】:

我正在使用Firebaseios 10 上设置推送通知。 我的应用程序在前台接收远程消息,但不在后台。只有在打开应用程序时才会收到后台消息。

不知何故,所有推送通知都是通过 Firebase 的数据消息委托 applicationReceivedRemoteMessage: 接收的,而实际上我从不发送数据负载。

我完全按照 Firebase 网站上的教程中的说明实现了 AppDelegate,我自己设置了 APNS 令牌,并且证书都在正确的位置。此外,我的有效负载以“高”优先级和内容可用发送。

有人知道为什么 iOS 10 的原生远程消息处理程序 (userNotificationCenter:willPresentNotification:withCompletionHandler:) 从未被调用吗?

非常感谢! (已经调试了两天了……)

【问题讨论】:

如果您将通知键放入消息中,则应用程序将收到通知并且可以正常工作,如下所示 \"notification\":\"body\":\"iOS Notification\", \ "优先级":\"高"" 我已经这样做了。仍然去数据消息委托虽然 你运气好吗?升级到 XCode 8.2 后遇到了这个问题。以前工作正常。 确保你没有实现数据委托,同时确保删除任何云消息传递代码,例如connectToFcm 等。 【参考方案1】:

我也遇到了同样的问题。

我通过将以下文本添加到发件人来解决它:

"notification":"body":""

不要设置 Firebase 委托,而是在旧方法中处理它

didReceiveRemoteNotification

【讨论】:

这对我也有用。通常,除了通知严格需要的内容之外,不要包含任何 Firebase Cloud Messaging API。每次我拨打connectToFcm 之类的电话时,我的代码也会出错。【参考方案2】:

查看firebase method swizzling

FCM SDK 在两个关键领域执行方法调配:映射您的 APNs 令牌到 FCM 注册令牌并捕获分析数据 在下游消息回调处理期间。不喜欢的开发者 使用 swizzling 可以通过添加标志来禁用它 应用程序的 Info.plist 文件中的 FirebaseAppDelegateProxyEnabled 和 将其设置为 NO(布尔值)。指南的相关领域提供 代码示例,无论是否启用方法混合。

【讨论】:

以上是关于Firebase 通知在 iOS 10 上触发错误的委托的主要内容,如果未能解决你的问题,请参考以下文章

Firebase变量的iOS推送通知?可能的?

在 iOS 上设置 Firebase 通知时出错

使用 Firebase 云消息传递,还是让应用通过 API 请求事件和触发通知?

Xcode 8.3 Swift 3 FCM 通知上的 Firebase 问题 iOS 10.3 不起作用

从一个信号触发的 Firebase 云功能发送 voip 推送通知

使用 Firebase 的 iOS 推送通知