2012-02-23 85 views
0

我正在制作iphone应用程序(Live radio app)。如果手机在背景模式下播放时响铃

我的应用程序支持后台模式。

但是,如果手机响起当广播应用程序在后台模式下播放时,我的应用程序停止出现错误。

MP AVAudioSessionDelegateMediaPlayerOnly end interruption. Interruptor <Phone> category <completed> resumable <0>, _state = 6 
MP endInterruptionFromInterruptor :: resuming playback 

所以,我修改了我的代码,但没用。

我会添加我的代码。请告诉我我的错误。谢谢。

AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate, AVAudioSessionDelegate> 

@property (assign, nonatomic) UIBackgroundTaskIdentifier bgTask; 
... ... 

@end 

AppDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
     bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
     // Clean up any unfinished task business by marking where you. 
     // stopped or ending the task outright. 
     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }]; 

    // Start the long-running task and return immediately. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     // Do the work associated with the task, preferably in chunks. 

     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }); 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{   
     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }];  
} 

viewController.m

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil]; 
moviePlayer = [[MPMoviePlayerController alloc] init]; 
[moviePlayer setContentURL:... m3u8]; 
[moviePlayer play]; 

回答

0

你需要补充一点:
[UIApplication的sharedApplication] beginReceivingRemoteControlEvents]。