首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:当用户未登录时,用户设置拒绝CloudKit访问

错误:当用户未登录时,用户设置拒绝CloudKit访问
EN

Stack Overflow用户
提问于 2015-05-23 02:27:26
回答 1查看 1.7K关注 0票数 2

我正在尝试获取公共数据库中的更改通知:

代码语言:javascript
复制
CKServerChangeToken *token = [[cloudKitToken helper] getCloudKitToken];
CKFetchNotificationChangesOperation *op = [[CKFetchNotificationChangesOperation alloc]
                                           initWithPreviousServerChangeToken:token];
NSMutableArray *noteIds = [[NSMutableArray alloc] init];

op.notificationChangedBlock = ^(CKNotification *note) {
    CKNotificationID *noteId = note.notificationID;
    [noteIds addObject:noteId];

};

op.fetchNotificationChangesCompletionBlock = ^(CKServerChangeToken *token, NSError *error) {

    NSLog(@"error %@", error.localizedDescription);
};

[[CKContainer defaultContainer] addOperation:op];

但是当用户还没有登录到iCloud时,我会得到这样的错误:"error CloudKit access I by user settings“

通过另一只手,使用相同的设备,我可以毫无问题地从公共数据库中获取记录。

我试图用CKFetchNotificationChangesOperation做的是获取设备和cloudkit之间的增量。

你们中有谁知道当用户还没有登录到iCloud时,如何获取增量?这种情况下,提取记录是我唯一的选择吗?

我将非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-05-25 17:16:58

使用CKFetchNotificationChangesOperation,您可以检索自上次获取以来发送给您的所有通知。这些通知链接到您之前为设备创建的订阅。订阅链接到一个帐户。因此,您必须使用相同的帐户登录才能获取这些通知。

在您的情况下,使用CKFetchRecordChangesOperation可能更好。然后,您将能够仅查询自上一次查询以来的CloudKit更改。因为它只是一个使用“服务器更改令牌”的查询。第一次可以使用nil查询它,然后检索所有记录。您将得到一个“服务器更改令牌”作为返回。只需将其保存在设备上,下次启动应用程序时,只需使用该令牌即可。这样就不需要登录到iCloud了。(如果您的数据是公开的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30403527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档