iOS 10 - Swift 仍然通知 CloudKit:应用程序未启动,在 didFinishLaunchingWithOptions 之后读取通知
Posted
技术标签:
【中文标题】iOS 10 - Swift 仍然通知 CloudKit:应用程序未启动,在 didFinishLaunchingWithOptions 之后读取通知【英文标题】:iOS 10 - Swift still Notification CloudKit: App is not launched, read Notification after didFinishLaunchingWithOptions 【发布时间】:2020-09-23 17:37:22 【问题描述】:当应用不再处于后台模式时,我无法阅读通知。所以它完全关闭了。 通知设置工作正常。 即使应用程序不再在后台,也会读取通知。在日志文件中,您可以看到到达。 出于测试目的,我打开了通知指针。算了。
什么有效: 当应用在后台时:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
正确执行,我可以通过 CKRecordID 访问数据。
但如果应用程序不再在后台,即完全关闭,则不再执行 fetchCompletionHandler。 我已经通过 NSLog 进行了检查。
现在我需要一种在应用启动时再次阅读通知的方法。所以我需要 CKRecordID。
这只是关于传输的数据。我不需要在屏幕上显示。
还可以更改设置,以便在重新启动应用程序时仅接收数据。我真的不需要它们在后台。
这是关于将数据从一台设备传输到另一台设备的游戏。
谁有我的代码 sn-p? 或者提示我可以在哪里搜索?
【问题讨论】:
【参考方案1】:据我所知,当设备离线或应用未运行时,没有办法获得错过的通知。
您将需要创建一个CKQuery
来检查 CloudKit 以了解设备上次启动时错过的内容。您的CKQuery
必须与使用UserDefaults
在本地保存到设备的时间戳进行比较,才能知道从 CloudKit 获取什么。
请参阅我的answer here to a similar question,了解我的意思的详细说明。
【讨论】:
感谢您的回答。我也想过类似的事情。以上是关于iOS 10 - Swift 仍然通知 CloudKit:应用程序未启动,在 didFinishLaunchingWithOptions 之后读取通知的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Cloud Message iOS Swift 不工作
在通知标题中显示函数结果(Swift 3,iOS10)[关闭]