Зарегистрировать устройство в Cognito при входе в систему

#ios #swift #amazon-web-services #amazon-cognito

#iOS #swift #amazon-веб-сервисы #amazon-cognito

Вопрос:

Я пытаюсь зарегистрировать устройство в Cognito при входе в наше приложение для iOS с помощью AWS Mobile SDK. Я ссылаюсь на сообщение в блоге AWS об отслеживании и запоминании устройств с использованием Amazon Cognito в ваших пользовательских пулах, но я получаю нулевой результат, и устройство не отображается для пользователя в Cognito. Шаги, которые я выполнил, описаны в сообщении в блоге AWS и показаны ниже. Я также включил описание возврата null. Кто-нибудь может помочь мне понять, чего мне не хватает, или предложить другой способ попробовать.

 // User Sign In Functions
CognitoManager.shared.login(emailId, password: password, callback: { (success: Bool, error: NSError?) -> (Void) in
      if(success)
      {
        let lc = LicenseCheck()
        lc.getLicenseUserInfoAgain(_email: emailId)
        let response = CognitoManager.shared.registerUser?.updateDeviceStatus(true)
        print("response (response)")
      }
func updateDeviceStatus(_ email : String){
    let user = pool!.getUser(email)
    user.updateDeviceStatus(true)
    let deviceToken = UserDefaults.standard.value(forKey: LoggedInUser.shared.deviceToken) as! String
    let response = user.updateDeviceStatus(deviceToken, remembered: true)
    response.continueOnSuccessWith { (task :AWSTask<AWSCognitoIdentityUserUpdateDeviceStatusResponse>) -> Any? in
      guard task.error == nil else {
        print("Error")
        return nil
      }
      print("Success")
      return nil
    }
  } 

**// Return Value
response Optional(<AWSTask: 0x127644f50; completed = YES; cancelled = NO; faulted = YES; result = (null)>)**
  

введите описание изображения здесь
введите описание изображения здесь

Комментарии:

1. можете ли вы распечатать ошибку? print(task.error)

2. Ответ, который я получаю при вызове метода updateDeviceStatus, — это ответ <AWSTask: 0x12b31ddb0; завершено = НЕТ; отменено = НЕТ; ошибка = НЕТ;>. Я предполагаю, что блок continueWithSuccess не вызывается и не может перейти в этот блок кода и не может распечатать задачу.ошибка

3. не используйте continueWithSuccess, просто используйте continue, чтобы перехватить ошибку

4. task.error не является обязательным (домен ошибок = com.amazonaws. AWSCognitoIdentityProviderErrorDomain Code= 13 «(null)» userInfo={__type= InvalidParameterException, сообщение = 1 обнаружена ошибка проверки: значение ‘ZbDQMwP8AlqNAqRpM228gtorrvHCcIRNR3mxmS9SBvs=’ в ‘DeviceKey’ не удалось выполнить ограничение: участник должен удовлетворять шаблону регулярных выражений: [ w-] _[0-9a-f-] })

5. итак, ваш ключ устройства недействителен