iOS 10-Swift still Notification CloudKit:应用未启动,在didFinishLaunchingWithOptions

问题描述

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

有效的方法: 当应用程序在后台运行时:

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

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

但是,如果该应用不再位于后台(即完全关闭),则不会再执行fetchCompletionHandler。 我已经通过NSLog对此进行了检查。

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

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

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

这是一款将数据从一个设备传输到另一个设备的游戏。

谁有我的代码段? 还是提示我可以搜索

解决方法

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

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

有关我的意思的详细说明,请参见我的answer here to a similar question