2013-03-15 4 views
6

У меня есть требование, чтобы обрабатывать события кнопки воспроизведения/паузы на наушниках на переднем плане. Как когда-нибудь я смогу справиться с такой же сценарий в фоновом режиме, используя приведенный ниже кодКак мы можем обрабатывать события кнопки воспроизведения/паузы в наушниках на переднем плане в ios

if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){ 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 
    [self becomeFirstResponder]; 
    NSLog(@"Responds!"); 
} 

Пожалуйста, помогите с объяснением или пример кода, если это возможно. Я провел много исследований, но не помог.

ответ

10

Вы должны проверить этот критерий:

  1. Редактировать ваш info.plist оговорить, что вы делаете аудио (UIBackgroundModes) в фоновом режиме, а также на переднем плане.
  2. Реализовать эту функцию:

    - (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent 
    { 
        if (theEvent.type == UIEventTypeRemoteControl) 
        { 
        switch(theEvent.subtype) { 
        case UIEventSubtypeRemoteControlTogglePlayPause: 
          //Insert code 
          break; 
         case UIEventSubtypeRemoteControlPlay: 
          //Insert code 
          break; 
         case UIEventSubtypeRemoteControlPause: 
          // Insert code 
          break; 
         case UIEventSubtypeRemoteControlStop: 
          //Insert code. 
          break; 
         default: 
          return; 
        } 
        } 
    } 
    

... очевидно, заменить "// вставить код" с тем, что функциональность Релевент в вашем приложении.

3> И, наконец, для того, чтобы что выше функции можно назвать, вставить это в вашем случае viewDidAppear:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    if ([self canBecomeFirstResponder]) { 
     [self becomeFirstResponder]; 
    } 

также смотрите по этой ссылке: http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/

+0

спасибо за ваш ответ, но я не могу обрабатывать события в фоновом режиме, также я добавил UIBackgroundModes в PLIST, но у меня нет представление о работе переднего плана. Я попытался запустить упомянутый метод '- (void) remoteControlReceivedWithEvent: (UIEvent *) theEvent', но не повезло. Не могли бы вы объяснить мне, как мы можем добавлять в планшетные клавиши. –

+0

Awesome..it работал для меня ..! – JgdGuy

+0

Через 2 минуты, если нажать на кнопку для наушников, начнется музыкальное приложение и начнется воспроизведение предыдущего звука. –

9

Там есть еще один способ реализации плеер от наушников. use MPRemoteCommandCenter tooglePlayPauseCommand. Apple documentation

[[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)]; 
4

Быстрая версия 2 для решения slobodans:

MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop(_:)));