【问题标题】:MPMusicPlayerController: iPod stops sending notifications, when iPod App is terminated in backgroundMPMusicPlayerController:当 iPod 应用程序在后台终止时,iPod 停止发送通知
【发布时间】:2010-08-21 19:46:25
【问题描述】:

我正在为 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];

但收不到任何通知

我的问题是:

  1. 是否有办法在运行时重新分配、重新加载指针?如何将属性恢复为就像它首次启动时一样?
  2. 我如何捕捉消息:“MediaPlayer:消息播放状态超时。”在控制台输出中? 这不像使用 NSLog。

谢谢你帮助我。

更新: 似乎为 ipodPlayer 属性使用assignweak 是解决方案。此外,访问它是在假设该属性可能不存在的情况下完成的。经过多次试验和一年在我的应用中实际使用它,我认为这是正确的解决方案。

【问题讨论】:

  • 您使用的是 iOS 5 吗?如果没有,那么你应该这样做: self.ipodPlayer = [MPMusicPlayerController ...] 否则理论上 iPodMusicPlayer 创建的实例将被收集并且你没有增加引用计数,所以你会在某个时候得到一个空指针。除非您在每次与音乐播放器交互之前调用该方法,这可能是您出现问题的另一个原因。收集了一个实例,而您没有将自己附加到新实例?
  • 感谢您评论这篇旧帖。我改变了访问这个 ipodPlayer 属性的流程,因为它可能不存在。因此,我将属性设置为使用assignweak,并在它不存在时使用[MPMusicPlayerController iPodMusicPlayer]; 对其进行初始化

标签: crash background notifications ios mpmusicplayercontroller


【解决方案1】:

我在 iOS 5 中的 MpMoviePlayerController 遇到了类似的问题。我找到了解决这个问题的修复程序。它也可以在这里工作。

添加:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

viewDidLoad.

更多我的其他post

【讨论】:

  • 感谢您回复这篇旧帖。由于我没有使用AVAudioPlayer,我不知道这是否适合我。相反,我确保对 iPodPlayer 属性使用弱分配,并且自从像这样使用它之后,几乎没有发生崩溃。猜猜它与引用不属于我的对象有关。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
相关资源
最近更新 更多