認証に AWS iOS SDK Cognito サービスを使用しています。私のシミュレータにはネットワーク接続がありません。アプリを実行するときにエラーを処理したいのですが、問題は AWSCognitoCredentialsProvider がエラーを返さないことです。ログに次のメッセージが表示されるので、エラーがあることがわかります。
ID の取得に失敗しました。エラーは [Error Domain=NSURLErrorDomain Code=-1005 "The operation could not be completed. (NSURLErrorDomain error -1005.)" です。
開始前にインターネット接続を確認するための回避策をコーディングできることはわかっていますが、たとえば、間違った AWSDynamoDBModel を使用して DynamoDB の行を削除しようとした場合など、SDK の他の領域でも同じ問題が発生しました。ログにエラーが表示されますが、task.error は nil として返されます。
エラーをチェックする必要がある別の領域はありますか?
Xcode 6 と AWS iOS SDK 2.0.12 を使用しています。問題を再現する唯一の方法は、AWS cognate をプロジェクトに追加し、ネットワークに接続していないときにアプリを実行することです。エラーが表示されるはずのスニペットを次に示しますが、エラーが返されません (task.error を探します)。
-(void)completeLogin:(NSDictionary *)logins {
BFTask *task;
if (self.provider == nil) {
task = [self initializeClients:logins];
}
else {
NSMutableDictionary *merge = [NSMutableDictionary dictionaryWithDictionary:self.provider.logins];
[merge addEntriesFromDictionary:logins];
self.provider.logins = merge;
// Force a refresh of credentials to see if we need to merge
task = [self.provider refresh];
}
[task continueWithBlock:^id(BFTask *task) {
if (self.callback != nil) {
self.callback(task.error); //This is always nil
NSLog(@"callback set to nil in in completeLogin");
self.callback = nil;
}
return nil;
}];
}