我的应用使用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))
}
答案 0 :(得分:0)
你的意思是你的用户有数据同步,但是当他们调用同步时,他们什么也得不回来?我最好的猜测是您使用未经身份验证的用户,并且设备不同或身份已更改。 Cognito无法确定数据最终属于用户,除非他们经过身份验证,因此如果它是不同的设备或身份已更改(卸载/重新安装,本地存储已清除等等),则数据获取丢失。
您是否可以通过注销并重新登录来澄清您的意思?这有助于缩小范围并确认/反驳我的上述想法。