我已经在反馈助手中提交了关于此的反馈,但我想我也会在这里发布——从 iOS 13.4 开始,我注意到 MediaPlayer 框架中的各种错误,特别是 applicationQueuePlayer 和 applicationMusicPlayer。
第一个是在应用程序启动时初始化,它现在抛出这个错误:[SDKPlayback] applicationQueuePlayer _establishConnectionIfNeeded timeout [ping did not pong]
当调用 prepareToPlay() 时,该错误之后是这个错误:Error Domain=MPMusicPlayerControllerErrorDomain Code=6 "Failed to prepare to play" UserInfo={NSDebugDescription=Failed to prepare to play}
最终,在调用 prepareToPlay 足够的时间后,它会直接开始播放内容,但即便如此,我发现我必须多次调用 play() 或 pause() 才能可靠地执行此操作。
在 13.4 之后的应用程序中还有其他人看到这个吗?
最佳答案
在我的情况下,我的播放器逻辑并不总是触发 player?.prepareToPlay() 代码。我确保 stop() 播放器,然后立即触发 prepareToPlay。然后我用 contentsOf: URL 准备播放器,并调整播放器设置,然后播放。由于发生了爆裂声,我还必须添加一些奇怪的音量调整。我将在下面发布我的播放器代码。
static func play(sound: Sound) {
stop()
player?.prepareToPlay()
let path = Bundle.main.path(forResource: sound.file, ofType: sound.extn)
let url = URL(fileURLWithPath: path!)
do {
player = try AVAudioPlayer(contentsOf: url)
player?.volume = 0 //starting volume at zero before playing eliminates pop on start
player?.numberOfLoops = -1
player?.play()
player?.setVolume(1, fadeDuration: 0.3) //fade in, no pop
} catch {
print(error)
}
}
关于ios - iOS 13.4 中的 MPMusicPlayerController.applicationQueuePlayer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60887368/