에어팟을 안끼고 폰빌드 했을 때는 발생하지 않았는데 에어팟을 끼고 빌드한 앱을 실행하니 재생 중이던 음악이 꺼졌다.
개발 중인 앱에 중간에 카운트 다운시 비프음을 넣으려고 react-native-sound 패키지를 설치했더니 이런 이슈가 발생하였다.
꼭 저 패키지가 아니더라도 음원을 사용한다면 AVAudioSession 을 구성해야 개발한 앱을 실행할 때 다른 앱에서 재생 중인 음악이 중단되지 않는다.
나는 리액트 네이티브 프로젝트이므로 파일명과 구성은 참고해서 본인 프로젝트에 맞게 작성하길 바란다.
AppDelegate 파일에 AVAudioSession 추가하기
파일 경로 : /프로젝트 폴더/ios/프로젝트 이름/AppDelegate.mm
(AppDelegate 로 된 파일을 찾아보면 됨)
문서 상단에 아래 코드 추가
#import <AVFoundation/AVFoundation.h>
그리고 본문 중에 didFinishLaunchingWithOptions 를 검색하면 아래 코드가 보일 것이다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
{ 밑으로 아래 코드를 작성한다.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
이렇게 하고 번들링 해보니 원하는 결과가 나왔다.
만약에 그래도 안된다면 위에 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; 를 지우고 아래 코드로 변경해 보자.
NSError *setCategoryError = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&setCategoryError]; if (setCategoryError) NSLog(@"error AVAudioSession setCategory"); NSError *activationError = nil; [[AVAudioSession sharedInstance] setActive:YES error:&activationError]; if (activationError) NSLog(@"error AVAudioSession setActive");
나는 둘 다 정상 처리되었다.
내가 작성한 AppDelegate.mm 캡쳐 화면이다.