안녕하세요 🌱 Lawn입니다 코더스하이 윤성관 대표님과 함께하는 HIG 독서모임을 함께하면서 배우게된 내용을 정리해보도록 하겠습니다
사용자들은 볼륨 버튼과 무음 스위치, 헤드폰의 컨트롤 그리고 스크린의 볼륨 슬라이더로 음향을 조작한다. 많은 타사의 악세사리들 또한 음향을 조절하는 장치가 있다. 음향은 내부 혹은 외부 스피커, 헤드폰, 심지어 에어플레이 혹은 블루투스가 가능한 기기로 선 없이도 소리가 나올 수있다. 앱을 경험하는데 있어 소리가 가장 주된 점이든 단순한 장식이든, 사용자들이 소리가 어떻게 나길 기대하며 어떻게 해야 만족시킬 수 있을지 알아야한다.
무음, 사용자들은 벨소리나 메세지 수신 알람 등 예상치 못한 소리에 방해받지 않고자 기기를 무음상태로 전환한다. 또한 키보드 소리나 효과음, 게임 배경음악, 피드백 소리 등 필수 요소가 아닌 소리들 또한 무음으로 만들고 싶어한다. 기기가 무음 상태일 땐, 미디어 재생 소리나 알람, 전화/영상 메세지와 같이 확실하게 필요한 소리만 나야 한다.
볼륨, 물리 버튼을 쓰든 스크린의 슬라이더를 쓰든, 사용자는 음악과 앱 내 효과음을 포함한 모든 사운드 시스템의 소리를 조절하고자 한다. 유일한 예외가 있다면 전화벨이며, 이는 울리는 때를 제외하곤 항상 독립적으로 작용한다. 전화벨과 사운드는 서로다른 설정을 가진다.
HIG Story
히그에 나오지는 않지만 재미있는 사례를 알려주면, 애플은 헤드폰을 다 기억한다. 예를들어 내가 집에서 듣는 헤드폰이 있고, 회사에 쓰는 헤드폰이 있으면, 내가 듣는 사운드 볼륨이 집에서는 5이고 회사에서는 6이면 각각의 헤드폰마다 가진 다른 저항값을 키로 해서 이것을 기억한다. 그래서 해당 헤드폰을 꽂으면 마지막 설정값으로 자동으로 맞춰진다.
헤드폰, 사용자는 손을 자유롭게 하기 위해 헤드폰을 사용한다. 헤드폰에 플러그를 꽂을 때, 사용자는 별다른 방해 없이 소리가 헤드폰에서 자동으로 나오기를 원하고, 만약 헤드폰과의 연결을 제거하면, 재생중인 미디어가 잠시 정지 되기를 원한다.
멋진 오디오 경험 디자인하기
가능하면 전체 볼륨을 제외하고 음량이 자동으로 조정되도록 하자. 다른 소리와 잘 섞일 수 있도록 앱의 개별 음향 소리를 적절하게 조절할 수 있다. 그러나, 최종적으로 나오는 소리는 언제나 시스템 볼륨에 의해 조절될 수 있어야 한다.
사용자가 원하는 음향 기기를 고를 수 있도록 하자.. 사용자들은 종종 다른 음향기기를 사용하고 싶을 때가 있다. 예를 들어, 거실의 스레오나 자동차 라디오, 혹은 애플 티비에서 노래를 듣고싶을 수 있다. 지원하지 않을 이유가 없다면 이러한 기능을 지원해주면 좋다.
음향조절을 하려면 시스템에서 제공되는 볼륨 뷰를 사용하자. 소리 조절 화면을 제공하는 가장 좋은 방법은 볼륨 뷰를 사용하는 것이다. 이 뷰는 수정 가능하며, 음량 조절 슬라이더, 심지어 음향 출력 기기를 설정하는 기능도 있다. 개발자 가이드는 MPVolumeView 에서 확인하자.
짧은 소리나 진동은 시스템의 음향 서비스를 사용하자. 개발자 가이드는 System Sound Services 에서 확인하자.
앱에 사용되는 사운드가 매우 중요하다면, 음향을 카테고리화 하자. 별도의 음향 카테고리가 있으면 무음 스위치로 소리를 끌 수 있고, 다른 소리와 잘 섞일 수 있게 되며, 앱이 백그라운드에 있을 때 플레이할 수 있게 한다. 사용하는 의미와 기기의 현재 상태에 따라 카테고리를 고르고, 앱의 오디오 세션에 할당하자. 예를 들어, 사용자들이 다른 앱을 켰을때 음악이 중지되면 안된다. 앱이 소리를 녹음하고 그 소리를 다른 재생하는 경우가 아니라면, 대부분의 경우 앱이 사용중일 때 카테고리가 변경되지 않오록 하는 것이 가장 좋다. 개발자 가이드는 Audio Session Programming Guide 에서 확인하자.
Category | Meaning | Behavior |
---|---|---|
Solo ambient | 소리가 중요하지 않으나, 다른 소리까지 무음한다. 예_ 사운드트랙이 있는 게임 | 무음 스위치에 반응한다. 다른 소리와 섞이지 않고, 백그라운드에서 소리를 재생하지 않는다. |
Ambient | 소리가 중요하지 않으며, 다른 소리를 무음으로 만들지 않는다. | 무음 스위치에 반응, 다른 소리와 섞인다. 백그라운드에서 소리를 재생하지 않는다. |
Playback | 소리가 중요하며 다른 소리와도 섞일 수 있다. 예_ 외국어를 알려주는 오디오북이나 교육 앱, 계속 사용하지 않아도 소리를 듣고싶을 앱 | 무음 스위치에 반응하지 않는다. (무음을 켜도 소리가 난다.)다른 소리와 섞일 수도, 섞이지 않을 수도 있다. 백그라운드에서 소리를 재생할 수 있다. |
Record | 소리가 녹음된다. 예_ 녹음 모드를 제공하는 노트 필기 앱. 이런 앱은 사용자가 녹음된 필기를 재생할 경우 Playback 카테고리로 간주될 수도 있다. | 무음 스위치에 반응하지 않는다. (무음을 켜도 소리가 난다.)다른 소리와 섞이지 않고, 백그라운드에서 소리를 재생할 수 있다. |
Play and record | 소리가 녹음되고 동시에 재생된다. 예_ 음성메세지, 영상통화 앱 | 무음 스위치에 반응하지 않는다.(무음을 켜도 소리가 난다.)다른 소리와 섞일 수도, 섞이지 않을 수도 있다. 백그라운드에서 녹음하고 재생할 수 있다. |
방해가 있을때 적절한 순간 오디오를 다시 시작하자. 종종 현재 재생중인 소리가 다른 앱에 의해 방해를 받는 경우가 있다. 걸려오는 전화 때문에 음악소리가 잠시 멈추는 경우가 있다. 만약 이러한 이유로 음악이 중단되었을 때, 전화가 끝나면 다시 소리를 다시 재생해야 한다. 예를 들어, 게임이 사운드트랙을 재생하는 경우, 소리가 재생되고 있던 미디어 앱의 경우 둘 다 소리를 재개해야한다.
다른 앱이 현재 사용하는 앱의 소리 재생을 중지시킨 것을 알게 하자. 앱이 다른 앱의 사운드를 일시적으로 방해한다면, 다른 앱이 언제 사운드를 재개할 수 있을지 알려줄 수 있도록 오디오세션에 플래그 해야한다. 개발자 가이드는 AVFoundation의 AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation 에서 확인하자.
*오디오세션에 플래그 : 개발 시 AudioSession이라는 클래스에 오디오를 제어한다고 기록을 남김
적당한 경우에만 오디오 컨트롤에 반응하자. 사용자들은 컨트롤 센터나 헤드폰의 컨트롤을 통해 앱이 실행 중이든 백그라운드에 있든 앱 밖에서 오디오 재생을 컨트롤할 수 있다. 만약 소리가 꼭 필요한 상황에 소리를 재생하는 중이거나 에어플레이 사용 기기에 연결되어있는 경우, (그만큼 소리의 중요도가 높으니) 오디오 컨트롤에 반응하는 것은 괜찮다. 그러나 반대로 컨트롤이 활성화된 경우 앱이 다른 앱의 소리를 중단해서는 안된다.
오디오 컨트롤을 아무 곳에서나 오용하지말자. 사용자는 오디오 컨트롤이 일관적으로 모든 앱에 작동하기를 원한다. 절대 이 오디오 컨트롤의 의미를 재해석하지 말자. 오디오 컨트롤이 전혀 다른 맥락에서 사용이되면 안된다. 만약 앱이 특정 컨트롤을 지원하지 않는다면, 응답을 하지 말아야 한다.