Ok, entonces mi aplicación reproduce videos, quiero que el sonido continúe sonando en segundo plano. Pero cuando presiono el botón "Inicio" la reproducción se detiene. Estoy probando en iPhone 4s con iOS 5.0.1AVPlayer: el audio de fondo se detiene cuando se presiona el botón de inicio, pero se reproduce con la pantalla bloqueada
¿Qué está funcionando?
- Si se reproduce el video y me bloquear la pantalla, que sigue jugando,
- puedo controlar la reproducción a partir de los controles de la pantalla de bloqueo: siguiente, anterior, reproducción, pausa.
- Si presiono "casa", a continuación, vaya a la "controles remotos" en la barra de tareas múltiples, funciona.
¿Qué problema?
- Quiero la aplicación para seguir jugando cuando se presiona el botón "Inicio", porque cuando lo haga, audio se detiene.
¿Qué he hecho:
- Agregado "audio" a "modos de antecedentes requeridas" en mi app.plist
Agregado el siguiente código de la aplicación aplicación de delegado : didFinishLaunchingWithOptions:
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
En mi controlador de vista he aplicado los métodos para recibir los mandos a distancia:
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//End recieving events
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[self play:nil];
break;
case UIEventSubtypeRemoteControlPreviousTrack:
[self actionPlaybackPreviousItem];
break;
case UIEventSubtypeRemoteControlNextTrack:
[self actionPlaybackNextItem];
break;
default:
break;
}
}
}
¿Cómo es que todo funciona, pero esto?
También se puede registrar desde el interior de su reproductor a la 'UIApplicationDidEnterBackgroundNotification' cuando se reproduce la película y retire la observe cuando se detiene la película. Todavía tiene que usar un temporizador para reanudar el video cuando se inicia la notificación. – MacTeo
Otto Boy ya comenta [este enlace] (https://developer.apple.com/library/content/qa/qa1668/_index.html), pero el temporizador no es bueno para este caso. Cuando usamos el temporizador, hay una parada breve durante 0.1seg. Simplemente eliminas AVPlayer de AVPlayerLayer. –