개발 앱 실행 시 음악 앱의 재생 중단되는 현상 대응 (AVAudioSessionCategoryAmbient)

에어팟을 안끼고 폰빌드 했을 때는 발생하지 않았는데 에어팟을 끼고 빌드한 앱을 실행하니 재생 중이던 음악이 꺼졌다.

개발 중인 앱에 중간에 카운트 다운시 비프음을 넣으려고 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 캡쳐 화면이다.

TOP