Как получить начало / конец прерывания для AVPlayer

Я проигрываю аудиофайлы с AVPlayer. Реализовал AVAudioSessionInterruptionNotification.

    AVAudioSession *session = [AVAudioSession sharedInstance];
    NSError *errorInAudio   = nil;
    [session setActive:YES error:&errorInAudio];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interruption:) name:AVAudioSessionInterruptionNotification object:nil];

    [session setCategory:AVAudioSessionCategoryPlayback error:nil];

Он отлично работает, когда приложение прерывается, когда приложение находится на переднем плане (например, голосовое управление).
Но я сделал приложение в фоновом режиме, открыл плеер iPod и начал играть. Его прерывание не вызывается в это время и даже когда мое приложение выходит на передний план.
В чем может быть проблема. Пожалуйста помоги.


person Tinku George    schedule 19.03.2013    source источник


Ответы (2)


Если вы используете AVAudioPlayer, вы можете соответствовать AVAudioPlayerDelegate, тогда вы можете реализовать такие методы, как - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

Другие методы перечислены в документации .

person Ryan Poolos    schedule 19.03.2013
comment
Спасибо за ваш ответ. Получил делегат AVAudioPlayer. Но я хотел бы знать, есть ли способ реализовать это с помощью AVPlayer. Вы можете подсказать идею. - person Tinku George; 19.03.2013
comment
У меня нет большого опыта работы с AVPlayer, но этот вопрос SO охватывает ту же проблему: stackoverflow.com/questions/6837002/ - person Ryan Poolos; 19.03.2013
comment
В любом случае я меняю свой AVPlayer на AVAudioPlayer. Спасибо за ваш совет. - person Tinku George; 19.03.2013
comment
Ха-ха, я рад, что смог помочь. Удачного кодирования. :) - person Ryan Poolos; 19.03.2013
comment
Это не сработает, если вы пытаетесь транслировать аудио из Интернета. - person Guy Lowe; 01.05.2015

Чтобы получать уведомления, когда AVPlayer прерывается в фоновом режиме, вы можете прослушать уведомление о AudioSession

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerStopped) name:AVAudioSessionInterruptionNotification object:nil];
person KIDdAe    schedule 06.05.2015