iPhone和iPad可以通过内置或外置的音箱、耳机、还有通过蓝牙或AirPlay连接的无线设备播放音频。要调整设备播放的声音效果,用户可以使用多种控件。比如音量按钮、静音开关、耳机控制器、控制中心中的音量滑块、还有第三方配件上的声音控制器。无论声音是不是应用体验的重点,或关键的装饰性元素,你都应该在这一方面满足用户的期待。
静音 (slience)
当用户不希望被意外的声音打扰时(比如电话和短信铃声),用户就会把他们的设备切换到静音状态。在这种情形下,他们也会希望去掉不重要的声音,比如键盘声、各种音效、游戏音轨,和其他音频反馈。当一个设备处于静音状态,它应该只播放明确由用户播放的音频,比如媒体回放、闹钟、音频/视频信息等。
音量 (Volume)
用户期待他们的音量设置应用到整个系统,包括音乐和其他应用内音效。而这些设置的生效,也不应该收到设置途径的影响。但其中,铃声音量是一个例外,用户可以在设置中独立地调整铃声的音量。
耳机 (Headphones)
用户使用耳机,可以沉浸在自己的音乐世界中,同时也能解放他们的双手。当用户插入耳机时,他们会希望声音自动地通过耳机播放,无需因此而打扰他们。当用户拔出耳机时,他们也会希望正在播放的内容能立即暂停。
设计杰出的音频体验 (Design a Great Audio Experience)
在必要的时候,可以自动调整音量的声音登记,但不要调整系统整体的音量。你的应用可以调整相对的、独立的音量级别,以便达成优秀的混音效果。但系统音量总是决定着最终输出的声音大小。
在可能的情况下,允许更改声音的播放途径。用户常常想要更改音频输出设备。比如说,他们可能会希望使用家中的立体声音响、车载音响或Apple TV来播放音乐。除非有不可避免的原因,否则应当尽可能支持这些播放途径。
使用系统提供的音量视图来帮助用户调整音频效果。音频视图包括音量滑块和一个播放设备的选择器。你可以定制滑块的样式。开发者指南,可以查看MPVolumeView。
使用系统的声音服务来播放短促的声音和震动。更多开发者指南,查看Audio Services。
将你的应用使用声音的方式归入恰当的类型。你选择的类型会决定你应用的声音是否可以与其他音频一同播放,是否可以在后台播放,或者是否会在用户拨动静音开关时进入静音状态。尽可能选择与用户期待一致的类型。比如说,非必要的情况下,不要因为你的应用停止其他应用播放的音乐。更多开发者指南,查看AVAudioSession.Catagory。
类型 | 含义 | 行为 |
---|---|---|
重要环境音 (Solo ambient) | 不是最重要的声音,但播放它会使得其他音频暂停。举例来说,游戏的音轨就属于此类。 | 受静音开关控制;不会与其他声音混合播放;不会在后台播放。 |
环境音 (Ambient) | 不那么重要的声音,也不会使得其他音频暂停。举例来说,如果一个游戏在运行时,允许其他音乐应用播放声音,与游戏自带音轨一起播放,这种声音类型就是环境音。 | 受静音开关控制;可以与其他声音混合播放;不会在后台播放。 |
音视频播放 (Playback) | 重要的声音,有可能与其他音频混合播放。比如有声书,或者教育应用中的外文课程。用户可能会希望在离开应用后继续聆听这样的内容。 | 不会受静音开关影响;和其他声音可能混合在一起,也可能无法混合;可以在后台播放。 |
录音 (Record) | 录制下来的声音。比如说,一些笔记软件就提供了录音模式。这类软件如果支持回放录音的功能,可能在播放时切换到“音视频播放”的类型。 | 不会受静音开关影响;不会与其他声音混合;可以在后台保持录制。 |
播放和录音 (Play and record) | 有可能同时进行录音和播放。比如语音消息或视频通话类的应用。 | 不受静音开关影响;可能与其他声音混合播放,也可能禁止这样做。可以在后台保持音频播放和录制。 |
当干扰音频播放的因素消失时,决定是否要自动恢复音频播放。有些时候,其他应用的声音会干扰你的应用播放的音频。干扰之后,可以选择自动恢复,比如接电话前后;当然也可以选择不自动恢复,比如当用户启动了一个新的播放列表。通过获取干扰的类型、和你的应用的类型来决定要不要自动恢复音视频播放。举个例子,当一个正在播放音频的应用遇到干扰时,应当首先检查干扰的种类。确认干扰属于可以自动回复的类型,再在干扰结束后恢复正常的播放。另一方面,游戏这样的应用不需要在自动恢复播放之前检查干扰的类型,因为游戏不需要明确的用户选择就可以直接播放音频。更多开发者指南,查看 shouldResume
确保你的VoIP 应用 (Voice over Internet Protocol, 指经由网络协议来达成语音通话与多媒体会议的应用) 面对外部干扰时能够做出正确的反应。比如说,当用户合上iPad的智能保护套,就应该停止正在进行的通话。合上智能保护套会自动使得设备的内置麦克风静音,按照默认设置,也会同时打断使用麦克风的音频会话。如果你在用户重新打开保护套的时候,未经用户允许就自动重启麦克风,则你有便有可能因此侵犯用户隐私。你可以检测这些外部干扰,以便以正确的方式做出响应。更多开发者指南,查看 Responding to Audio Session Interruptions
让其他应用直到你的应用播放的短音频何时停止。如果你的应用会短时间地打断其他应用的音频,确保用某种方式明确告诉其他应用他们的音频播放何时可以回复。更多开发者指南,查看notifyOthersOnDeactivation
应用音频对音频控制器的响应应当符合常理。无论你的应用在前台还是后台播放声音,用户都可以通过应用外的界面 — 比如在控制中心或耳机上的控制器来操作音频播放。如果你的应用正积极地播放音频,或处于一个与音频紧密联系的使用情境中,或连接到了蓝牙和AirPlay设备,那么它应该响应软件外的音频控制。在这些情况之外,即使用户启动了音频控制,你的应用也不应该开始播放,导致其他引用的音频暂停。
不要改变音频控制器的作用。用户期待音频控制器在所有的应用中表现一致。所以开发者永远不应该在你的应用中重新定义音频控制器的含义。如果你的应用不支持个别控制功能,那么就不要响应它们。