【发布时间】:2020-07-23 15:49:16
【问题描述】:
关于这个主题的所有线程都非常老(5+ yo),我似乎无法形成一个清晰的现代方法,所以希望这可以在 2020 年总结(Swift 5,Xcode 11) .
如果您要使用 iOS 13 以前瞻性的方式为 iPhone 构建音频(不仅仅是音乐)播放器应用程序(不要关心任何不支持 iOS 的东西14 - 所以没有低于 8),如果要求是......你会使用什么套件/类......
- 应用可以在本地存储和播放下载的 MP3 文件(不一定是流式传输或嵌入式)。
- 用户对音频有基本的播放器控制(播放/暂停/擦洗/音量)。
- 应用有一个音频队列(曲目播放顺序),可以随时通过应用或原生 iOS 控件进行调整。
- 用户可以遍历(向后/向前搜索)队列。
- 用户可以选择在手机配对的蓝牙音频设备上播放。
- 音频可以在后台播放(屏幕关闭时,或在其他应用中)。
- 应用可以在后台触发跟踪和调整队列(无需用户交互)。
- 音频与原生 iOS 控件 (RemoteControlEvents) 集成。
- 根据 Apple 的指南,该应用是“现在可播放的应用”。
奖金(如果可能的话):
- 应用音频可以像路线应用一样覆盖播放音乐(我意识到这可能会否定背景和“正在播放”功能,但也许它有助于讨论,以便更清晰地推理为应用开发者选择一种方法)。
那么你会使用 AVAudioPlayer 或 AVPlayer 或 MPMusicPlayerController 吗? MPRemoteCommandCenter 还是 MPNowPlayingInfoCenter?
也许有些要求是相互排斥的,甚至是不可能的,但我不明白为什么有这么多控制音频播放的方法,它们的用例之间没有明确的界限,或者为什么音频是音乐或语音,下载或流式传输。在 Apple,音频显然是视频的二等公民,尤其是语音,但我认为现在应该在某些类型的基本应用程序(如播放列表、播客和其他类型的音频应用程序)方面有一些方向。
【问题讨论】:
标签: avplayer avaudioplayer mpmusicplayercontroller mpnowplayinginfocenter mpremotecommandcenter