Поддерживается ли вход через Apple (SIWA) в симуляторе tvOS?

Я включил права для SIWA в цели проекта. И те же шаги отлично работают в симуляторе iOS.

Я столкнулся со следующей проблемой при попытке войти в систему с помощью Apple (SIWA) в симуляторе tvOS.

Действия по воспроизведению проблемы:

  1. При запросе SIWA при нажатии настраиваемой кнопки отображается полноэкранный режим для пароля Apple ID (не было предоставлено никакой возможности для выбора ретрансляции электронной почты) (снимок экрана прилагается к последнему для справки)
  2. После ввода правильного пароля я получаю обратный вызов в делегате ошибки.

Ошибка в делегате ошибки:

error Error Domain = com.apple.AuthenticationServices.AuthorizationError Code = 1000 "(null)"

Ниже прилагается фрагмент кода для всего процесса.

Я выполнил все шаги, необходимые в соответствии с официальным документом SIWA для iOS.

К вашему сведению: тот же код работает для меня для iOS, но не для tvOS. Я тестировал SIWA в симуляторе iPhone во время разработки и сейчас пробую то же самое с tvOS, но он не работает.

Ниже мой код.

Здесь функция setup () вызывается для viewDidLoad ViewController.

private func setup() {  
    if #available(tvOS 13.0, *) {  

        let appleIDProvider = ASAuthorizationAppleIDProvider()  

        appleIDProvider.getCredentialState(forUserID: "myapp.identifiers.currentUserIdentifier") { (credential, error) in  

            switch credential {  
            case .authorized:  
                print("authorized for sign in")  
                break  
            case .notFound, .revoked, .transferred:  
                print("ready to logout")  
                break  
            default:  
                print("Apple sign in credential state unidentified")  
            }  

        }  
    }  
}  

Внутри метода действия пользовательской кнопки SIWA мой код выглядит так:

   if #available(tvOS 13.0, *) {  
        let appleIDProvider = ASAuthorizationAppleIDProvider()  
        let request = appleIDProvider.createRequest()  
        request.requestedScopes = [.fullName, .email]  

        let authorizationController = ASAuthorizationController(authorizationRequests: [request])  
        authorizationController.delegate = self  
        authorizationController.presentationContextProvider = self  
        authorizationController.performRequests()  
    } 

Якорь презентации устанавливается в расширении ViewController.

extension ENWelcomeScreenViewController: ASAuthorizationControllerPresentationContextProviding {
    @available(tvOS 13.0, *)
    func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
        return self.view.window!
    }
}  

И, наконец, делегат ошибки, в котором я получаю обратный вызов.

 /// - Tag: did_complete_error  
    @available(tvOS 13.0, *)  
    func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {  
        print("error \(error)")  
    }  

Вот как это выглядит, когда пользователь нажимает кнопку SIWA.

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

Любые лиды высоко ценятся.


person Vijay Sanghavi    schedule 14.06.2020    source источник


Ответы (2)


Ответ на мой вопрос - большое нет !!

ВЫВОДЫ:

  1. Мы не можем проверить вход с помощью Apple в симуляторе tvOS.
  2. Когда я попытался запустить то же самое на Apple TV, это сработало.
  3. После ввода учетных данных Apple ID для входа в мое приложение я получаю push-уведомление на устройстве, на котором я вошел в систему с тем же идентификатором Apple.
  4. При нажатии на полученное push-уведомление ничего не происходит.

На форуме Apple я получил аналогичный ответ от их группы инженеров.

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

Вот снимок экрана Apple TV.

person Vijay Sanghavi    schedule 25.06.2020

Была такая же проблема. Простое решение - понимать термин «рядом» более чем буквально. При нажатии на уведомление держите телефон как можно ближе к Apple TV, и все сотворит чудеса.

person edsa-steffen    schedule 29.09.2020