在watchOS上使用CloudKit的WKRefreshBackgroundTask吗?

时间:2018-10-30 16:58:54

标签: watchkit nsurlsession cloudkit wkrefreshbackgroundtask

因此,我知道在watchOS上,您可以安排(和重新安排)- hosts: - hostA become: yes pre_tasks: - pause: prompt: "Give your username" register: prompt no_log: yes run_once: yes - set_fact: username: "{{prompt.user_input}}" no_log: yes run_once: yes - pause: prompt: "Give your password" echo: no register: prompt no_log: yes run_once: yes - set_fact: password: "{{prompt.user_input}}" no_log: yes run_once: yes tags: [my_role_using_user_pass] roles: - role: my_role_using_user_pass 在后​​台为您工作。这对于我的应用程序来说非常有用,可以确保数据在watchOS上是最新的,尤其是因为它不会收到iOS和macOS之类的更新。

除了,我的数据使用CloudKit来存储用户的数据。

我想使用类似WKRefreshBackgroundTask的场景,在该场景中,您安排URLSession,在其中创建后台WKApplicationRefreshBackgroundTask任务并将其交给系统。系统依次将您交给URLSession,您可以在其中检查数据是否完成了WKURLSessionRefreshBackgroundTask(通过检查下载的数据是否存在)。

我的问题是,您如何使用CloudKit做类似的事情?

我可以只在URLSession中下载用户的数据,但我不保证在系统提供给我的应用程序的时间内它会完成。这就是为什么(似乎)Apple建议您将其分为两个后台任务:

  1. WKApplicationRefreshBackgroundTask-创建WKApplicationRefreshBackgroundTask并将其交给系统。
  2. URLSession-对从步骤1下载的数据进行处理。

我不确定您是否可以使用CloudKit做到这一点?或者,至少我似乎找不到类似的东西。

1 个答案:

答案 0 :(得分:1)

如果要使用WKURLSessionRefreshBackgroundTask,则必须通过URLSession访问iCloud数据库。这可以通过应用程序实现,但要复杂得多。

如果要尝试,请不要忘记在iCloud仪表板上获取数据库的API请求令牌。