2013-11-29 1 views
2

Я реализовал представление своего AVPlayer на экране блокировки iPhone через MPNowPlayingInfoCenter. Но я не могу найти, как добавить кнопки перемотки ± 15 секунд, как в стандартном приложении Music. Итак, вопрос в том, как добавить эти кнопки на экран блокировки?Как добавить кнопки перемотки назад для блокировки экрана?

ответ

5

В настоящее время я использую AVAudioPlayer, но метод удаленного управления, который является - (void)remoteControlReceivedWithEvent:(UIEvent *)event, не должен быть связан с типом используемого вами игрока.

Следуйте за этим:

В viewDidLoad методе ваш взгляд контроллера добавить следующий код:

//Make sure the system follows our playback status - to support the playback when the app enters the background mode. 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
[[AVAudioSession sharedInstance] setActive: YES error: nil]; 

Затем добавить эти методы: viewDidAppear:: (если не реализован уже)

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    //Once the view has loaded then we can register to begin recieving controls and we can become the first responder 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [self becomeFirstResponder]; 
} 

viewWillDisappear: (если они еще не реализованы)

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    //End recieving events 
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 
    [self resignFirstResponder]; 
} 

И:

//Make sure we can recieve remote control events 
- (BOOL)canBecomeFirstResponder { 
    return YES; 
} 

- (void)remoteControlReceivedWithEvent:(UIEvent *)event { 
    //if it is a remote control event handle it correctly 
    if (event.type == UIEventTypeRemoteControl) 
    { 
     if (event.subtype == UIEventSubtypeRemoteControlPlay) 
     { 
      [self playAudio]; 
     } 
     else if (event.subtype == UIEventSubtypeRemoteControlPause) 
     { 
      [self pauseAudio]; 
     } 
     else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause) 
     { 
      [self togglePlayPause]; 
     } 

     else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingBackward) 
     { 
      [self rewindTheAudio]; //You must implement 15" rewinding in this method. 
     } 
     else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingForward) 
     { 
      [self fastForwardTheAudio]; //You must implement 15" fast-forwarding in this method. 
     } 

    } 
} 

Это работает отлично в мое приложение, однако, если вы хотите, чтобы иметь возможность получать события дистанционного управления во всех контроллерах зрения, то вы должны установить его в AppDelegate.