gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:58:41 26 4
gpt4 key购买 nike

你好 stackoverflow 社区!

我在使用 iOS 和 FCM 时遇到了一些问题:当我第一次启动该应用程序时,收不到 FCM 消息。如果我

  • 关闭应用程序并再次打开它或
  • 再次将应用切换到后台和前台,

突然收到所有消息。之后,该应用程序运行正常 - 只是第一次无法正常运行。唯一有帮助的是将“FirebaseInstanceID”降级为“2.0.0”。其他 Firebase Pod 是

  • Firebase 4.13.0
  • FirebaseAnalytics 4.2.0
  • FirebaseAuth 4.6.1
  • FirebaseCore 4.0.20
  • Firebase 崩溃 2.0.2
  • FirebaseInstanceID 2.0.0
  • FirebaseMessaging 2.2.0

XCode 是版本 9.3 (9E145)

我的带有 didFinishLaunchingWithOptions 的 AppDelegate 有

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/在 appdelegate 中: - 声明:var backgroundTask: UIBackgroundTaskIdentifier?。 - 将其添加到 applicationDidEnterBackground

  backgroundTask = application.beginBackgroundTask(withName: "Task", expirationHandler: {
application.endBackgroundTask(self.backgroundTask!)
self.backgroundTask = UIBackgroundTaskInvalid
})

关于ios - FCM 和 iOS - 仅在切换到前台或重新打开应用程序时收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com