Я хочу, чтобы мое приложение использовало звуковые кнопки на экране блокировки во время многозадачности. (Да, как Пандора.) Какой API я ищу использовать?Использование экрана блокировки для моего приложения?
ответ
См. Документы Remote Control of Multimedia. В принципе, вам просто нужно позвонить -beginReceivingRemoteControlEvents
в свой общий экземпляр приложения, а затем зарегистрировать что-то (возможно, ваш главный контроллер представления) в качестве первого ответчика и реализовать на нем метод -remoteControlReceivedWithEvent:
. Вы получите события как из элементов управления блокировкой, так и из кликера для гарнитуры, а также кнопки управления слева от многозадачного ящика. Чтобы воспроизводить звук, пока ваше приложение не является основным, вы также должны проверить this information на фоновом аудио.
Это еще проще, начиная с iOS 7. Вот пример переключения режимов воспроизведения/паузы (кнопка гарнитуры). Дополнительные сведения см. В документах для MPRemoteCommandCenter и MPRemoteCommand.
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
[commandCenter.togglePlayPauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
NSLog(@"toggle button pressed");
return MPRemoteCommandHandlerStatusSuccess;
}];
или, если вы предпочитаете использовать метод вместо блока:
[commandCenter.togglePlayPauseCommand addTarget:self action:@selector(toggleButtonAction)];
Для остановки:
[commandCenter.togglePlayPauseCommand removeTarget:self];
или:
[commandCenter.togglePlayPauseCommand removeTarget:self action:@selector(toggleButtonAction)];
Вы будете необходимо добавить это в область сложения вашего файла:
@import MediaPlayer;