我想建立一个简单的CKSubscription通知我一个recordType被创建,怎么样?
publish-subscribe push-notification ios8 cloudkit cksubscription
我正在使用CKFetchRecordChangesOperation和CKFetchRecordsChangeToken来获取更改,它告诉我"AppDefaultZone不支持同步语义".
这是违规代码:
- (void)downloadServerChangesWithCompletionBlock:(void (^)(NSError *error))completionBlock
{
// Prepare to fetch remote changes
CKDatabase *database = [CKContainer defaultContainer].privateCloudDatabase;
CKRecordZoneID *zoneID = [[CKRecordZoneID alloc] initWithZoneName:CKRecordZoneDefaultName ownerName:CKOwnerDefaultName];
// Initialize fetch record changes operation
CKFetchRecordChangesOperation *fetchRecordChangesOperation = [[CKFetchRecordChangesOperation alloc] initWithRecordZoneID:zoneID previousServerChangeToken:[self changeToken]];
fetchRecordChangesOperation.recordChangedBlock = ^(CKRecord *record) {
[self performRecordChange:record];
};
fetchRecordChangesOperation.recordWithIDWasDeletedBlock = ^(CKRecordID *recordID){
[self performRecordDeletion:recordID];
};
fetchRecordChangesOperation.fetchRecordChangesCompletionBlock = ^(CKServerChangeToken *serverChangeToken, NSData *clientChangeTokenData, NSError *error) {
if (error) {
completionBlock(error);
} else {
[self setChangeToken:serverChangeToken];
completionBlock(nil);
}
};
// Perform the operation
[database …Run Code Online (Sandbox Code Playgroud) 当我想使用Cloudkit时,我发现我无法通过Cloudkit仪表板管理数据.该页面给我一条消息"意外的服务器错误".我怎么解决这个问题?这里显示了此错误截图.

[更新]
完整错误日志:
ERROR TITLE意外的服务器错误.
真的很致命
TYPE服务器
应用程序名称仪表板
建造编号15BDev63
时间周二2015年3月24日08:43:06 GMT + 0100(CET)(1427182986565)
HOST icloud.developer.apple.com
用户代理Mozilla/5.0(Macintosh; Intel Mac OS X 10_10_2)AppleWebKit/600.4.10(KHTML,类似Gecko)版本/ 8.0.4 Safari/600.4.10
环境未知
最近的日志留言星期二,2015年3月24日7时43分06秒格林尼治标准时间:信息: - >请求1:GET到 https://ckdashboardws.icloud.apple.com/bootstrap?request_uuid=e7516168-dcfe-4ed5-aa17-dc3a5a97ffb6,headers:Content-Type = text/plain,body:(empty)< - 响应1:500(294ms),标题:Cache-Control = no-cache,no-store,private,Content-Type = application/json ; 字符集= UTF-8,X-苹果-请求- UUID = f05681b8-1f1c-4af5-a534-5f6531c5a463体:{ "errorReason": "内部服务器错误", "错误码" 500 "requestUUID":"f05681b8-1f1c -4af5-a534-5f6531c5a463"}星期二,2015年3月24日07:43:06 GMT:DEBUG:CloudKit:调用ErrorCatcher对话框.星期二,2015年3月24日7时43分06秒GMT:DEBUG:SC.Module:试图加载'cloudkit/error_catcher'星期二,2015年3月24日7时43分06秒GMT:DEBUG:SC.Module:模块'cloudkit/error_catcher'没有加载,现在加载.星期二,2015年3月24日7时43分06秒格林尼治标准时间:DEBUG:SC.Module:在'cloudkit/error_catcher'加载CSS文件- >"/applications/dashboard/15BDev63/cloudkit/error_catcher/15BDev63/en-us/stylesheet.css '星期二,2015年3月24日07:43:06 GMT:DEBUG:SC.Module:在'cloudkit/error_catcher'中加载JavaScript文件 - >'/ applications/dashboard/15BDev63/cloudkit/error_catcher/15BDev63/en-us/javascript. js'Tue,2015年3月24日07:43:06 GMT:DEBUG:SC.Module:模块'cloudkit/error_catcher'已完成加载.星期二,2015年3月24日07:43:06 GMT:DEBUG:SC.Module:评估和调用'cloudkit/error_catcher'的回调.星期二,2015年3月24日07:43:06 GMT:DEBUG:SC.Module:模块'cloudkit/error_catcher'已完成加载,调用回调.
从CloudKit加载项目时,我想按创建日期订购结果.我相信现在它正在按记录的第一个属性进行排序.
func loadItems() {
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Items", predicate: predicate)
db.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in
if error != nil {
println(error.localizedDescription)
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
items = results as [CKRecord]
self.tableView.reloadData()
println("items: \(items)")
}
}
}
Run Code Online (Sandbox Code Playgroud) CloudKit中有三个默认安全角色:
还有三个权限:
这些安全角色和权限如何工作?
以下是我希望通过对安全角色的解释来回答的一些问题的示例:
我正在尝试保存记录CloudKit但是我从cloudkit中收到以下错误:
error saving record este es error: Error saving record <CKRecordID: 0x7fef15b5d2a0; 2:(_defaultZone:__defaultOwner__)> to server: WRITE operation not permitted
Run Code Online (Sandbox Code Playgroud)
以下是我试图保存记录的方法:
[publicDatabase saveRecord:recordContent completionHandler:^(CKRecord *record, NSError *error){
if (!error)
{
NSLog(@"saved!!!");
}
else
{
if ([[error.userInfo valueForKey:@"ErrorDescription"] isEqualToString:@"record to insert already exists"])
{
NSLog(@"record already exist %@",[error.userInfo valueForKey:@"ErrorDescription"]);
}
NSLog(@"error saving record : %@",error.localizedDescription);
}
}];
Run Code Online (Sandbox Code Playgroud)
但之前我检查过cloudkit是否可用:
[myContainer accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError *error)
{
NSLog(@" no error but status %ld",accountStatus);
if (((accountStatus == 3) || (accountStatus == 2)) && (!error))
{
NSLog(@" …Run Code Online (Sandbox Code Playgroud) 我正在使用CloudKit编写Swift应用程序.当设备在CloudKit中修改记录时,我希望在其他设备的本地存储中更新相应的记录,而不显示推送通知.
我需要调用registerUserNotificationSettings的didFinishLaunchingWithOptions(这意味着用户必须接受我的应用程序的通知),即使我不打算显示任何推送通知?
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert, categories: nil))
Run Code Online (Sandbox Code Playgroud) 我试图在CloudKit中存储联系人组,如果我尝试创建一大组记录,CKReferenced到单个组记录,我会收到错误.
该限制似乎约为700左右的记录.
有没有其他人看到类似的结果,或者可以确认限制的存在(或不存在)?我无法在文档中找到任何内容,也无法通过Google找到任何内容.
注意:我已经将我提交的记录拆分为400或更少的批次,因为这似乎是一个硬限制.
iOS有一种方法可以通过iTunes向最终用户公开部分应用数据.
此外,应用程序可以在CloudKit中存储只能由应用程序本身访问的信息(可能不是应用程序作者,也不是最终用户自己)
如何检查上传到我的个人iCloud帐户的第三方应用程序的数据?
如何检查存储在应用程序容器中的数据的第三方应用程序的数据(存储视图中的"其他"分配)在我的本地设备上
编辑 -
所以我想要查看所有数据,而不仅仅是UIFileSharingEnabled何时启用.
我还想检查将添加到我帐户中的个人CKData(CKRecord).从理论上讲,如果我获得了开发人员的许可,我会导航到https://icloud.developer.apple.com/dashboard/并在那里进行检查.
我正在为我的核心数据应用程序使用 NSPersistentCloudKitContainer。在测试期间,我检查了设备上所做的更改是否在几秒钟内同步到 CloudKit。
但是,当我在设备上禁用 iCloud 然后立即重新启用时,设备上的所有数据都消失了。我检查我的私有数据库中的数据是否仍然存在于 CloudKit 上。CloudKit 上的数据同步回我的设备花了超过 1 天的时间。
这会在用户更换设备并看到他们的数据一开始消失时引起用户的困惑。问题:如何控制 CloudKit 上的数据同步回我的设备的速度?
cloudkit ×10
ios ×6
icloud ×3
swift ×2
ckrecord ×1
ckreference ×1
cocoa ×1
core-data ×1
ios13 ×1
ios8 ×1
iphone ×1
objective-c ×1
permissions ×1
privacy ×1
security ×1