gpt4 book ai didi

ios - 用户未登录时,用户设置拒绝了错误 CloudKit 访问

转载 作者:行者123 更新时间:2023-12-01 16:33:27 26 4
gpt4 key购买 nike

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

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 我得到这个错误:“错误 CloudKit 访问被用户设置拒绝”

另一方面,使用相同的设备,我可以毫无问题地从公共(public)数据库中获取记录。

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

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

我会非常感谢你的帮助。

最佳答案

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

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

关于ios - 用户未登录时,用户设置拒绝了错误 CloudKit 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com