CloudKit访问权限

CloudKit在使用的时候就和通讯录,照片等访问一样,都需要用户类似授权的行为,当然CloudKit略有不通,它需要用户的设备的OS版本至少8.0一样,然后用户还需要设置自己的iCloud账号,而且还必须在设置里不关闭app对iCloud Drive的访问(开关路径为:设置->iCloud->iCloud Drive),否则用户可能出现完全无法访问iCloud或者可能读数据,而无法保存或者更新数据。

那么iCloud的登陆状态,开关等的状态的设置会在app里有什么样的返回结果呢?

测试结果

场景 CKAccountStatus状态 CKApplicationPermissionStatus值
关闭iCloud,完全不登陆iCloud账号 NoAccount CouldNotComplete
登陆iCloud,关闭iCloud Drive NoAccount CouldNotComplete
登陆iCloud,打开iCloud Drive,关闭app的访问权限 NoAccount CouldNotComplete
全打开 Available CouldNotComplete

实际上CKApplicationPermissionStatus的授权需要调用requestApplicationPermission:completion:,当用户完成授权后,这里的CKApplicationPermissionStatus会变为CKApplicationPermissionStatusGranted。而这个授权是为了特殊的一些权限,主要是通过email能看到应用。具体没深入了解