App개발 중 Background 노래가 재생되는 상태에서
AVPlayer, Recorder 등을 사용하는 경우
재생되던 노래가 종료되는 현상이 있어서,
Guide를 정리하면서 공부하려고 합니다.
혹시나 도움이 되시는 분이 있으면 좋겠네요~
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 를 다루는 법
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 : 사운드 중단이 시작될때 자동으로 재생된다. 다시 재생할 수 있다.