У меня есть приложение, созданное в Xcode до iOS 13. Приложение не поддерживает несколько окон. Хотя мы и раньше сталкивались со странностями с AppDelegate, кажется, что с момента выпуска iOS 13 странностей стало больше, и я надеялся увидеть, испытывали ли другие нечто подобное.
В частности, если я вхожу в многозадачный режим (дважды нажмите кнопку «Домой» на старых iPhone или проведите пальцем вверх от нижней части экрана и приостановите отображение всех окон фоновых приложений), а затем повторно вхожу в свое приложение, AppDelegate, похоже, срабатывает соответствующим образом при отладке, но если оставленная на свое усмотрение музыка в моем приложении, которая обычно возвращается в applicationDidBecomeActive, не восстанавливается.
ОБНОВЛЕНО: похоже, это конкретно связано с музыкой / звуком - iOS, похоже, берет любых плееров и устанавливает их на ноль, не позволяя мне их останавливать. iOS также игнорирует инструкции в AppDelegate по загрузке и воспроизведению музыки. Что здесь за история?
Как я понял из этого сообщения: методы делегата приложения не вызываются в iOS 13 важно либо не поддерживать несколько окон, либо управлять инструкциями, которые традиционно вызываются в App Delegate в новом 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
...
}
applicationDidBecomeActive
- person Pranavan SP   schedule 14.11.2019