iOS 13 Проблема: AppDelegate не запускает возврат фоновой музыки, несмотря на то, что не поддерживает несколько окон - PullRequest
3 голосов
/ 20 октября 2019

У меня есть приложение, созданное в Xcode до iOS 13. Приложение не поддерживает несколько окон. Несмотря на то, что ранее мы испытывали странности с AppDelegate, со времени выхода iOS 13 кажется, что странностей стало больше, и я надеялся увидеть, испытывали ли другие что-то подобное.

В частности, если я войду в многозадачный режим (дважды нажмите на кнопку «Домой» на старых iPhone или проведу пальцем вверх от нижней части экрана и приостановим показ всех окон фонового приложения), а затем снова войду в мое приложение, кажется, что AppDelegate сработаетсоответствующим образом при отладке, но если оставить его собственным устройствам, музыка в моем приложении - которая обычно возвращается в applicationDidBecomeActive - не восстанавливается.

ОБНОВЛЕНО: это, в частности, похоже, связано с музыкой / звуком--iOS, кажется, берет любые плееры и устанавливает их в ноль, не позволяя мне остановить их. iOS также, кажется, игнорирует инструкции в AppDelegate для загрузки и воспроизведения музыки. Что за история здесь?

Я понимаю из этого поста: Методы делегирования приложения не вызываются в iOS 13 , поэтому важно либо не поддерживать несколько окон, либо управлять инструкциями, которые обычно называютсяв делегате приложения в новом делегате сцены;однако, это более важно, чем кажется, что я называю Scene Delegate? Есть ли другое объяснение этому поведению в iOS 13 или другое решение, которое я могу использовать?

Сводный код в AppDelegate:

func applicationDidBecomeActive(_ application: UIApplication)
{
...
// Check to see if there is secondary audio playing; if true, stop our audio and eliminate all queued up music
        if AVAudioSession.sharedInstance().secondaryAudioShouldBeSilencedHint
        {
            AssetsSounds.sharedInstance.bgmGamePlayer?.stop()
            AssetsSounds.sharedInstance.bgmGamePlayer = nil
            needToPlayGameMusic = false
            AssetsSounds.sharedInstance.bgmTitlePlayer?.stop()
            AssetsSounds.sharedInstance.bgmTitlePlayer = nil
            needToPlayTitleMusic = false
            ...
        }
        // if no secondary music, check to see if we need to restart any of the bgm players
        else if needToPlayGameMusic || needToPlayTitleMusic || needToPlayBonusLoop || needToPlayBonusLeadIn || needToPlayFiveMovesLeft
        {
            // play background music if it needs to be played
            if needToPlayTitleMusic
            {
                AssetsSounds.sharedInstance.bgmTitlePlayer?.play()
                needToPlayTitleMusic = false
            }

            // play game music if it needs to be played
            else if needToPlayGameMusic
            {
                AssetsSounds.sharedInstance.bgmGamePlayer?.play()
                needToPlayGameMusic = false
            }
            ...


    } // end else if
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...