我正在使用 FCM 发送推送通知,我在 AppDelegate 中使用以下方法来接收随通知一起发送的数据。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if let firstMessage = userInfo["url"] as? String, let secondMessage = userInfo["category"] as? String {
print("message1: (firstMessage)")
print("message2: (secondMessage)")
let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let mainVC = mainStoryBoard.instantiateViewController(withIdentifier: "MainViewController") as! MainViewController
mainVC.url = firstMessage
mainVC.category = secondMessage
self.window?.rootViewController = mainVC
}else {
print("no data received!")
}
completionHandler(UIBackgroundFetchResult.newData)
}
当应用程序在前台或后台成功接收数据时,但是当应用程序终止(杀死(时,收到该通知但没有数据,据我了解,"didReceiveRemoteNotification",在应用程序终止时不会调用,相反,我必须在"didFinishLaunchingWithOptions"中编写代码以显示通过推送通知接收的数据。知道怎么做吗? 谢谢
iOS 应用程序在应用程序终止时无法接收数据有效负载,这是 iOS 的限制。相反,您可以做的是在 FCM 和中设置通知和数据有效负载。因此,如果您的应用程序被终止,您仍然会看到通知,当用户点击通知时,您可以在didReceiveRemoteNotification函数中以userInfo的形式接收数据有效负载,就像您在应用程序处于前台时一样。