使用[MPMusicPlayerApplicationController applicationQueuePlayer]播放音乐时,让应用程序在后台唤醒

时间:2017-08-19 20:16:00

标签: ios multitasking mpmusicplayercontroller apple-music apple-musickit

借助iOS 10.3 Apple在MediaPlayer框架中发布了新的API,为想要播放存储在Apple Music / iTunes Match上的音乐的开发人员带来更多控制/力量。我在谈论MPMusicPlayerApplicationController的新applicationQueuePlayer和applicationMusicPlayer。 问题当然是多任务处理。我基本上可以替代Apple自己的音乐播放器。但是我还需要在播放音乐时执行一些代码(主要是网络连接)。这些新API需要打开应用程序的背景模式(音频,AirPlay和画中画),因此当用户进入主屏幕时播放音乐,但应用程序本身已暂停。 我已经发现我可以播放无声音频,因此应用程序本身仍然存在,也许,应用程序可能会被批准(从技术上讲,它必须在背景和背景模式下播放音乐才能打开) 。但是,当音乐暂停时,我不想使用用户的电池 更有趣的是:似乎新API是专为在后台保持活力的应用而设计的,因为在iOS 10.3.3之后通过控制中心更改了音轨并点击了歌曲的名称后系统音乐应用程序被打开而不是我的应用程序。
想象一下,用户在到达工作岗位之前暂停控制中心的音乐,然后从控制中心恢复音乐。我不想在工作时吃掉用户的电池 我的问题是:有没有办法让应用程序保持活动并响应用户采取的操作?

1 个答案:

答案 0 :(得分:0)

"音乐播放器不会影响音乐应用的状态。当您的应用移至后台时,音乐播放器将停止播放当前媒体。"

https://developer.apple.com/documentation/mediaplayer/mpmusicplayercontroller/2817540-applicationqueueplayer

systemMusicPlayer将在后台继续,但是你没有访问权限,或者我认为现在(iOS11)对队列的访问权限有限。

我认为你仍然需要使用某种形式的AVPlayer(https://developer.apple.com/documentation/avfoundation/avplayer),如果你想对所发生的事情进行精细控制,那么你需要自己实现所有更新锁定屏幕的东西等等。