Io lavoro su una piccola app in cui voglio che il telefono riproduca un file audio su un evento dal mio controller di posizione. Il problema è quando l'app è in modalità background, AVAudioPlayer non avvia il file audio ma il codice è pianificato, ottenendo l'output NSLog. Un'altra cosa è che funziona nel simulatore ma non sul telefono.IOS: riproduzione audio mentre l'app in background
Perché no?
Questo è il mio codice per riprodurre il file:
- (void)tryPlayTaleSound:(NSString*)fileName {
NSString *backgroundMusicPath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mp3"];
NSURL *backgroundMusicURL = [NSURL fileURLWithPath:backgroundMusicPath];
NSError *error;
backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundMusicURL error:&error];
// Check to see if iPod music is already playing
//UInt32 propertySize = sizeof(otherMusicIsPlaying);
//AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &otherMusicIsPlaying);
// Play the music if no other music is playing and we aren't playing already
//if (otherMusicIsPlaying != 1 && !backgroundMusicPlaying) {
//[backgroundMusicPlayer prepareToPlay];
[backgroundMusicPlayer play];
backgroundMusicPlaying = YES;
//}
NSLog(@"%s - ", __FUNCTION__);
}
Nel registro Im ottenendo questo.
Apr 26 13:57:48 iPhone CommCenter[58] <Notice>: Client [com.apple.persistentconnection[dataaccessd,85]] is telling PDP context 0 to go active.
Apr 26 13:57:50 iPhone Herning100[1467] <Warning>: Playing audiofile - filename is Fil03
Apr 26 13:57:50 iPhone mediaserverd[39] <Warning>: 13:57:50.653 <AudioControl> WARNING translating CMSession error: -12985
Apr 26 13:57:50 iPhone mediaserverd[39] <Warning>: 13:57:50.656 <AudioControl> WARNING translating CMSession error: -12985
Apr 26 13:57:50 IPhone mediaserverd[39] <Error>: 13:57:50.734 <AudioControl> AudioQueue: Error -12985 from AudioSessionSetClientPlayState(1467)
Apr 26 13:57:50 iPhone Herning100[1467] <Warning>: -[AppDelegate tryPlayTaleSound:] -
Apr 26 13:57:50 iPhone com.apple.debugserver-199[1465] <Warning>: 9 +28.832083 sec [05b9/0303]: error: ::mach_vm_region_recurse (task = 0x1603, address => 0xfffffffe, size => 0, nesting_depth => 1024, info => 0x2fd7fe48, infoCnt => 12) addr = 0xfffffffe err = (os/kern) invalid address (0x00000001)
Apr 26 13:57:51 iPhone com.apple.debugserver-199[1465] <Warning>: 10 +0.187961 sec [05b9/0303]: error: ::mach_vm_region_recurse (task = 0x1603, address => 0xfffffffe, size => 0, nesting_depth => 1024, info => 0x2fd7fe48, infoCnt => 12) addr = 0xfffffffe err = (os/kern) invalid address (0x00000001)
C'è una differenza se utilizzo AVAudioPlayer o AVAudioSession.?
Spero che qualcuno possa aiutare.
/Lasse
Spero che questo collegamento possa aiutarti. http://stackoverflow.com/questions/6785925/how-to-playing-audio-in-back-background-mode-when-if-i-click-on-iphone-button-to-min – rir