2016-07-22 66 views
0

我的應用使用AWS Cognito存儲用戶首選項。正在擦除cognitoSync數據

用戶通過身份驗證並存儲他們的首選項。 當用戶註銷時,他們的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

你的意思是你的用戶有數據同步,但是當他們調用同步時,他們什麼都沒有回來?我最好的猜測是你使用的是未經身份驗證的用戶,並且設備不同或者身份已經改變。 Cognito無法確切地知道屬於用戶的數據,除非它們已通過身份驗證,所以如果它是不同的設備或身份已更改(卸載/重新安裝,本地存儲已清除等),數據就會丟失。

你能澄清你的意思嗎?註冊並重新登錄?這有助於縮小這一點,並確認/反駁我的上述想法。

+0

我所有的用戶都通過了身份驗證。沒有未經驗證的選項。我用auth0作爲我的Cognito「包裝器」,並調用A0Lock.clearSessions()來註銷。在此「登出」步驟後,數據仍存在於我的AWS服務器上。當用戶下次登錄時,它將被刪除。 – Carl

+0

而且您100%確定註銷和登錄時身份標識相同?你能證實嗎? –

+0

100%肯定。我在AWS上有一個應用程序實例,只有一個Cognito Identity Id,因此可以很容易地發現此區域中的任何異常情況。 – Carl