1

随着 iOS 10.3,Apple 在 MediaPlayer 框架中发布了新的 API,为想要播放存储在 Apple Music/iTunes Match 上的音乐的开发人员带来了更多的控制/权力。我说的是 MPMusicPlayerApplicationController 的新 applicationQueuePlayer 和 applicationMusicPlayer。问题当然在于多任务处理。我基本上正在构建Apple自己的音乐播放器的替代品。但我还需要在播放音乐时执行一些代码(主要是网络连接)。这些新的 API 需要打开应用程序的后台模式(音频、AirPlay 和画中画),因此当用户进入主屏幕时正在播放音乐,但应用程序本身已暂停。
我发现我可以播放无声音频,这样应用程序本身就可以保持活力,也许应用程序会被批准(因为从技术上讲,它在后台播放音乐,并且无论如何都必须打开后台模式功能)。但是我不想在音乐暂停时消耗用户的电池。
更有趣的是:似乎,新的 API 是为在后台保持活跃的应用程序设计的,因为在 iOS 10.3.3 上,通过控制中心更改曲目并点击歌曲名称后,系统音乐应用程序打开而不是我的应用程序。
想象一下,该用户在上班前暂停了控制中心的音乐,然后从控制中心恢复了音乐。我不想在他工作时吃掉用户的电池。
我的问题是:

4

1 回答 1

0

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

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

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

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

于 2017-08-19T20:30:48.293 回答