4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

[iOS-Dev] AVAudioSession Programming Guide 내맘대로 번역 # 1

App개발 중 Background 노래가 재생되는 상태에서
AVPlayer, Recorder 등을 사용하는 경우
재생되던 노래가 종료되는 현상이 있어서,
Guide를 정리하면서 공부하려고 합니다.
혹시나 도움이 되시는 분이 있으면 좋겠네요~

원문
https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide


미리보기

ASPG_intro_2x.png

  • AVAudioSession을 통해 OS / App간 Audio 제어를 쉽게 할 수 있다.
  • Category와 Mode를 설정을 통해 Audio system을 제어 할 수 있다.
    가장 기본적인 Mechanism - Input, Output route를 지시 할 수 있다.
    AVFoundation에서는 session category의 정의해 놓고 전환할 수 있다.
    Audio role을 정하면 하드웨어 리소스에 접근할 수 있다.
    Category들은 custom을 하여서 세부적인 제어가 가능하다.
  • AudioSession 관련 Notification을 받을 수 있다.
    Notification을 통해 Interruption을 다룬다. (AVAudioSessionInterruptionNotification)
    Notification을 통해 Audio Route 변화를 다룬다. (AVAudioSessionRouteChangeNotification)
  • AudioSession은 Singleton
  • Advanced Configuration(Sample rate, I/O buffer, channel) 설정 가능하다.
  • Protect User Privacy. (Grant)

설정

  • Category
    Category별 동작

  • 기본 설정 동작
    playback(o), recording(x)
    진동 / 잠금 모드 - 소리 줄임
    Audio 플레이 시 Background 소리 줄임

  • Category Mode 제어를 통해 다른 모드 제어
    Category Mode

  • Multiroute
    다른 카테고리들은 i/o 대상 기기가 last win rule
    Multiroute는 모든 연결된 루트에서 재생, 다른 루트에 다른 stream을 전송 가능


활성화

  • 오디오간 우선순위 경쟁 해결
    App이 activation을 요청하면
    Category 상태를 확인해서 처리한다.
    Music 앱의 상태를 Deactivate 시킨다.
    App의 Audio session을 재생한다.

  • Audio Session의 활성화 / 비활성화
    VoIP앱의 경우 Call하는 경우 활성화
    녹음앱의 경우 녹음하는 동안

  • 다른 오디오가 재생중인지 확인
    applicationDidBecomeActive 에서 secondaryAudioShouldBeSilencedHint 로 확인 가능
    Notification AVAudioSessionSilenceSecondaryAudioHintNotification 로 핸들링 가능


Interrupt에 대한 대응 (재생 중 전화, 알림 등)

audio_session_interrupted_2x.png

  • Interrupt 를 다루는 법
    Interrupt start : Context 저장, UI 업데이트
    Interrupt end : Context 복구, UI 업데이트, Reactivate audio session

  • Framework 별 처리
    AVFoundation framework : 자동으로 pause, playback
    Audio Queue Services, I/O audio unit : interrupt end 후 다시 reactivating 시켜줘야 한다.
    System Sound Services : 사운드 중단이 시작될때 자동으로 재생된다. 다시 재생할 수 있다.

4 upvotes $0.00

Replies (1)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: