Не удалось получить запись с производственного сервера icloud - PullRequest
0 голосов
/ 27 марта 2020

Я пытался сохранить запись в личной базе данных пользователя iCloud и в следующий раз, если эта запись найдена, сохранить ее на сервере. Сейчас в разработке icloud все работает нормально, но при переходе на производство ничего не работает. Я развернул схему разработки icloud в продукте, а затем попытался извлечь запись с идентификатором записи, получив следующую ошибку:

<CKError 0x28327c5a0: "Unknown Item" (11/2003); server message = "Record not found";

, поэтому я попытался создать ее, но ошибка ниже:

Cannot create new type LoginDetail in production schema 

Ниже приведен код, который я делаю:

 func anonymousSignIn(vc : UIViewController, lat : String, long : String) {
        AppLoader.showLoader()
        let artworkRecordID : CKRecord.ID = CKRecord.ID(recordName: "MyWord")
        let logRecord : CKRecord = CKRecord(recordType: "LoginDetail", recordID: artworkRecordID)
        let publicDatabase : CKDatabase = CKContainer(identifier: "iCloud.com.myword.com").privateCloudDatabase

        publicDatabase.fetch(withRecordID: artworkRecordID) { (artworkRecord, error) in
            if (error != nil){
                Utils.printDebug(error?.localizedDescription ?? "")
                if let errorMsg = error?.localizedDescription, (errorMsg == "This request requires an authenticated account") || (errorMsg == "This operation has been rate limited") || (errorMsg == "Received a didCompleteWithError without receiving a response from the server"){
                    DispatchQueue.main.async {
                        Utils.showAlert(message: "You need to log into iCloud.", vc: vc)
                        AppLoader.hideLoader()
                    }
                }else{
                    self.generateAndSyncIdWithCloud(logRecord: logRecord, publicDatabase: publicDatabase, lat: lat, long: long)
                }
            }else{
                if let record = artworkRecord {
                    let vendorId = record["login_device_token"]
                    Utils.printDebug(vendorId as? String ?? "")
                    if let venderId = vendorId as? String{
                        Utils.storeUniqueID(uuid : venderId)
                        self.sigInApi(lat: lat, long: long)
                    }else {
                        AppLoader.hideLoader()
                        Utils.showAlert1(message: "venderId : \(record)")

                    }
                }else{
                    self.generateAndSyncIdWithCloud(logRecord: logRecord, publicDatabase: publicDatabase, lat: lat, long: long)
                }
            }
        }
    }

    //MARK: - Save record to user's icloud account - 
    func generateAndSyncIdWithCloud(logRecord : CKRecord,publicDatabase : CKDatabase, lat : String, long : String ) {
        guard let venderId = UIDevice().identifierForVendor?.uuidString else {return}
        logRecord["login_device_token"] = venderId
        Utils.storeUniqueID(uuid : venderId)
        Utils.printDebug(venderId )
        publicDatabase.save(logRecord) { (record, error) in

            if let error = error{
                Utils.printDebug(error.localizedDescription)
                AppLoader.hideLoader()

            }else{
                Utils.printDebug("record saved successfully")
                self.sigInApi(lat: lat, long: long)
            }
        }
    }

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...