FCM 和 iOS - 仅在切换到前台或重新打开应用程序时收到消息



嗨,堆栈溢出社区!

我在使用 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
})

相关内容

  • 没有找到相关文章

最新更新