嗨,堆栈溢出社区!
我在使用 iOS 和 FCM 时遇到了一些问题:当我第一次启动应用程序时,没有收到 FCM 消息。如果我
- 关闭应用程序并再次打开它或
- 再次将应用程序切换到背景和前景,
突然收到所有消息。之后,该应用程序运行良好 - 只是第一次无法正常工作。 唯一有帮助的是将"FirebaseInstanceID"降级为"2.0.0"。 其他Firebase Pod是
- 火力基地 4.13.0
- FirebaseAnalytics 4.2.0
- 火基身份验证 4.6.1
- FirebaseCore 4.0.20
- 火基崩溃 2.0.2
- FirebaseInstanceID 2.0.0
- FirebaseMessaging 2.2.0
XCode 是版本 9.3 (9E145(
My AppDelegate with didFinishLaunchingWithOptions 有
FMessaging.messaging().delegate = self
Messaging.messaging().shouldEstablishDirectChannel = true
FirebaseApp.configure()
application.registerForRemoteNotifications()
我也有
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print("APNs token retrieved: (deviceToken)")
Messaging.messaging().apnsToken = deviceToken
}
我用
extension AppDelegate : MessagingDelegate {
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
...
}
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
...
}
这是一种常见的行为/错误还是我在这里做错了什么?
多谢!
此 FCM 应注册到后台模式。您应该允许它在后台运行。
1/在项目功能中启用后台模式并选择您使用的选项(后台提取、远程通知(
2/在委托中: - 声明:var backgroundTask: UIBackgroundTaskIdentifier?. - 将其添加到应用程序DidEnterBackground
backgroundTask = application.beginBackgroundTask(withName: "Task", expirationHandler: {
application.endBackgroundTask(self.backgroundTask!)
self.backgroundTask = UIBackgroundTaskInvalid
})