AWSers,
Я использую AWS для усиления (Cognito) и хранилища S3 в моем приложении IOS swift. Однако у меня возникают проблемы с загрузкой файлов на S3, если приложение какое-то время находилось в фоновом режиме, мое приложение не может получить идентификационный идентификатор и, следовательно, не может завершить загрузку.
Воспроизвести
Шаги для воспроизведения поведения:
Если пользователь должен был войти в систему и дать приложению подождать в фоновом режиме в течение нескольких минут (например, 5 минут), пользователь теперь не может загрузить файлы на S3, получая следующую ошибку:
Error: Obtaining an identity id in another thread failed or didn't complete within 5 seconds.
Error: The operation couldn’t be completed. (com.amazonaws.AWSCognitoIdentityErrorDomain error 8.)
В результате пользователю теперь необходимо выйти и снова войти в систему, чтобы они могли продолжить загрузку видеофайлов в s3.
Вот что у меня есть в AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// AWS Id config
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,identityPoolId:config_identityID)
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
Я использую AWS Drop-in Auth для входа в систему:
func showSignIn() {
// Drop in Auth that handles sign in for users
AWSMobileClient.sharedInstance()
.showSignIn(navigationController: self.navigationController!,
signInUIOptions: SignInUIOptions(
canCancel: false,
logoImage: UIImage(named: "PMA background"),
backgroundColor: UIColor.black)) { (signInState, error) in
//handle results and errors
if let signInState = signInState {
print("logged in!", signInState)
self.getCredentials()
} else {
print("error logging in: \(error!.localizedDescription)")
}
}
}
Я ожидаю, что мобильный клиент AWS и AWStransferUtility будут использовать мой токен обновления для обновления моего токена доступа, но это не так.