我有一个 98% 完成的应用程序,最近我偶然发现了一个新引入的错误。该应用程序从来自播放列表的服务器播放 mp3(只是轨道 URL 的 JSON 列表,而不是 m3u 文件)。
一切都按预期工作,除非曲目播放完毕。那时会自动选择下一个曲目并更新 UI。但该曲目从未播放过。另外:playbackLikelyToKeepUp
键值观察器没有被触发。我可以阅读该duration
选定(未播放)AVPlayerItem 的...。所以它是一个有效的对象。
当我按“下一步”或在我的表格视图中选择一行时,一切都会正常工作。对我来说最奇怪的部分是用户事件(按“下一步”)和自动播放功能的代码完全相同。两者都currentTrackIndex
在我的 PlaylistManager 上设置了一个,我观察它的变化。这会触发一个playCurrentTrack
方法。
有没有可能与它有关NSNotificationCenter
?
我用它来检查当前曲目是否已播放完毕,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:self.currentAudioPlayerItem];
playerItemDidReachEnd
看起来像这样:
- (void)playerItemDidReachEnd:(NSNotification *)notification {
// same action as pressing 'next' button in my audioplayer UI controls
// which is working, I can also see some UI updates ( correct title etc. … )
[self pressedNext];
}
我在想一些线程可能会阻止从 url 加载 mp3 时触发的事件?我看到 mp3 信息正在我的 http 流量工具中加载。
谢谢。