swift - 测试部分登录到cloudkit的帐户? "Update Apple ID Settings"

标签 swift cloudkit

我有一个 iOS 应用程序,它的大部分功能都依赖于 cloudkit。但是,我似乎能够进入用户部分登录的状态。基本的cloudkit登录检查通过,我可以获得我的recordID,但无法读取或写入记录,例如当我完全登录后就可以了。

完整详细信息如下 - 关于如何在不测试读取或写入的情况下识别此状态的任何想法?

启动手机后,我收到一条“更新 Apple ID 设置”提醒

"Some account services will not be available until you sign in again"

所以,这个问题显然与此相关(这似乎在模拟器中很常见......)。如果我进入设置并重新输入密码,一切都很好。我可以通过尝试读取或写入时的错误处理来处理这个问题,但我宁愿提前检查并适本地警告用户。

我今天如何检查:

启动时,我检查用户是否登录到 cloudkit:

    if FileManager.default.ubiquityIdentityToken != nil {
        print("User logged in") // IT PASSES IN THIS STATE
    }
    else {
        print("User is not logged in")
    }

到目前为止,一切都很好。测试通过,用户已登录。但是,当我去读取或写入时,很明显我没有登录。例如,在尝试写入时我会收到 CKErrorPermissionFailure。

附加说明 - 在当前,“部分”?登录状态下,以下内容返回我的用户的正确 recordID:

let container = CKContainer.default()
container.fetchUserRecordID() { recordID, error in

关于如何以编程方式识别 cloudkit 的部分状态有什么想法吗?谢谢!

最佳答案

我还没有找到解决这个问题的答案,但想记录两件可能有用的事情

  1. 当状态检查返回事件状态时,如果我随后尝试获取要求您登录 iCloud 的记录,则会失败,我可以利用该失败来确定注销状态。

  2. 我遇到的另一个问题是少数用户打开了 iCloud,但由于某种原因没有启用 iCloud Drive。您可以通过以下方法进行检查:

    CKContainer.default().accountStatus { (accountstatus, error) in
            switch accountstatus {
                case .noAccount:
                    log.error("user logged out of iCloud OR iCloud Drive off")  
            case .restricted:
                print("restricted")
            case .available:
                print("user logged into iCloud and iCloud drive")  
            case .couldNotDetermine:
                 log.warning("could not determine account status")
            default:
                log.error("New account status returned")
       }
    }

关于swift - 测试部分登录到cloudkit的帐户? "Update Apple ID Settings",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63490973/

相关文章:

swift - 避免在 deinit 期间第一次访问引用 self 的惰性变量时崩溃

swift - 如何将 Alamofire pod 添加到 Apple Watch 扩展?

ios - CloudKit iOS 10 错误 : Account doesn't have access to CloudKit account

ios - CKQueryOperation 中的 RequestRateLimited

arrays - 在另一个数组中查找一个数组的值范围

swift - OSX开发,Xib菜单和storyboard Window Controller如何关联?

ios - 无法使用 'dequeReusable...' 类型的参数调用 '(String)'

ios - CKQuery 使用 CKAssets 很慢

ios - CloudKit 设计建议

ios - CloudKit 订阅不起作用