我正在尝试通过Firebase在我的应用程序中实现推送通知。
我已经按照这里的说明进行了操作:https://firebase.google.com/docs/cloud-messaging/ios/first-message#register_for_remote_notifications,并授予权限。我得到了一个FCM令牌,但测试消息不起作用。
我发现一份调试指南建议我手动调用这些方法,但didRegisterForRemoteNotificationsWithDeviceToken或didFailToRegisterForRemoteNotificationsWithError从未被调用过。
显然,我认为这是一个代码或配置问题,但我试图排除它们,但没有这样的运气。当我在这里下载iOS示例应用程序时:https://github.com/firebase/quickstart-ios/tree/master/messaging/
一切都很好。我没有更改代码,只更改了包Id和GoogleServices-Info.plist。我得到了一个APNs返回,同样的推送工作很好。
因此,我将整个AppDelegate.swift复制到我的项目中。相同代码,相同App Id,启用推送通知,自动管理签名。它不起作用,未调用didRegisterForRemoteNotificationsWithDeviceToken。
我能找到的唯一区别是:·示例应用程序没有使用SwiftUI。我正在使用UIApplicationDelegateAdaptor转发AppDelegate,而didFinishLaunchingWithOptions被调用得很好。我正在使用Swift包管理器而不是CocoaPods。代码编译得很好,并且没有错误消息。
以下是我所知道的相同之处:·匹配App委托。复制/粘贴。app中没有与通知相关的其他代码·匹配App功能·匹配App Id,GoogleServiceInfo.plist·匹配“自动管理签名”
在这一点上,我已经没有想法了。任何其他需要检查的建议都将是很好的。什么会导致didRegisterForRemoteNotificationsWithDeviceToken不被调用?
发布于 2021-08-06 14:04:52
我解决了这个问题。这最终导致SwiftUI应用程序默认不支持方法切换。相反,Firebase尝试拦截该方法失败,导致原始方法未被调用
使用建议的标志禁用swizzling,然后手动发送已解决此问题。
https://stackoverflow.com/questions/68671592
复制相似问题