Swift如何检测iCloud已登录(在线)
2016-12-04 14:44
357 查看
不少童鞋在使用iCloud同步的功能时会发现,你的App无法正常工作,尤其是在模拟器上运行App的时候!这是因为你模拟器上设置里的iCloud没有登录!
当你登录iCloud账号后,你会发现App神奇般的恢复正常了!一般的你可以在Xcode打开对应账号下的iCloud中存放的内容:
项目->Capabilities->iCloud->CloudKit Dashboard 按钮
地址如下:
https://icloud.developer.apple.com/dashboard/
不过还有一个问题需要解决,如何提前检测iCloud账户是否登录呢!?
这分两种情况:当使用iCloud里的Key-value storage功能时,官方文档称无法直接判断出iCloud账号是否已登录,原话如下:
网上那些说使用NSUbiquitousKeyValueStore.default().synchronize()之类的方法都无效,它都返回true!
如果是使用iCloud中的iCloud Documents功能,在打开Capabilities中iCloud对应的选项后官方的原话是:
可以使用如下代码检测:
其实对于第一种情况(Key-value storage),也可以使用这个技巧,前提是必须打开iCloud中对应的选项即可.
而在使用CloudKit的情况下,可以如下方式判断:
官方文档链接:
iCloud Design Guide
当你登录iCloud账号后,你会发现App神奇般的恢复正常了!一般的你可以在Xcode打开对应账号下的iCloud中存放的内容:
项目->Capabilities->iCloud->CloudKit Dashboard 按钮
地址如下:
https://icloud.developer.apple.com/dashboard/
不过还有一个问题需要解决,如何提前检测iCloud账户是否登录呢!?
这分两种情况:当使用iCloud里的Key-value storage功能时,官方文档称无法直接判断出iCloud账号是否已登录,原话如下:
Key-value storage is effectively always available. If a device is not attached to an account, changes created on the device are pushed to iCloud as soon as the device is attached to the account.
网上那些说使用NSUbiquitousKeyValueStore.default().synchronize()之类的方法都无效,它都返回true!
如果是使用iCloud中的iCloud Documents功能,在打开Capabilities中iCloud对应的选项后官方的原话是:
Call the URLForUbiquityContainerIdentifier: method for one of your ubiquity containers. If the method returns nil, document storage is not available.
可以使用如下代码检测:
func iCloudAccessTest(_ block:@escaping (Bool)->()){ DispatchQueue.global(qos: .default).async { if let _ = FileManager.default.url(forUbiquityContainerIdentifier: nil){ DispatchQueue.main.async { block(true) } }else{ DispatchQueue.main.async { block(false) } } } }
其实对于第一种情况(Key-value storage),也可以使用这个技巧,前提是必须打开iCloud中对应的选项即可.
而在使用CloudKit的情况下,可以如下方式判断:
The public database is always available. The private database is available only when the value in the ubiquityIdentityToken property is not nil.
官方文档链接:
iCloud Design Guide
相关文章推荐
- Swift如何检测iCloud已登录(在线)
- Swift如何检测iCloud已登录(在线)
- 如何实现在线人数统计和登录限制?
- 腾讯的网站如何检测到你的 QQ 已经登录?
- 如何检测同一账号的重复登录
- 如何查看IE浏览器版本?在线检测IE版本号
- 腾讯的网站如何检测到你的 QQ 已经登录?
- 腾讯的网站是如何检测到你的 QQ 已经登录?
- 腾讯的网站如何检测到你的 QQ 已经登录?
- 如何知道所有在线的用户 (保存所有在线登录人信息,此处为后台人员)
- 如何让所有模块先检测是否有登录
- 腾讯的网站如何检测到你的 QQ 已经登录?
- 即时通信系统中如何实现:支持PC端和移动端同时在线(即支持同帐号多设备同时登录)?
- 分析网站如何检测已经登录的QQ帐号
- SQL Server群集如何在线检测
- 如何实现实时检测用户在线 asp
- 如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?
- 腾讯的网站如何检测到你的 QQ 已经登录?