MPMoviePlayerController playing airPlay in the background, crashing when you double-click the home button

MPMoviePlayerController successfully plays airPlay when I go to the desktop and the application is in the background. But when I double-click the home button, the application crashes. This happens on iOS 5, but not on 4.3.

To exclude other code, I created a new empty project that only executes the following code at the click of a button.

moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8"]]; NSError *setCategoryError = nil; [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController]; [moviePlayerController setMovieSourceType:MPMovieSourceTypeStreaming]; [self addObservers]; [self.delegate addSubview:moviePlayerController.view]; if([moviePlayerController respondsToSelector:@selector(setAllowsAirPlay:)]) { [moviePlayerController setAllowsAirPlay:YES]; } moviePlayerController.fullscreen = YES; moviePlayerController.scalingMode = MPMovieScalingModeAspectFit; [moviePlayerController prepareToPlay]; [moviePlayerController play]; 

In the console, I get the following output on failure:

 Jan 27 12:08:01 unknown mediaserverd[295] <Error>: <<<< FIGSERVER >>>> FigPlayerRemoteServer_KillAndForceCrashReport: RPCTimeout message received to terminate [295] with reason 'fig rpc timeout -- FigSharedRemote_VolumeCategoryForAudioCategory' Jan 27 12:08:01 unknown ReportCrash[308] <Notice>: MS:Notice: Installing: (null) [ReportCrash] (675.00) Jan 27 12:08:01 unknown ReportCrash[308] <Error>: Saved crashreport to /Library/Logs/CrashReporter/mediaserverd-2012-01-27-120801.plist using uid: 0 gid: 0, synthetic_euid: 0 egid: 0 Jan 27 12:08:01 unknown mediaserverd[295] <Error>: <<<< FIGSERVER >>>> FigPlayerRemoteServer_KillAndForceCrashReport: RPCTimeout message received; stackshot generated Jan 27 12:08:01 unknown mediaserverd[295] <Error>: <<<< FIGSERVER >>>> FigPlayerRemoteServer_KillAndForceCrashReport: TERMINATING our process [295] Jan 27 12:08:02 unknown com.apple.launchd[1] <Notice>: (com.apple.mediaserverd) Exited: Killed: 9 Jan 27 12:08:02 unknown mediaserverd[310] <Notice>: MS:Notice: Installing: com.apple.mediaserverd [mediaserverd] (675.00) Jan 27 12:08:02 unknown kernel[0] <Debug>: Sandbox: ignoring builtin profile for platform app: /usr/sbin/mediaserverd Jan 27 12:08:02 unknown kernel[0] <Debug>: Sandbox: ignoring builtin profile for platform app: /usr/sbin/mediaserverd Jan 27 12:08:03 unknown mediaserverd[310] <Error>: 12:08:03.383370 com.apple.AVConference: /SourceCache/GameKitServices/GameKitServices-344.3/AVConference.subproj/Sources/AVConferenceServer.m:1862: AVConferenceServerStart aborting - device doesn't support conferencing 

and in crashreport:

 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x00000000, 0x00000000 Crashed Thread: 0 Last Exception Backtrace: 0 CoreFoundation 0x33bab8bf 0x33af2000 + 759999 1 libobjc.A.dylib 0x31bcd1e5 0x31bc4000 + 37349 2 AVFoundation 0x374f6cb5 -[AVPlayerItem _attachToPlayer:forImmediateEnqueueing:shouldAppendItem:] + 341 3 AVFoundation 0x374e71f7 -[AVPlayer _insertPlaybackItemOfItem:inPlayerQueueAfterPlaybackItemOfItem:] + 43 4 AVFoundation 0x374eebf3 __-[AVPlayer _attachItem:andPerformOperation:withObject:]_block_invoke_2 + 1099 5 libdispatch.dylib 0x3641cd55 0x3641c000 + 3413 6 libdispatch.dylib 0x36427e8d 0x3641c000 + 48781 7 CoreFoundation 0x33b7e2dd 0x33af2000 + 574173 8 CoreFoundation 0x33b014dd 0x33af2000 + 62685 9 CoreFoundation 0x33b013a5 0x33af2000 + 62373 10 GraphicsServices 0x31f56fcd 0x31f53000 + 16333 11 UIKit 0x36d57743 0x36d26000 + 202563 12 AirplayTest 0x00002e45 main (main.m:16) 13 AirplayTest 0x00002dd4 start + 40 

Any clues what could be wrong?

+6
source share
2 answers

This seems to be a bug in iOS version 5.0. With the release of iOS 5.1, it seems to be fixed.

Thanks to @Cyril for confirming this.

0
source

Have you tried setting the useApplicationAudioSession property of your player controller to NO (i.e. simulate the default behavior for iOS 3.1) for iOS 5 only? It seems that there are some errors in the processing of audio sessions in iOS 5, which can lead to the sound server dying when switching between applications, processing interruptions, etc.

If this is fixed, send an Apple bug report as it is more a hack than a fix!

0
source

Source: https://habr.com/ru/post/907014/


All Articles