cognitoSync数据被擦除

时间:2016-07-22 13:56:27

标签: amazon-web-services amazon-cognito

我的应用使用AWS Cognito存储用户首选项。

用户已通过身份验证并存储其首选项。 用户注销时,他们的Cognito数据集存在于AWS服务器上

但是,当应用程序首次同步时,当他们重新登录所有数据集字段时会被擦除。

dataset.synchronize()返回时,AWS服务器上的数据已被删除。我做了什么错误的步骤?

var cognitoDS:AWSCognitoDataset?
…

func getCognitoDataset() -> AWSCognitoDataset? {

    if cognitoDS == nil {
        if let cognitoSync = AWSCognito.defaultCognito() {
            if let cognitoDS = cognitoSync.openOrCreateDataset(Constants.CognitoUserDataset) {
                self.cognitoDS = cognitoDS
            } else {
                print("openOrCreateDataset() returned nil")
            }

        } else {
            print("cognitoSync not found")
        }
    }
    return cognitoDS
}

func synchronizeCognitoDS() -> AWSTask {
    if let dataset = getCognitoDataset() {
        return dataset.synchronize().continueWithBlock { task in
            if let error = task.error {
                NSLog("Error in sync: %@", error.localizedDescription)
                return task
            }

            if task.completed {
                NSLog("Sync successful")
            }

            return task
        }
    }
    return AWSTask(error:NSError(domain:"Juno", code:3030, userInfo:nil))
}

1 个答案:

答案 0 :(得分:0)

你的意思是你的用户有数据同步,但是当他们调用同步时,他们什么也得不回来?我最好的猜测是您使用未经身份验证的用户,并且设备不同或身份已更改。 Cognito无法确定数据最终属于用户,除非他们经过身份验证,因此如果它是不同的设备或身份已更改(卸载/重新安装,本地存储已清除等等),则数据获取丢失。

您是否可以通过注销并重新登录来澄清您的意思?这有助于缩小范围并确认/反驳我的上述想法。