Firebase 通知在 iOS 10 上触发错误的委托
Posted
技术标签:
【中文标题】Firebase 通知在 iOS 10 上触发错误的委托【英文标题】:Firebase Notifications triggers wrong delegate on iOS 10 【发布时间】:2016-10-02 22:49:24 【问题描述】:我正在使用Firebase
在 ios 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 云消息传递,还是让应用通过 API 请求事件和触发通知?
Xcode 8.3 Swift 3 FCM 通知上的 Firebase 问题 iOS 10.3 不起作用