我有两个相关的问题。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