How to initialize a CKSubscription in iOS 10.3
Asked Answered
N

2

7

I am building an app that needs to subscribe to record changes in the public database of iCloud. Now, after watching the apple video's and reading their documentation, I decided to get to work. However, I immediately got stuck here:

enter image description here

All initialization methods on a CKSubScription are deprecated. This can be seen here, but meanwhile apple still seems to use the very same methods in their documentation here.

This left me surprised. Looking around on the web and SO, there doesn't seem too be much information or any tutorials available (at least, none with up to date info on initializing subscriptions), probably because this technology is relatively new and these changes are recent. I have very superficial experience with CloudKit, so I'd rather ask for a decent way to do this than to improvise something myself. My question is:

How to initialize a CKSubscription?

Obviously, if the entire idea of subscriptions is outdated I am open to any answer that will result in my app receiving pushes when records of specific types appear in my public database.

Northeastward answered 15/5, 2017 at 13:27 Comment(0)
D
11

Seems like CKSubscription is really more or less deprecated.

According to http://iosdevetips.blogspot.de/2016/06/deprecated-apis-in-ios-10.html you should use CKRecordZoneSubscription and CKQuerySubscription now.


Update: Like Trevis pointed out, the docs are not really helpful here, but at least Xcode shows a somewhat helpful Warning: enter image description here

Devitt answered 15/5, 2017 at 13:31 Comment(5)
As a relatively new iOS dev, i find it really frustrating that their document doesn't tell you want the new hotness is when looking at the deprecated reference. Doesn't seem like a lot to ask. Thanks for your response.Transact
You're right, but at least Xcode shows a warning for that (see my updated answer)Devitt
This is probably wrong but if you are just getting started with iOS development, I'd suggest you ignore this warning and use that method anyway — deprecated methods won't go away in a few years, and before they do in the future, better documentations will definitely surface.Matsumoto
@TrevisThomas: The new hotness is written right there: Init the appropriate CKSubsription subclass. What else do you want?Melanimelania
There is also CKDatabaseSubscription that lets you also specify a record type to query.Essie
M
2

If you are looking for a new class to substitute Apple's own documentation, use CKQuerySubscription in place of CKSubscription. They have almost identical initializers.

Matsumoto answered 7/6, 2018 at 9:41 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.