ali*_*der 10 ios mpmediaplayercontroller
我已经在反馈助手中提交了关于此的反馈,但我想我也会在这里发布 - 从 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 之后的应用中看到过这个吗?
几天来,我一直在摸不着头脑,为什么我无法播放 Apple Music 目录或库内容的商店标识符。事实证明,直接设置商店标识符MPMusicPlayerApplicationController将播放内容,而使用MPMusicPlayerStoreQueueDescriptor并将其传递给则MPMusicPlayerApplicationController不会产生任何效果。
我仍然收到以下错误日志:
[SDKPlayback] applicationQueuePlayer _establishConnectionIfNeeded timeout [ping did not pong]
[core] "Error returned from daemon: Error Domain=com.apple.accounts Code=9 "(null)""
iTunesCloud] ACAccountStore 0x283e1bdb0 - Error retrieving iTunesStore accounts. err=Error Domain=com.apple.accounts Code=9 "(null)"
[iTunesCloud] [ICUserIdentityStore] Failed to fetch local store account with error: Error Domain=com.apple.accounts Code=9 "(null)".
...但已经消失了Error Domain=MPMusicPlayerControllerErrorDomain Code=6 "Failed to prepare to play" UserInfo={NSDebugDescription=Failed to prepare to play}。
希望这对于其他遇到这个问题的人来说可能有用:)
这是一些代码,以便您明白我的意思:
class AMPlayer {
private(set) var player: MPMusicPlayerController!
// Every time `queue` is set, it'll ensure the player queue is "updated"
private var queue: MPMusicPlayerStoreQueueDescriptor! {
didSet {
guard self.queue != nil,
let storeIDs = self.queue.storeIDs,
!storeIDs.isEmpty
else { return }
self.player.setQueue(with: storeIDs)
}
}
// This is how I set the queue from outside the class
public func setQueue(with resourceIDs: [String]) {
self.queue = MPMusicPlayerStoreQueueDescriptor(storeIDs: resourceIDs)
}
// This is how I start playback
public func play() {
self.player.prepareToPlay { (error) in
if let error = error as? MPError {
print("Error while preparing to play: \(error)")
} else {
self.player.play()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |