1

To retrieve actual logged in iCloud user's info via CloudKit, I need to call the discoverUserInfoWithUserRecordID method.

Its API says:

The user must have granted the CKApplicationPermissionUserDiscoverability permission for this container.

How does it work?

János
  • 32,867
  • 38
  • 193
  • 353

3 Answers3

4

Swift

CKContainer.defaultContainer().requestApplicationPermission(CKApplicationPermissions.PermissionUserDiscoverability, 
                 completionHandler: {
                      applicationPermissionStatus, error in
                           // check (applicationPermissionStatus == CKApplicationPermissionStatus.Granted)
})

Objective-C

[[CKContainer defaultContainer] requestApplicationPermission:CKApplicationPermissionUserDiscoverability
                 completionHandler:^(CKApplicationPermissionStatus applicationPermissionStatus, NSError *error) {
                           // check(applicationPermissionStatus == CKApplicationPermissionStatusGranted)
                 });
}
Lucas Torquato
  • 407
  • 4
  • 8
1
var defaultContainer = CKContainer.defaultContainer()
var publicDatabase = defaultContainer.publicCloudDatabase
defaultContainer.requestApplicationPermission(.PermissionUserDiscoverability, {status, error in 

})

Requests the specified permission from the user asynchronously.

The first time you request a permission on any of the user’s devices, the user is prompted to grant or deny the request. Once the user grants or denies a permission, subsequent requests for the same permission (on the same or separate devices) do not prompt the user again. This method runs asynchronously and delivers the results to the block you provide.

János
  • 32,867
  • 38
  • 193
  • 353
  • 1
    Please explain code when posting answers, we are here to help people become better. Give a man a fish... – DavidG Jul 06 '14 at 12:23
  • 1
    Absolutely not, ask any of the long term respected members of SO and I think you will find they disagree with you. – DavidG Jul 06 '14 at 14:24
0

This is updated for Xcode 13 and swift 5:

CKContainer.default().requestApplicationPermission(.userDiscoverability) { (status, error) in
/* your code here */
   }
us_david
  • 4,431
  • 35
  • 29