cloudKit:CKSubscription错误“此请求需要经过身份验证的帐户”“

时间:2014-12-05 11:41:30

标签: ios objective-c xcode cloudkit

我正在测试我的应用程序没有经过身份验证的iCloud帐户,但我在订阅设备时收到此错误通知:

subscription  error<CKError 0x1700581e0: "Not Authenticated" (9/1002); "This request requires an authenticated account"; Retry after 3.0 seconds>

这没关系,但我的问题是如何在尝试运行CKSubscription代码之前检查设备是否登录到iCloud?

我真的很感谢你的帮助。

4 个答案:

答案 0 :(得分:9)

我最终在谷歌搜索“cloudkit此请求需要经过身份验证的帐户”。对我来说问题是我没有在模拟器中登录到iCloud。我有点假设我会自动运行我的开发Apple ID ...

答案 1 :(得分:0)

您可以在容器上使用accountStatusWithCompletionHandler方法。如果要使用订阅,则应返回.hashValue为1

的状态
    container = CKContainer.defaultContainer()
    container.accountStatusWithCompletionHandler({status, error in
        if (error != nil) { NSLog("Error = \(error.description)")}
        NSLog("Account status = \(status.hashValue) (0=CouldNotDetermine/1=Available/2=Restricted/3=NoAccount)")
    })

答案 2 :(得分:0)

这是Objective-C版本:

     CKContainer *container = [CKContainer defaultContainer];
    [container accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError *error)
    {
        if (((accountStatus == 3) || (accountStatus == 2)) && (!error))
        {
            NSLog(@" no error but status %ld",accountStatus);


//            typedef NS_ENUM(NSInteger, CKAccountStatus) {
//                /* An error occurred when getting the account status, consult the corresponding NSError */
//                CKAccountStatusCouldNotDetermine                   = 0,
//                /* The iCloud account credentials are available for this application */
//                CKAccountStatusAvailable                           = 1,
//                /* Parental Controls / Device Management has denied access to iCloud account credentials */
//                CKAccountStatusRestricted                          = 2,
//                /* No iCloud account is logged in on this device */
//                CKAccountStatusNoAccount                           = 3,
//            
//        }
        }


        if (error)
        {
             NSLog(@" accountStatus error %@",error);

        }
    } ];

答案 3 :(得分:0)

在swift 2中,你将状态与

进行比较
case CouldNotDetermine
case Available
case Restricted
case NoAccount