2013-10-10 3 views
2

Я использовал этот метод How do I get my AVPlayer to play while app is in background?, чтобы воспроизвести AVPlayer в фоновом режиме, чтобы пользователь мог прослушивать при просмотре сафари и т. Д. Только проблема заключается в том, что AVPlayer продолжает воспроизводиться, когда есть входящий вызов и остается во время разговора. Есть ли способ поймать события входящего вызова и завершения вызова, чтобы AVPlayer можно было остановить и запустить вручную?Как прервать AVPlayer для входящего вызова вручную

ответ

1

С помощью рамки coreTelephony мы должны найти или обнаружить входящий звонок. Оттуда вы должны инициировать свое местное уведомление, чтобы остановить ваш AVPlayer. после импорта сделать как это

 CTCallCenter * _callCenter = [[CTCallCenter alloc] init]; 
    _callCenter.callEventHandler = ^(CTCall* call) 
    { 

     if ([call.callState isEqualToString:CTCallStateDisconnected]) 
     { 
      NSLog(@"Call has been disconnected"); 
     } 
     else if([call.callState isEqualToString:CTCallStateDialing]) 
     { 
      NSLog(@"Call start"); 
     } 
     else if ([call.callState isEqualToString:CTCallStateConnected]) 
     { 

      NSLog(@"Call has just been connected"); 
     } 
     else if([call.callState isEqualToString:CTCallStateIncoming]) 
     { 
      NSLog(@"Call is incoming"); 
      // You have to initiate/post your local notification through NSNotification center like this 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"stopAVPlayer" object:nil]; 
     } else 
     { 
      NSLog(@"None of the conditions"); 
     } 


    }; 

Смотрите так: https://developer.apple.com/library/ios/navigation/#section=Frameworks&topic=CoreTelephony

+0

Пример кода, кажется, отсутствует из этой ссылки. Должен ли CTCallCenter быть создан в AppDelegate и взаимодействовать с методами ViewController через NSNotificationCenter? Или он может быть создан в контроллере просмотра вместе с экземпляром AVPlayer? – TijuanaKez

Смежные вопросы