标签: cloudkit

CloudKit仪表板权限不足

我无法访问CloudKit仪表板https://icloud.developer.apple.com/dashboard/.Insufficient privileges You Apple ID does not have the required privileges to access any iCloud Container. Please contact your team administrator for the necessary privileges.即使我是唯一的团队成员,我仍然会收到错误我收到此错误.有关如何解决此问题的任何想法?

itunesconnect ios icloud cloudkit

2
推荐指数
1
解决办法
2353
查看次数

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

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

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

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

我真的很感谢你的帮助.

xcode objective-c ios cloudkit

2
推荐指数
1
解决办法
2359
查看次数

iOS swift:使用coredata(cloudkit)存储缓存

我正在学习使用cloudkit来保存和获取记录,但我对将缓存保存到coredata感到困惑.

例如,我使用tableview获取了几条记录并显示了这种记录类型的一些属性(比如A,C和F).当我单击一个单元格时,它将显示此记录的详细信息(此记录的所有属性:ABCDEF,但不包括引用属性记录).当我第一次拿到记录时,我想知道是否应将这些东西存入coredata:"ACF和recordID"?当用户点击查看详细信息时,我使用recordID再次获取?关键是我应该使用什么属性类型来存储CKRecordID/CKRecord?

我知道我可以将像image这样的东西存储到本地缓存文件中(也令人困惑..),但它不是持久存储吗?而且我没有直接存储记录的所有属性的原因是因为这个记录是一个"邀请",只有当用户选择接受它时,它才会下载所有属性,包括一些引用类型属性.

任何帮助都会有所帮助,谢谢!

core-data ios swift cloudkit

2
推荐指数
1
解决办法
1822
查看次数

CKQueryOperation错误:此操作受速率限制

在Apple审核期间,只有一次error 1298: This operation has been rate limited下载记录时CKQueryOperation,客户端收到来自CloudKit的错误.我该如何解决这个问题?

这是代码,没什么特别的:

