Сбой iOS 13.1 в AVAudio Player
Мое приложение падает на iOS 13.1, когда я обнаружил проблему, а затем обнаружил, что приложение падает из-за AVAudioPlayer
.
Ниже приведены настройки моего плеера.
if let wrongURL = Bundle.main.url(forResource: "wrongAudio", withExtension: "mp3")
{
do {
wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)
wrongMusicPlayer.prepareToPlay()
}
catch
{
print(error.localizedDescription)
}
}
Здесь все найдено правильно, но происходит сбой, когда AVAudioPlayer
пытается инициализироваться с URL
.
Ответы
Ответ 1
Я обнаружил проблему сбоя в AVAudioPlayer
с iOS 13.1.
Вот решение
Почему мой AVAudioPlayer
сбой? потому что
Я инициализирую AVAudioPlayer
как
var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()
и затем я пытаюсь переназначить wrongMusicPlayer
, как показано ниже
wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)
И мое приложение зависает.
Решение
Если вы инициализируете AVAudioPlayer
как var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()
ИЛИ wrongMusicPlayer = AVAudioPlayer()
любым способом, удалите его и просто объявите как var wrongMusicPlayer: AVAudioPlayer!
.
Ответ 2
Та же проблема происходит с кодом Objective C.
Ранее musicPlayer = [[AVAudioPlayer alloc] init];
будет работать, но теперь вызовет сбой в iOS13. Сбой происходит позже при использовании одного из других методов инициализации, таких как initWithContentsOfURL.
Удаление [[AVAudioPlayer alloc] init] устраняет проблему.
Ответ 3
Танки, Ракеш!
Это удивительно!
Моя игра сломалась на iPhone с iOS 13.1.2. Но в симуляторе это работает. На физическом устройстве - нет!
Я читаю много форумов, онлайн-книг, документов и т.д.
И это небольшое исправление действительно помогло мне:
Я изменил var player = AVAudioPlayer()
на var player: AVAudioPlayer!
постскриптум ребята писали про проблему с темами но это дело проще