你好 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/