Evita que AVPlayer y UIWebView reproduzcan música al mismo time

Gracias por notar esta pregunta. Estoy usando un singleton para reproducir música en mi aplicación, a través de AVPlayer , de esta manera:

 AVAudioSession *session = [AVAudioSession shanetworkingInstance]; [session setCategory:AVAudioSessionCategoryPlayback error:nil]; [session setActive:YES error:nil]; AVURLAsset *musicAsset = [[AVURLAsset alloc] initWithURL:url options:nil]; AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:musicAsset]; AVPlayer *player = [AVPlayer playerWithPlayerItem:_playerItem]; player.actionAtItemEnd = AVPlayerActionAtItemEndNone; [player play]; 

Funciona bien. Pero mi aplicación tiene algunas páginas de música (HTML5), por lo que el usuario también puede visitar la página web y reproducir música allí. La música de UIWebView y de AVPlayer se puede reproducir al mismo time, parece ser muy extraño. ¿Hay alguna forma de detectar si UIWebView reproducirá música, por lo que puedo detener el AVPlayer nativo? ¡Gracias!

¿Has intentado escuchar AVPlayerItemBecameCurrentNotification? Cuando su página web abra un file multimedia (video o audio), esto se activará. Puede interceptarlo de la siguiente manera:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(avPlayerItemBecameCurrent:) name:@"AVPlayerItemBecameCurrentNotification" object:nil]; 

Ahora (y me doy count de que te estoy enseñando a chupar huevos aquí, mis disculpas. Esto es solo para completar) necesitas avPlayerItemBecameCurrent:

 -(void)avPlayerItemBecameCurrent:(NSNotification*)notification { // Your code goes here to stop your native AVPlayer from playing. } 

Advertencia: no he probado esto, pero debería funcionar.

(Habiendo escrito esto, y después de cavar un poco más, encontré esta Detección e interceptación de reproducción de video en UIWebView )