1. 문제
무음모드에 둔 상태이고
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
로 세팅하고 음악 재생 중에 홈 버튼을 눌러서 홈 화면으로 이동하면
백그라운드 상태로 진입하면서 재생은 계속 되는데 스피커로 소리가 나온다.
무음 모드인지를 체크해야하는데 구글링해서 나온 방법은 모두 동작 안하고 있음.
2. 임시 수정
일단 이어폰있는지는 체크가 되서 이어폰 있으면 백그라운드 재생하고, 아니면 막아 둠.
3. 수정
로직은 다음과 같음.
이어폰이 꽂혀 있다 -> 뮤트 상태 상관없이 계속 재생
이어폰이 없다 -> 뮤트 아니면 계속 재생
-> 뮤트 상태면 스톱 시킨다.
백그라운드에서 복귀하면 mute 모드를 따르므로 다시 resume 처리
3.1) 이어폰 체크 로직
- (BOOL)isHeadsetPluggedIn
{
AVAudioSessionRouteDescription *route = [[AVAudioSession sharedInstance] currentRoute];
BOOL headphonesLocated = NO;
for (AVAudioSessionPortDescription *portDescription in route.outputs) {
headphonesLocated |= ([portDescription.portType isEqualToString:AVAudioSessionPortHeadphones]);
}
return headphonesLocated;
}
3.2) 뮤트 체크 로직
https://github.com/hoishing/MuteChecker
https://github.com/fopina/MuteDetector
위 2개 중에 아래를 사용. 테스트 했을 때는 잘 되는거 같다.
원리는 위 링크에 설명되어있음.
무음을 재생해서 반응 속도로 하는거 같은데. 가끔 오류 나는거 같긴 한데; 일단 무시
위 로직 적용해서 구현 완료
- 해결 !
'iOS' 카테고리의 다른 글
UIButton 터치 영역 확장하기 (0) | 2016.11.22 |
---|---|
iOS 앱스토어 심사 가이드라인 - 한글 버전이 나왔습니다. (0) | 2016.11.21 |
iOS 버전별 점유율 (0) | 2016.11.15 |
Mute 상태에서 스피커로 소리 출력하는 방법 (0) | 2016.11.04 |