Если телефон звонит во время игры в фоновом режиме - PullRequest
0 голосов
/ 23 февраля 2012

Я создаю приложение для iphone (приложение для радио).

Мое приложение поддерживает фоновый режим.

Но если телефон зазвонит, когда приложение радио воспроизводится в фоновом режиме, мое приложение остановится с ошибками.

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];

1 Ответ

0 голосов
/ 01 марта 2013

Вы должны добавить это:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

...