2016-08-08 4 views
2

내 앱에서 백그라운드 서비스를 실행 중입니다. 다른 앱에서 오디오를 재생하는 경우 내 서비스에 알려주고 싶습니다. 전화 통화 또는 음악 앱 또는 라디오 프로그램에서 오디오를 재생 중입니다.오디오 세션 중단에 대한 알림

AVAudioSession 클래스 문서에서이 것이 AVAudioSessionInterruptionNotification 인 것처럼 보입니다.

그래서 나는 시도 :

-(void)initialization{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
                selector:@selector(handleAudioSessionInterruption:) 
                 name:AVAudioSessionInterruptionNotification 
                 object:nil]; 
} 

-(void)handleAudioSessionInterruption:(NSNotification*)notification{ 
    NSLog("Get notified for interruption"); 
} 

내가 아이폰에 내 응용 프로그램을 실행합니다. 나가는/수신 전화를 할 때, 내 응용 프로그램은 오디오 세션 중단에 대한 알림을받습니다. 잘 작동한다!

하지만 라디오/뮤직 앱에서 오디오를 재생할 때 내 앱에 알림이 전송되지 않습니다. 왜? 음악/라디오 앱이 오디오를 재생할 때 내 앱에 어떻게 알릴 수 있습니까? 워드 프로세서에서 언급 한 바와 같이 ::

답변

0

/* 등록 된 리스너는 시스템이 오디오 세션을 중단했을 때와 중단이 종료 될 때 통지됩니다. 중단 유형 (begin 또는 end)에 대한 알림의 userInfo 사전을 확인하십시오. 종료 중단 알림의 경우 AVAudioSessionInterruptionOptions의 userInfo 사전에서 이 오디오 재생을 다시 시작해야하는지 여부를 나타냅니다. */

기본적으로 다른 앱이 오디오 세션을 인계하려는 경우 중단 알림이 게시됩니다.

예 : 사과 기본 음악 앱을 열거 나 기본 카메라 응용 프로그램에서 비디오를 녹화 해보십시오. 그들은 오디오 세션을 인계받으며 동일한 내용의 통보를 받게됩니다.

단지 안전 측면에 있습니다 : 알림을 수신하는 인스턴스는 여전히 메모리에 살아 있어야합니다.