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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage