AVAudioPlayer wird nicht im Hintergrund abgespielt
ich benutzeAVAudioPlayer
undNSFileHandle
Audio-Streaming zu tun. Die Grundidee ist, dass ich die Streaming-Audiodaten auf dem Gerät mit Dateisystem speichere und dann benutzeAVAudioPlayer
um die gerade gespeicherte Datei abzuspielen.AVAudioPlayer
Diese Datei kann auch dann wiedergegeben werden, wenn das Streaming ausgeführt wird.
Ich habe einUIButton
um das Streamen / Herunterladen zu starten. Wenn die heruntergeladenen Daten auf eine bestimmte Anzahl von Bytes akkumuliert werden,AVAudioPlayer
wird spielen (die "Spiel" -Methode vonAVAudioPlayer
wird automatisch ausgelöst). Meine Frage lautet: Ich tippe auf die Schaltfläche, um das Streamen / Herunterladen zu starten, und drücke dann sehr bald auf die Startschaltfläche des iPhones, damit meine App in den Hintergrund wechselt. Der Download funktioniert weiterhin im Hintergrund, aber die "Play" -Methode vonAVAudioPlayer
gibt "NO" zurück, was bedeutet, dass die "Play" -Methode das Audio nicht wiedergibt.
Ich fügte hinzuAVAudioSession
verwandter Code zur Init-Methode meines Audio-Players:
- (id) initWithURL:(NSString *) downloadedMusicURL
{
if ((self = [super init]))
{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
CFURLRef url = CFURLCreateWithFileSystemPath (NULL, (CFStringRef)downloadedMusicURL, kCFURLPOSIXPathStyle, FALSE);
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:CFBridgingRelease(url) error:nil];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
}
return self;
}
Ebenfalls in der info.plist habe ich den Punkt "App spielt Audio" für den Key "Erforderliche Hintergrundmodi" hinzugefügt. Das "Spiel" wird jedoch im Hintergrund immer noch nicht richtig aufgerufen. Was habe ich noch vermisst? Vielen Dank im Voraus.