iOS HIG : Audio

박형석·2021년 11월 3일

iOS HIG

목록 보기
8/19
post-thumbnail

유저 인터렉션의 시작, 오디오

iPhone이나 iPad를 이용하는 사용자는 어떻게든 오디오를 사용하게 된다. 각종 오디오 기기를 가지고 다양한 방식으로 오디오를 manipulate한다. 이 오디오가 사용자 현재 사용자 활동의 메인이든 그렇지 않든 적절한 경험을 제공해주는 것이 immersive한 상태를 유지하는데 필수적이다.

어떤 오디오 컨트롤러가 있을까?
볼륨 버튼, 음소거 스위치, 헤드폰에 달려 있는 컨트롤러, Control Center의 볼륨 슬라이더, 이외의 third party 엑세서리의 컨트롤러 등...

1. Silence

사용자가 Silence를 설정했을 때 사용자가 명백하게 시작한 사운드, 예를 들어 미디어 소리, 알람, 오디오 메시지와 같은 사운드만 실행되어야 한다. 이외에 메시지가 오는 소리, 키보드 타자 소리 등 예상치 못한 사운드가 사용자 경험을 방해하도록 하면 안된다.

iOS의 Silence는 전체 사운드를 죽이는게 아니라는 점을 명심!

2. Volume

사용자는 자신이 한 볼륨 세팅이 시스템 전체에 영향을 끼칠 것이라고 예상한다. 참고로 전화 벨소리는 볼륨이 설정되어 있다. 다른 사운드는 직접 설정할 수 있도록 하자.

3. Headphone

에어팟의 사용감처럼 헤드폰을 연결하면 사운드가 중단되지 않고 자동으로 재생되길 기대한다. 또 헤드폰을 뽑을 때는 재생이 즉시 일시정지 될 것으로 예상한다.

Designing a Great Audio Experience

이제 좋은 오디오 경험을 위한 세팅 방법에 대해 알아보자.

1. 필요하다면 오디오 볼륨을 자동으로 조절, 하지만 오버롤 볼륨에는 적용하지마라

기본적으로 앱의 상대적인 볼륨을 적용하자. 반면 시스템 볼륨을 독립적으로 운영하고 최종볼륨은 시스템 볼륨에 의해서 통제 받도록 디자인하자.

2. 가능하다면 rerouting을 해라

에어팟으로 듣던 소리가 자동으로 스피커로 바뀌는 시스템을 적용해라.

3. 그냥 시스템에서 제공하는 볼륨 뷰를 사용해라

사용자들이 오디오 시스템에 잘 적응하도록 시스템에서 제공해주는 뷰를 사용하는 것이 좋다. 커스텀도 되고, 슬라이더, 리라우팅도 가능하다. 아래 문서를 확인해보자.

볼륨뷰 관련 문서
https://developer.apple.com/documentation/mediaplayer/mpvolumeview

4. 짧은 알람, 진동을 위해서 시스템 사운드 서비스를 사용해라

파일 포멧에 대한 제한이 있다. 아래 개발자 문서를 확인해보자.

시스템 제공 사운드
https://developer.apple.com/documentation/audiotoolbox/audio_services

5. 앱에 적절한 사운드를 위해서 오디오 Category를 확인해보자.

사일런스인가, 음악게임을 통해서 믹싱된 사운드인가, 백그라운드 음악인가, 메인에서 나오는 소리인가등의 분류를 통해서 각 분류별로 일관성을 유지하면서 다양한 상황에 대응할 수 있다.

자세한 내용은 오디오세션을 참고
https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/audio/

  1. Solo ambient
    사운드가 핵심은 아니지만 다른 오디오도 멈출 거야. 다른 사운드와 섞이지 않도록, 백그라운드로 재생하지마!

  2. Ambient
    마찬가지로 핵심은 아니지만, 다른 오디오를 멈추지 않는다. 믹싱도 된다. 다른 사운드와 믹싱한다. 하지만 백그라운드 재생이 안된다. 백그라운드는 그 앱의 사운드가 살아있어야 하는데, 보안 때문에 모든 걸 살려주지 않는다.

  3. Playback
    사운드가 핵심임 앱, 음악 재생 앱, 음성통화앱, 다른 오디오와 믹싱될 수 있다. 교육용, 어학앱 같은 것. 이건 백그라운드 재생이 가능하다. 하지만 silence switch에 대해 반응하지 않는다.

  4. Record
    노트 테이킹 앱, 레코딩을 하다가 그걸 플레이 하려고 하면 Playback이나 play and record 모드로 들어간다. 역시 silence 에 반응하지 않고 다른 사운드와 믹싱 안되고, 백그라운드에서 record가 가능하다.

  5. play and record
    기록과 듣는게 같이 된다. 전화하는 앱 같은 경우! 역시 silence switch에 반응하지 않고, 어떨 때는 믹스되고 어떨 때는 안되다.

6. 다른 앱의 오디오와의 관계 신경써라

음악 듣다가 전화가 오면 통화를 하는데 그러다가 끝나면 다시 음악이 되어야 한다. 종료가 되었다면, 원래 앱에 일시적으로 실행된 오디오 플레이가 끝났다는 것을 알려줘라. AVFoundation의 AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation 세션을 살펴보자.

7. ‘오디오 컨트롤’에 적당할 때 반응하도록 (foreground든 background든) 확실한 오디오 컨텍스트에 있다면 컨트롤러에 앱이 반응할 수 있도록 해라

사용자가 외부에서 오디오를 컨트롤 할 수 있다. 그렇기 때문에 명확한 오디오 컨텍스트가 없다면 다른 앱에 영향을 줄 수도 있다. 명확한 컨텍스트가 있을 때 오디오 컨트롤러가 작동하도록 하자. 그리고 이런 오디오 컨트롤은 시스템 전체에 영향을 미치기 때문에 만약 앱이 컨트롤을 지원하지 않으면 거기에 응답도 하지 않게 해라.

결론

오디오 시스템을 가장 잘 구성하는 것은 system default을 사용하는 것 같다. 오디오 특성상 가장 자주 접하는 인터페이스 역시 기본이기 때문에, 우리 앱에서 사용하고자 하는 사운드가 어떤 카테고리에 해당하는지를 고민해보고 디자인한 후에 각종 기본 시스템을 최대한 활용해보는게 좋을 듯 하다.

Apple Human Interface Guideline
https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/audio/

profile
IOS Developer

0개의 댓글