iTunes 同步后 MPMusicPlayerController 停止工作
Posted
技术标签:
【中文标题】iTunes 同步后 MPMusicPlayerController 停止工作【英文标题】:MPMusicPlayerController stops working after iTunes sync 【发布时间】:2010-07-13 19:21:01 【问题描述】:我知道有一个类似的问题MPMusicPlayerController stops sending notifications,但该问题的答案并不能解决这个问题。
我使用的是 ios 4,这发生在支持多任务处理的设备和非多任务处理设备上。我在 iPhone 4、iPhone 3GS、iPod touch 2G 和 iPod touch 1G 上进行了测试。
我有一个项目只是为了测试这个问题。它使用 MPMusicPlayerController 来控制 iPod 音乐播放,并在 nowPlaying 项目更改时收到通知,因此它可以更新艺术品、艺术家和标题。当你第一次启动它时它工作正常。但是,如果您执行 iTunes 同步,我相信这会退出设备上的 iPod.app,然后返回到我的应用程序,该应用程序将不再从 MPMusicPlayerController 获得通知,因此它不会更新“正在播放的项目”显示。
该项目还允许您从 iPod 库中选择一个播放列表来开始播放。同步后它也会停止工作。它仍然可以获取播放列表列表,但尝试在 iPod 音乐播放器中将它们排入队列没有任何作用。
释放 MPMusicPlayerController 的旧实例不起作用。取消注册和重新注册通知不起作用。应用程序和 iPod.app 之间的 IPC 似乎有问题。修复它的唯一方法是杀死我的应用并重新启动它。
其他人有这个问题吗?
【问题讨论】:
我提交了一个雷达 (Bug ID# 8183973),它被标记为 Bug ID# 8182738 的副本。当一个 bug 被标记为重复时,我无法再跟踪 bug 的解决方案,因为该问题已标记为已关闭。 【参考方案1】:我遇到了完全相同的问题并且无法正确修复它,尽管我确实提出了一个临时解决方案,这比让我的应用卡在无法使用的状态更好:
我在我的处理程序中为MPMediaLibraryDidChangeNotification
调用exit(0)
,所以至少我的用户不会因为想知道如何修复它而无能为力。
【讨论】:
用户需要在应用退出后重新启动。它确实解决了问题,但以一种相当不雅的方式。我认为唯一真正的解决方案是向 Apple 提交 Radar 错误报告并等待他们修复它。 我刚刚发现如果用户正在使用蓝牙耳机听音乐,拨打电话,将电话中的输出源从蓝牙更改为 iPhone,然后结束通话,也会出现此错误。我的应用程序将无法播放音乐或设置播放队列,直到应用程序被强制退出或音乐从 iPod.app 重新启动。 更正:在这个新场景中,我我能够将播放队列设置为恢复播放,但发送[musicPlayer play]
不起作用。这个问题可能无关。【参考方案2】:
我会尝试将 AVAudioSession 类别重新设置为 AVAudioSessionCategorySoloAmbient
并重新激活会话。
【讨论】:
那根本行不通。它完全停止了音乐播放,更糟糕的是,我的应用仍然没有收到通知或无法将不同的播放列表排队。以上是关于iTunes 同步后 MPMusicPlayerController 停止工作的主要内容,如果未能解决你的问题,请参考以下文章
1 个项目无法同步。有关更多信息,请参阅 iTunes [关闭]