2016-08-08 4 views
2

В моем приложении я запускаю службу фона, я хочу, чтобы моя служба была уведомлена, если другое приложение воспроизводит аудио, например. телефонный звонок или музыкальное приложение или приложение Radio воспроизводит аудио.notificaiton для прерывания сеанса аудиосвязи

Из документации класса AVAudioSession, кажется, это AVAudioSessionInterruptionNotification - это то, что мне нужно.

Итак, я попробовал:

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

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

Я бегу мое приложение на Iphone. Когда я делаю исходящий/входящий телефонный звонок, мое приложение получает уведомление о прерывании сеанса аудио. Это работает хорошо!

Но когда я открываю радио/музыкальное приложение, воспроизводящее аудио, мое приложение не уведомляется. Зачем? Как мое приложение может получать уведомление, когда музыкальное/радиоприложение воспроизводит аудио?

ответ

0

Как упомянуто в документации ::

/* Зарегистрированные слушатели будут уведомлены, когда система прервала аудио сеанс и когда прерывания закончилось. Проверьте словарь пользовательской информации уведомления для типа прерывания - либо начинайте, либо завершайте. В случае уведомления о прекращении прерывания проверьте словарь userInfo для AVAudioSessionInterruptionOptions, который указывает, должно ли воспроизведение звука возобновляться. */

В любом случае, если какое-либо другое приложение пытается захватить аудио-сессию, уведомление о прерывании будет опубликовано.

Например: попробуйте открыть музыкальное приложение Apple по умолчанию или попробуйте записать видео из приложения камеры по умолчанию. Они берут на себя аудио-сессию, и вы будете уведомлены об этом.

Для того, чтобы быть в безопасности: экземпляр, слушающий уведомление, должен оставаться в памяти.