我有兩個相關的問題。iOS AWS Cognito處理程序未被調用並返回錯誤的數據集值
問題一:剛剛接到Conflict Resolution Handler
和Dataset Merge Handler
工作。我已經多次閱讀了the documentation,但我根本沒有看到任何成功,而且文檔模糊不清。看起來塊處理程序似乎從來沒有被調用過。
如果我正宗通過Facebook,它需要我以前Unauthenticated
的身份和其合併到Facebook的身份。不過,現在我已經表示,Facebook的身份兩個相互矛盾的數據集條目:
下面是我在做什麼的例子:
- (void)synchronizeCognito
{
// Initialize the Cognito Sync client
AWSCognito *syncClient = [AWSCognito defaultCognito];
AWSCognitoDataset *dataset = [syncClient openOrCreateDataset:@"testing"];
// Create a record in a dataset and synchronize with the server
[dataset setString:identifier forKey:@"test1"];
[dataset setString:token forKey:@"test2"];
syncClient.conflictHandler = ^AWSCognitoResolvedConflict* (NSString *datasetName, AWSCognitoConflict *conflict) {
NSLog(@"%@", dataset);
// always choose local changes
return [conflict resolveWithRemoteRecord];
};
dataset.conflictHandler = ^AWSCognitoResolvedConflict* (NSString *datasetName, AWSCognitoConflict *conflict) {
// override and always choose remote changes
return [conflict resolveWithRemoteRecord];
};
syncClient.datasetMergedHandler = ^(NSString *datasetName, NSArray *datasets) {
// Blindly delete the datasets
for (NSString *name in datasets) {
AWSCognitoDataset *merged = [[AWSCognito defaultCognito] openOrCreateDataset:name];
[merged clear];
[merged synchronize];
}
};
// synchronize the data
[dataset synchronize];
}
問題二: 再者,我通過facebook驗證我的unauthenticated
身份,並將它們合併。我看到:identity changed from us-east-1:b0a5b4c4-8d7b-4564-9f92-5ea49bbfdcdc to us-east-1:f0bea5d1-a888-4f8f-8957-6589d9700c1e
但如果我這樣做:
- (NSString *)getTest
{
AWSCognitoDataset *dataset = [syncClient openOrCreateDataset:@"testing"];
return [dataset stringForKey:@"test1"];
}
從舊標識的數據存儲,而不是新的Facebook身份的數據存儲,即使他們現在已經切換返回的test1的值數據。我懷疑是因爲上面沒有提到衝突或合併處理。
啊,這是有道理的。好吧,我會重新審視我的流程,看看我能否弄清楚。謝謝。我可能有更多的問題,但我們會看到。 – sudo
數據集必須在身份更改後手動合併。那麼Cognito究竟幹嘛呢? – Nick