So, on watchOS, I know you can schedule (and reschedule) a WKRefreshBackgroundTask
to do work for you in the background. This is great for my app to make sure that data is current and up-to-date on watchOS - especially since it doesn't receive updates like iOS and macOS.
Except, my data uses CloudKit to store a user's data.
I want to use something like the URLSession
scenario, where you schedule a WKApplicationRefreshBackgroundTask
where you create a background URLSession
task and hand it to the system. The system in turn hands you a WKURLSessionRefreshBackgroundTask
where you check if your data completed its URLSession
(by checking if the downloaded data exists).
My question is, how do you do something like this with CloudKit?
I could just do the downloading of my user's data in the WKApplicationRefreshBackgroundTask
, but I don't think I'm guaranteed it will finish in the time the system gives to my app. This is why (it seems) Apple recommends you split this into two Background Tasks:
WKApplicationRefreshBackgroundTask
- to create theURLSession
and hand it to the system.WKURLSessionRefreshBackgroundTask
- to act upon the data downloaded from step 1.
I am not sure you can do this with CloudKit? Or, at least I can't seem to find something of the sort.
If you want to use
WKURLSessionRefreshBackgroundTask
you have to access the iCloud database via URLSession. This is possible from an app but much more complicated.Don't forget to get your API request token for your database on the iCloud dashboard if you want to try it out.