Mobile Hub を初めて使用しようとしています。サンプル アプリを作成し、ユーザーは Facebook からのみサインインします。私の主な問題は
- これが初めてのユーザーログインであるか、以前に存在したかを確認する方法
- データを AWS cognito データセットに同期する方法
最初の問題を解決するために、ユーザーデータセットが空であるかどうかを確認するこのソリューションを思いつきました。これは、ユーザーが初めて参加したときです。
アプリデリゲートでそれを行うには、didFinishLaunchingWithOptions:
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
initWithRegionType:AWSRegionUSEast1
identityPoolId:@"us-east-1:pool id is here"];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
そして後で私はこれをやろうとしています:
AWSCognito *syncClient = [AWSCognito defaultCognito];
// Create a record in a dataset and synchronize with the server
AWSCognitoDataset *dataset = [syncClient openOrCreateDataset:@"Sample"];
[dataset setString:@"test2" forKey:@"test"];
[[dataset synchronize] continueWithBlock:^id(AWSTask *task) {
// Your handler code here
return nil;
}];
[dataset synchronize];
サーバー上にユーザーのデータセットがありません。このデータセットを作成しようとしています。しかし、問題は [AWSCognito defaultCognito] が null を返すことです。ドキュメントを確認したところ、次のように書かれています。
シングルトン サービス クライアントを返します。シングルトン オブジェクトが存在しない場合、SDK は [AWSServiceManager defaultServiceManager] からの defaultServiceConfiguration を使用してデフォルト サービス クライアントをインスタンス化します。このオブジェクトへの参照は SDK によって保持されるため、手動で保持する必要はありません。認証情報プロバイダーが AWSCognitoCredentials プロバイダーのインスタンスでない場合は、nil を返します。
何が欠けているのかわかりません。このシングルトンを呼び出すと、null が返されるのはなぜですか。
認証情報プロバイダーが AWSCognitoCredentials プロバイダーのインスタンスであるかどうかを確認するにはどうすればよいですか?
Cognito サービスの ID ブラウザーでチェックインしました。新しい ID が作成されますが、データセットがありません。ロールと IAM に関連するものでしょうか?