let query = CKQuery(recordType: "Movie", predicate: NSPredicate(format: "creationDate > %@", d!))
let qo = CKQueryOperation(query: query)
let fb: (CKRecord!) -> () = {record in

    temporaryContext.performBlockAndWait({

        let fr = NSFetchRequest(entityName: "Movie")
        fr.predicate = NSPredicate(format: "recordName = %@", record.recordID.recordName)

        let a = temporaryContext.executeFetchRequest(fr, error: nil) as! [Movie]
        if a.count == 0 {

            let m = NSEntityDescription.insertNewObjectForEntityForName("Movie", inManagedObjectContext: temporaryContext) as! Movie
            m.title = record.valueForKey("title") as! String
            m.image = (record.valueForKey("image") as! …
Run Code Online (Sandbox Code Playgroud)

ios cloudkit ckquery

2
推荐指数
1
解决办法
1054
查看次数

CloudKit ___recordID未标记为可查询

我尝试以编程方式将数据保存到CloudKit,但是当我从CloudKit获取数据时出现错误

我收到了一个错误

> <CKError 0x608000052060: "Invalid Arguments" (12/2015); server message
> = "Field '___recordID' is not marked queryable"; uuid = 19F1E556-5384-42FD-8F65-9FD8A9C9523D; container ID =
> "iCloud.com.mywebsite.CloudDemo">
Run Code Online (Sandbox Code Playgroud)

这是我的代码.

func saveNewRecordTypeToCloud()  {
        // Prepare the record to save
        var record = CKRecord(recordType: "Members")
        record.setValue("test", forKey: "name")
        record.setValue("test", forKey: "surname")

        // Get iCloud Database
        let cloudContainer = CKContainer.defaultContainer()
        let database = CKContainer.defaultContainer().privateCloudDatabase

        // Save the record to iCloud
        database.saveRecord(record, completionHandler: { (record:CKRecord!, error:NSError! ) in
            if error != nil {
                NSLog(error.localizedDescription)
            } else …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c swift cloudkit

2
推荐指数
1
解决办法
900
查看次数

CloudKit,检索用户信息,例如注册时的名字

在我的应用程序上签名时,我想从iCloud中检索信息,例如名字,然后我想将它存储在我自己的云套件数据库中.如何从iCloud访问用户信息,而无需向用户自己询问这些相关字段?

swift cloudkit

2
推荐指数
1
解决办法
2821
查看次数

使用CKPartialErrorsByItemIDKey恢复错误

获取后.partialFailure CKError,我一直在尝试恢复ID和相应的错误,但是我遇到了问题...

现在我正在使用:

print("pE \(error.partialErrorsByItemID) or \(error.userInfo[CKPartialErrorsByItemIDKey])")

    if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? [NSObject: Error] {

print("partialErrors #\(dictionary.count)")    // <-- Not reaching this...
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法:

if let dictionary = error.partialErrorsByItemID {   // <-- error.pEBIID returns nil
Run Code Online (Sandbox Code Playgroud)

和:

if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? [CKRecord : CKError /* and Error */] {    // <-- but neither triggers the if-let
Run Code Online (Sandbox Code Playgroud)

第一次打印在控制台中显示了这一点(我将打开的标签向左切换,以便它们不会被解释为html):

pE nil or Optional({
">CKRecordID: 0x7b95ace0; CentralTableView:(_defaultZone:__defaultOwner__)>" = ">CKError 0x7a7e4cf0: \"Server Record Changed\" (14/2004); server message = \"record to insert …
Run Code Online (Sandbox Code Playgroud)

error-handling ios swift cloudkit ckerror

2
推荐指数
1
解决办法
364
查看次数

保存CKDatabaseSubscription时获得“用户设置拒绝了CloudKit访问”

我正在尝试设置CloudKit CKDatabaseSubscription并尝试保存它,出现以下错误:

'“未认证”(9/1002); “用户设置拒绝了CloudKit访问”;3.0秒后重试

我可以通过应用程序在私有数据库上创建记录,没有任何问题,但是订阅将无法保存。

<snip>
       container = CKContainer(identifier: "<valid identifier>")
       publicDB = container.publicCloudDatabase
       privateDB = container.privateCloudDatabase
       createSubscriptions()
</snip>

   func createSubscriptions()
   {
     let sub = CKDatabaseSubscription(subscriptionID: "main")
     let noteInfo = CKNotificationInfo()
     noteInfo.shouldSendContentAvailable = true
     sub.notificationInfo = noteInfo

     let op = CKModifySubscriptionsOperation(subscriptionsToSave: [sub], subscriptionIDsToDelete: nil)
     op.qualityOfService = .utility
     op.modifySubscriptionsCompletionBlock = {(subscriptions, name, error) in
                print ("error-\(error)")
            }
     privateDB.add(op)
   }
Run Code Online (Sandbox Code Playgroud)

因此,在上面的代码中,从块中的打印内容打印出了以上错误。一切都在范围内,可以正常编译,用户可以登录iCloud等。在模拟器和设备上均发生。

CloudKit订阅是否需要ASPN证书?还是我犯了一些错误?

cocoa-touch ios swift cloudkit

2
推荐指数
1
解决办法
844
查看次数

查询系统字段时出现CKError:拒绝了“未知字段'createdAt'”

我正在createdAt像这样对系统字段进行排序:

query.sortDescriptors = [NSSortDescriptor(key: "createdAt", ascending: false)]
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

CKError 0x1c4447fb0:“无效的参数”(12/2018); 服务器消息=“未知字段'createdAt'”;uuid = 9C450848-2449-4892-93BC-C46363203042; 容器ID =“ ...

我可以查询和排序以这种方式创建的字段。与系统字段有什么不同?该字段的索引是可排序和可查询的。

cloudkit ckquery

2
推荐指数
1
解决办法
314
查看次数

未下载CloudKit公共记录和更改

未下载CloudKit公共记录和更改

我有一个CloudKit应用,其中包含公共区域和自定义私有区域的记录。我似乎已将更改令牌过程用于自定义私有区域,但是无法使公共数据正常工作。除了公用/专用名称和公用的默认区域外,我使用的代码对于两个数据库都是相同的。我知道订阅不适用于默认区域,但是我找不到任何引用来限制公共数据的更改令牌。Xcode 10.1,iOS 12.0

我创建我的PubicData类并对其进行初始化:

    var publicDatabase : CKDatabase!

init() {
    let kAppDelegate = UIApplication.shared.delegate as! AppDelegate
    context = kAppDelegate.context
    let container = CKContainer.default()
    publicDatabase = container.publicCloudDatabase
}//init
Run Code Online (Sandbox Code Playgroud)

从应用程序入口场景调用的下载功能-表格视图:

func downloadPublicUpdates(finishClosure : @ escaping(UIBackgroundFetchResult) -> Void) {

    var listRecordsUpdated : [CKRecord] = []
    var listRecordsDeleted : [String : String] = [:]

    var publicChangeToken : CKServerChangeToken!
    var publicChangeZoneToken : CKServerChangeToken!

    let userSettings = UserDefaults.standard

    if let data = userSettings.value(forKey: "publicChangeToken") as? Data {
        if let token = try? NSKeyedUnarchiver.unarchivedObject(ofClass : CKServerChangeToken.self, …
Run Code Online (Sandbox Code Playgroud)

xcode ios cloudkit

2
推荐指数
1
解决办法
186
查看次数