Ok, quindi la mia app riproduce video, voglio che il suono continui a suonare in background. Ma quando premo il pulsante "Home" la riproduzione si interrompe. Sto testando su iPhone 4s con iOS 5.0.1AVPlayer: l'audio in background si interrompe quando viene premuto il tasto Home, ma viene riprodotto con lo schermo bloccato
ciò che funziona?
- Se il video è in riproduzione e ho bloccare schermo, si continua a giocare,
- posso controllare la riproduzione dei controlli dello schermo di blocco: il prossimo, precedente, play, pausa.
- Se premo "casa", quindi passare alla sezione "telecomandi" dalla barra multitask, funziona.
Cosa c'è che non va?
- voglio l'applicazione di continuare a giocare quando si preme il tasto "home", perché quando lo faccio, audio si interrompe.
Che cosa ho fatto:
- Aggiunto "audio" a "Richiesto modalità sfondo" nel mio app.plist
aggiunto il seguente codice per app applicazione del delegato : didFinishLaunchingWithOptions:
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
A mio controller della vista Ho implementato i metodi per ricevere telecomandi:
- (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;
}
}
}
Come mai tutto funziona, ma, questo?
È inoltre possibile registrare da dentro il lettore al 'UIApplicationDidEnterBackgroundNotification' quando il film è in riproduzione e rimuovere il osservare quando si arresta il filmato. Devi ancora utilizzare un timer per riprendere il video quando viene avviata la notifica. – MacTeo
Otto Boy è già un commento [questo collegamento] (https://developer.apple.com/library/content/qa/qa1668/_index.html), ma il timer non è buono per questo caso. Quando usiamo il timer, c'è un breve stop durante 0.1 secondi. Basta rimuovere AVPlayer da AVPlayerLayer. –