Как справиться с прерыванием Siri на Apple TV

Я ищу способ справиться с перебоями Сири на AppleTV.

Согласно этому руководству: https://developer.apple.com/documentation/avfoundation/avaudiosession/responding_to_audio_session_interruptions должна быть возможность получать уведомления о прерывании аудиосеанса, но, похоже, это не работает.

я пытался

NotificationCenter.default.addObserver(
        self,
        selector: #selector(handleInterruption(_:)),
        name: .AVAudioSessionInterruption,
        object: nil)

Обратный вызов никогда не происходит.

То, что я хотел бы, это приостановить видео, пока пользователь использует Siri, а затем возобновить, когда они закончили.

1 ответ

internal func registerToHandleInterruptions() {
    // When Siri interrupts playback a UIApplicationWillResignActive notification will be triggered
    NotificationCenter.default.addObserver(
        self,
        selector: #selector(handleInterruption(_:)),
        name: .UIApplicationWillResignActive,
        object: nil)
    // When Siri returns control to the app, a UIApplicationDidBecomeActive notification is fired
    NotificationCenter.default.addObserver(
        self,
        selector: #selector(handleActive(_:)),
        name: .UIApplicationDidBecomeActive,
        object: nil)
}

После долгих поисков я понял следующее:

  • На tvOS не похоже, что прерывание Siri запускает .AVAudioSessionInterruption уведомление, несмотря на то, что говорится в официальной документации. (устарел?, не относится к tvOS?)

  • Прерывание Siri фактически отправляет приложение в фоновый режим, поэтому можно реагировать, наблюдая .UIApplicationWillResignActive а также .UIApplicationDidBecomeActive вместо.

Другие вопросы по тегам