首页 > 解决方案 > iOS 10 - Swift 仍然通知 CloudKit:应用程序未启动,在 didFinishLaunchingWithOptions 之后读取通知

问题描述

当应用程序不再处于后台模式时,我在阅读通知时遇到问题。所以它完全关闭了。通知设置工作正常。即使应用程序不再在后台,也会读取通知。在日志文件中,您可以看到到达。出于测试目的,我打开了通知指针。算了。

什么有效:当应用程序在后台时:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {} 

正确执行,我可以通过 CKRecordID 访问数据。

但是如果应用程序不再在后台,即完全关闭,则不再执行 fetchCompletionHandler。我已经通过 NSLog 进行了检查。

现在我需要一种在应用程序启动时再次阅读通知的方法。所以我需要 CKRecordIDs。

它仅与传输的数据有关。我不需要在屏幕上显示。

也可以更改设置,以便在再次启动应用程序时只接收数据。我真的不需要他们在后台。

它是关于将数据从一台设备传输到另一台设备的游戏。

谁有我的代码片段?或者提示我可以在哪里搜索?

标签: iosswiftnotificationscloudkit

解决方案


据我所知,当设备离线或应用程序未运行时,没有办法获得错过的通知。

您将需要创建一个CKQuery来检查 CloudKit 以了解设备上次启动时错过的内容。您CKQuery必须与本地保存到设备的时间戳进行比较,UserDefaults才能知道从 CloudKit 中获取什么。

有关我的意思的更长描述,请参见我对类似问题的回答。


推荐阅读