我正在为iPod播放器控制器使用音乐播放器属性。
// .h
@property (nonatomic, retain) MPMusicPlayerController *ipodPlayer;
// .m
ipodPlayer = [MPMusicPlayerController iPodMusicPlayer];
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(changedPlaybackState:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:ipodPlayer];
[notificationCenter addObserver:self selector:@selector(changedNowPlayingItem:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:ipodPlayer];
[ipodPlayer beginGeneratingPlaybackNotifications];
在后台处理期间,如果终止iPod播放器应用程序,控制台会打印出:
MediaPlayer: Message playbackState timed out.
如果它没有崩溃(或冻结,降低性能),则不再向我的观察方法发送通知。我仍然可以发送消息:
[ipodPlayer pause];
[ipodPlayer play];
[ipodPlayer skipToNextItem];
[ipodPlayer skipToPreviousItem];
但无法接收任何通知
我的问题是:
感谢您帮助我。
更新:
似乎使用assign
或weak
来获取ipodPlayer属性是解决方案。此外,访问它是在假设该属性可能不存在的情况下完成的。经过多次试验和一年在我的应用程序中实际使用它,我认为这是正确的解决方案。
答案 0 :(得分:1)
我在iOS 5中遇到了与MpMoviePlayerController
类似的问题。我找到了一个解决它的问题。它也可以在这里工作。
添加:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
viewDidLoad
中的。
更多我的其他post