AVAudioPlayer воспроизводит файл в фоновом режиме

#iphone #objective-c #avaudioplayer

#iPhone #objective-c #avaudioplayer

Вопрос:

Я разрабатываю музыкальное приложение, в котором приложение должно запускаться в фоновом режиме.

То есть, когда пользователь выбирает файл для воспроизведения и нажимает кнопку «Домой», файл должен продолжать воспроизводиться в фоновом режиме.

Я использую AVAudioPlayer.

Я пробовал это:

 **AppDelegate.m**


- (void)applicationDidEnterBackground:(UIApplication *)application {
UIApplication* app = [UIApplication sharedApplication];

NSAssert(self->bgTask == UIBackgroundTaskInvalid, nil);

bgTask = [app beginBackgroundTaskWithExpirationHandler: ^{
    dispatch_async(dispatch_get_main_queue(), ^{
        [app endBackgroundTask:self->bgTask];
        self->bgTask = UIBackgroundTaskInvalid;
    });
}];

dispatch_async(dispatch_get_main_queue(), ^{
    self->bgTask = UIBackgroundTaskInvalid;
});

}

**Player.m**

- (void) viewDidAppear:(BOOL)animated {
NSLog(@"viewDidAppear");
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

}

-(BOOL)canBecomeFirstResponder{ 
NSLog(@"canBecomeFirstResponder");
return YES; 
} 

-(void)viewWillDisappear:(BOOL)animated{
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
[super viewWillDisappear:animated];
}

- (void)remoteControlReceivedWithEvent:(UIEvent*)receivedEvent{

NSLog(@"remoteControlReceivedWithEvent");

if (receivedEvent.type == UIEventTypeRemoteControl){
    switch (receivedEvent.subtype){
        case UIEventSubtypeRemoteControlTogglePlayPause:
            NSLog(@"UIEventSubtypeRemoteControlTogglePlayPause");
            break;
        case UIEventSubtypeRemoteControlPreviousTrack:
            NSLog(@"UIEventSubtypeRemoteControlPreviousTrack");
            break;
        case UIEventSubtypeRemoteControlNextTrack:
            break;
        default:
            break;
    }
}
}