2012-06-03 3 views
2

Я пытаюсь использовать экран блокировки/теперь играть элементы управления для своего приложения, но я не получаю никаких событий. Документация делает это довольно прямолинейным, поэтому я был немного удивлен, когда у меня не было никаких результатов. Мое приложение должно получать события дистанционного управления для целей вне воспроизведения звука на устройстве. Я попытался проверить это, просто распечатав некоторое подтверждение с помощью NSLog. Нужно ли использовать аудио- или мультимедийную среду, которая не упоминалась в документации? Я не получаю никаких предупреждений или ошибок, поэтому я не думаю, что с этим возникнут какие-либо проблемы ... Любое понимание того, почему события дистанционного управления не регистрируются, будет с благодарностьюНе получать события дистанционного управления

Вот код:

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

    //Register for lock screen controls 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [self becomeFirstResponder]; 
} 

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

    //Unregister lock screen controls 
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 
    [self resignFirstResponder]; 
} 

- (BOOL)canBecomeFirstResponder{ 
    return YES; 
} 

//Lock screen controls 
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{ 
    NSLog(@"RECEIVED"); 
    if (event.type == UIEventTypeRemoteControl) { 

     switch (event.subtype) { 

      case UIEventSubtypeRemoteControlTogglePlayPause: 
       NSLog(@"RECEIVED"); 
       break; 

      case UIEventSubtypeRemoteControlPreviousTrack: 
       NSLog(@"RECEIVED"); 
       break; 

      case UIEventSubtypeRemoteControlNextTrack: 
       NSLog(@"RECEIVED"); 
       break; 

      default: 
       break; 
     } 
    } 
} 

ответ

3

В дополнение к тому, что упоминалось в Jojas, вам необходимо убедиться, что у вас активная аудио сессия. Посмотрите на [AVAudioSession setActive: withFlags: error:].

+0

Хм нормально. Мне было интересно, является ли нехватка аудио сессии частью проблемы. – Squatch

+0

В этом была проблема. Мое приложение не воспроизводит звук самостоятельно, а скорее общается с другим устройством, воспроизводящим аудио. Я добавил аудио-сессию, но он будет получать только удаленные события, если приложение было последним, чтобы воспроизвести аудио. Я отправлю новый вопрос о том, как обойти это, но я хотел поблагодарить вас! – Squatch

+0

@Squatch, вы закончили публикацию другого вопроса? – Moshe

1

вы уже убедитесь, что ваше приложение каждое государство установки ReceivingRemoteControlEvents прекрасно?

Вы должны искать необходимый протокол через UIApplicationDelegate в своем AppDelegate. Кажется, что вам нужно реализовать в applicationWillResignActive и applicationDidBecomeActive.

Однако есть документ Apple о App States and Multitasking. Я думаю, что это поможет вам справиться с состоянием приложения с вашей целью.

Надеюсь, это поможет вам!

+0

Я считаю, что вы правы. Введенный код был в моем контроллере просмотра, и я не задал эти активные методы состояния в своем делетете. Я попробую ваше предложение и отчитаюсь. – Squatch

+0

Получается, что у меня были эти методы, реализованные по умолчанию AppDelegate. Проблема заключалась в отсутствии аудио сессии. Спасибо вам за вашу помощь. Документация, с которой вы связывались, очень помогла, пытаясь точно понять, что происходит. – Squatch

+0

Я рад помочь вам. не стейсняйся спросить. – Sakares

Смежные вопросы