AVAudioPlayer 在 iOS 13 上崩溃
Posted
技术标签:
【中文标题】AVAudioPlayer 在 iOS 13 上崩溃【英文标题】:AVAudioPlayer crashes on iOS 13 【发布时间】:2019-09-28 08:44:20 【问题描述】:我用这段代码播放音频:
let url = Bundle.main.url(forResource: "0", withExtension: "mp3")!
do
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer.delegate = self
audioPlayer.prepareToPlay()
play(sender:AnyObject.self as AnyObject)
catch
在我的 iPhone X 和 iPhone 7 Plus 上的 ios 12.4.1 上,此代码可以正常工作。但在 iOS 13 和更新版本上,我的应用程序在这条线上崩溃 audioPlayer = try AVAudioPlayer(contentsOf: url)
并出现错误 Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)
。但是在我的带有 iOS 13 的模拟器 iPhone 11 Pro Max 上一切正常。为什么会发生这种情况以及如何解决?
【问题讨论】:
这个问题已经在这里解决了:***.com/questions/58110827/… 【参考方案1】:我也遇到了这个错误,你可能正在像这样实例化你的 audioPlayer:
let audioPlayer = AVAudioPlayer ()
尝试创建一个可选的:
let audioPlayer: AVAudioPlayer?
并在 viewDidLoad() 中完成您的代码:
let path = Bundle.main.path (forResource: "0", ofType: "mp3")!
let url = URL(fileURLWithPath: path)
do
audioPlayer = try AVAudioPlayer(contentsOf: url)
catch
【讨论】:
这为我消除了崩溃,但声音不起作用并且播放器似乎没有被实例化。声音对您有用还是只能解决崩溃问题? @nullforlife 在实例化您的 AV(Audio)Player 之前,添加以下行:try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
这为我停止了崩溃。但声音没有播放。我认为这是一个模拟器错误。当我使用低版本的模拟器 ipad 时,会出现 AVAudioPlayer 错误。【参考方案2】:
您可以像这样实例化您的音频播放器:
var audioPlayer : AVAudioPlayer!
那么请写下这段代码:
do
self.audioPlayer = try AVAudioPlayer(contentsOf: sound)
self.audioPlayer.play()
catch
这对我有用。
【讨论】:
以上是关于AVAudioPlayer 在 iOS 13 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章
iOS 13+ 应用程序的 AVAudioPlayer AVPlayer AVQueuePlayer MPMusicPlayerController MPRemoteCommandCenter MPN