此主题的所有线程都非常古老(5+年),我似乎无法形成一个明确的现代方法,所以希望可以在2020年(Swift 5,Xcode 11)进行总结。
如果您要为 iOS 13 构建一个音频(不仅仅是音乐)播放器应用程序,并以前瞻性的方式进行构建(不关心不支持iOS 14的任何内容-因此不包括8以下版本),那么如果要求是...
- 应用可以通过本地存储和播放下载的MP3文件(不一定要流式传输或嵌入式)。
- 用户可以对音频进行基本的播放控制(播放/暂停/快进/音量)。
- 应用具有可以随时由应用程序或本机iOS控件调整的音频队列(曲目播放顺序)。
- 用户可以遍历(向后/向前跳过)队列。
- 用户可以选择在已配对的蓝牙音频设备上播放。
- 当屏幕关闭或在其他应用程序中时,音频可以在后台播放。
- 应用程序可以在后台触发轨道并调整队列(无需用户交互)。
- 音频与本机iOS控件(RemoteControlEvents)集成。
- 应用程序符合苹果《现在可播放应用》的指南。
奖励(如果可能):
- 应用音频可以作为定向应用程序重叠播放音乐(我意识到这可能会使背景和“正在播放”功能无效,但也许它可以帮助开发人员更清晰地选择应用程序的方法)。
那么,您会使用AVAudioPlayer、AVPlayer还是MPMusicPlayerController?MPRemoteCommandCenter还是MPNowPlayingInfoCenter?
也许一些要求是互相排斥的,甚至是不可能实现的,但是我无法理解为什么有如此多的控制音频播放的方法,没有明确的界限以区分它们的使用情况,或者为什么它对于音乐或语音而言都很重要,下载或流式传输。显然,在苹果公司,音频显然是视频的二等公民,特别是语音,但我认为对于像播放列表、播客和其他类型的音频应用程序这样的基本应用程序应该有一些方向。