随着iTunes10.3,苹果在MediaPlayer框架中发布了新的API,为想要播放Apple Music/iTunes Match上存储的音乐的开发人员带来了更多的控制/功能。我说的是MPMusicPlayerApplicationController的新applicationQueuePlayer和applicationMusicPlayer。问题当然出在多任务处理上。我正在构建一个基本上可以替代苹果自己的音乐播放器的播放器。但我还需要在播放音乐时执行一些代码(主要是网络连接)。这些新的API需要打开应用程序的背景模式(音频、AirPlay和画中画),所以当用户进入主屏幕时,音乐会播放,但应用程序本身会被挂起。
我已经知道我可以播放静音音频,这样应用程序本身就可以继续运行,也许,应用程序会被批准(因为从技术上讲,它是在后台播放音乐,而后台模式功能无论如何都必须打开)。但是我不想在音乐暂停的时候消耗用户的电量。
更有趣的是:似乎,新的应用程序接口是为那些留在后台的应用程序设计的,因为在iOS 10.3.3上,通过控制中心更改曲目并点击歌曲名称后,系统音乐应用程序会打开,而不是我的应用程序。
想象一下,用户在上班前暂停来自控制中心的音乐,然后从控制中心恢复音乐。我不想在用户工作的时候吃他的电池。
我的问题是:有没有办法让应用程序保持存活,并对用户采取的操作做出响应?
发布于 2017-08-20 04:30:48
“音乐播放器不会影响音乐应用程序的状态。当应用程序移动到后台时,音乐播放器将停止播放当前媒体。”
systemMusicPlayer将在后台继续,但是,您没有访问权限,或者我认为现在(iOS11)对队列的访问是有限的。
我认为如果你想要对发生的事情进行细粒度的控制,你仍然需要使用某种形式的AVPlayer ( https://developer.apple.com/documentation/avfoundation/avplayer ),但是你将需要自己实现所有更新锁屏等的东西。
https://stackoverflow.com/questions/45775911
复制相似问题