Сбой iOS 13.1 в AVAudio Player - программирование
Подтвердить что ты не робот

Сбой 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.

4b9b3361

Ответ 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!

постскриптум ребята писали про проблему с темами но это дело проще