问题是我设置了三个 NSNotificationcenter 来监听用户更改歌曲、音量和播放列表。该应用程序可以正常播放来自播放列表中用户选择的歌曲。
当用户选择要播放的歌曲时,它通常会注册用户播放歌曲的操作并更改播放状态,但有时它会失败。创建一个只允许播放和播放而不是停止的连续循环。(基本上代码存在间歇性故障。)
我认为的问题是来自一个操作的 NSNotificationcenter 调用被另一个 NSNotificationcenter 调用覆盖。取消一个呼叫而不是另一个呼叫。从而使用户无法停止播放歌曲。
应用功能:允许用户从 PickerView 中选择播放列表,从播放列表中加载歌曲并允许用户从 TableView 中选择歌曲进行播放。
- (void)addMusicPlayerObserver {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNowPlayingSongStateChanged:)
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:self.musicPlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handlePlaybackStateChanged:)
name:MPMusicPlayerControllerPlaybackStateDidChangeNotification
object:self.musicPlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleVolumeChangedFromOutSideApp:)
name:MPMusicPlayerControllerVolumeDidChangeNotification
object:self.musicPlayer];
[self.musicPlayer beginGeneratingPlaybackNotifications];
}
- (void)removeMusicPlayerObserver {
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:self.musicPlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMusicPlayerControllerPlaybackStateDidChangeNotification
object:self.musicPlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMusicPlayerControllerVolumeDidChangeNotification
object:self.musicPlayer];
[self.musicPlayer endGeneratingPlaybackNotifications];
}
实现+标头的完整代码
任何帮助都会很棒。