Реакция на события ControlCenter при использовании AVPlayer для воспроизведения звука HLS
Я ищу способ обработки событий воспроизведения / паузы из iOS ControlCenter при воспроизведении аудио (HLS) с использованием AVPlayer.
У меня все это работает, но оно основано на "именных" уведомлениях, которые не отображаются в заголовочных файлах.
Есть ли "официальный" способ сделать это?
В настоящее время работает следующий код:
- (void) removeControlCenterNotifications
{
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}
- (void) addControlCenterNotifications
{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
__weak MyClass *pWeakSelf = self;
__weak MoviePlayer *pWeakPlayer = player_;
[[NSNotificationCenter defaultCenter] addObserverForName:@"UIApplicationSimpleRemoteActionNotification"
object:nil
queue:NULL
usingBlock:^(NSNotification *notification)
{
if(pWeakSelf == nil) return;
NSNumber *type = notification.userInfo[@"UIApplicationSimpleRemoteActionType"];
switch ([type intValue]) {
case 6: [pWeakPlayer play]; break;
case 7: [pWeakPlayer pause]; break;
}
}];
}
1 ответ
Решение
Решение
Решением этой проблемы было наблюдение за UIEvents, входящими в приложение, и создание моих собственных уведомлений отсюда.
Соответствующий тип события:
UIEventTypeRemoteControl
Соответствующие подтипы событий:
UIEventSubtypeRemoteControlPlay = 100,
UIEventSubtypeRemoteControlPause = 101,
UIEventSubtypeRemoteControlStop = 102,
UIEventSubtypeRemoteControlTogglePlayPause = 103,
UIEventSubtypeRemoteControlNextTrack = 104,
UIEventSubtypeRemoteControlPreviousTrack = 105,
UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
UIEventSubtypeRemoteControlEndSeekingBackward = 107,
UIEventSubtypeRemoteControlBeginSeekingForward = 108,
UIEventSubtypeRemoteControlEndSeekingForward = 109,