引自《iOS12界面交互设计规范(iOS 12 Human Interface Guidelines)》
不论声音是否在你的APP中占据着用户体验的半壁江山亦或是只扮演其中的一个点缀,你都应该知道用户对声音的期待以及反应。
用户可以通过音量按钮,静音开关,耳机以及屏幕上的声音滑块来控制声音。甚至很多的第三方配件同样支持对声音的控制。音频可以通过内置或者外置的播放设备,耳机甚至是想AirPlay或者蓝牙这样的无线方式进行播放。
静音,用户通过开关音量设备来避免被一些突如其来的声音所打断,如电话铃声,短信提示音等。同样用户有时也需要屏蔽一些非必须的声音,如键盘声音,音效,游戏音乐以及音频反馈。当设备被设置为静音时,应该只有本就应该出现的声音出现,如播放中的音乐,闹钟以及音视频信息。
音量,不论是使用设备的物理按键亦或是屏幕上的滑块,用户均应该能够改变音量大小来控制声音系统,包括音乐以及APP内置音效。唯一特殊的是来电铃声音量,其应该是被单独控制的即使是音频没有被激活的时候。
耳机,用户通过耳机去听取属于他们个人的声音,同时耳机更是可以解放用户的双手。当耳机被插入时用户期望声音自动的进行转换而不被打断,相反的用户拔出耳机时他们期望的是播放的立即暂停。
必要时自动调节不同层级的声音,但不是整体音量(Adjust levels automatically when necessary, but not the overall volume. )为了达到更好的混合音效,你的应用可以单独调节不同层级音频间的相对音量。但是,最终的音量输出应该由系统音量决定。
恰当的时候允许音频重选路由(Permit rerouting of audio when appropriate.)用户会经常想要选择一个不同的音频输出设备。比如,他们会想要通过客厅的立体音响、车载收音机或是苹果电视来听音乐。请支持这个功能除非你有令人信服的理由不这么做。
使用系统提供的音量视图来调节音量(Use the system-provided volume view to allow audio adjustments.)音量视图(volume view)是最好的能提供调节音量的界面控件。这个视图是自定义的,包含一个音量调节滑块,甚至包含一个用来替音频输出重选路由的控件。了解实现方法,请参阅MPVolumeView Class Reference。
短音和振动请使用系统声音服务(Use the system’s sound services for short sounds and vibrations. )了解实现方法,请参阅System Sound Services Reference。
如果声音对你的应用十分重要请设置音频类别(Categorize your audio if sound is essential to your app. )不同的音频类别允许声音被静音按钮静音、与其它声音混响、或是当你的应用在后台时播放。根据类别的含义和当前设备的音频播放情况来选择一个类别,然后将其分配给你音频对话(audiosessions)。比如,非必要情况下,请不要打断用户正在收听的来自其它应用的音乐。总的来说,尽量不要在你的应用运行时更改所属的音频类别,除非应用需要经常地录制然后播放音频。了解实现方法,请参阅Audio Session Programming Guide。
在适当时候继续播放被干扰打断的音频(Resume audio playback when appropriate after an interruption occurs. )正在播放的音频有时会受来自其它应用的声音干扰。暂时性干扰(比如来电铃声)被认为是可恢复的。永久性干扰(比如被Siri打开的播放列表)被视为不可恢复的。当一个可恢复的干扰出现时,你的应用应该在干扰结束时恢复音频播放(假设音频在干扰出现之前就已经开始播放了)。比如,一个在播放配乐的游戏和一个在播放音频的媒体应用都应该恢复声音的播放。当干扰发生时应用没有在播放任何音频,那么它也就不需要恢复任何对象。
让其它应用知道何时你的应用将停止播放暂时性的音频(Let other apps know when your app finishes playing temporary audio. )如果你的应用可能会暂时性地干扰到其它应用的音频,那么就应该恰当地标明声音片段,从而让其它应用知道确切的恢复时间。了解实现方法,请参阅AVFoundation Framework Reference中的AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation。
只有在有意义时才对声音控件作出反应(Respond to audio controls only when it makes sense. )无论你的应用在前台还是后台,用户都能够通过应用界面以外的东西控制音频的播放,比如在控制中心(Control Center)中,或者耳机声控。如果你的应用正在一个明确与声音相关的环境下播放音频,或是连接到一个支持AirPlay的设备上,那么对声音控件作出反应是合理的。但是,你的应用不应该混淆其它应用的音频,因为它们可能会在控件被激活时播放。
不要重新定义声音控件(Don’t repurpose audio controls. )用户希望声音控制在任何应用都保持一致性。永远不要重新定义声音控件。如果你的应用不支持某些控件,那么只需不对它们作出反应即可。