Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

Проигрывание аудио на заблокированном устройстве

Я использую этот код, чтобы проигрывать аудио, когда устройство заблокировано.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive: YES error: nil]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
Слайдер громкости работает нормально, но кнопка плей/пауза и кнопки перемотки не работают. Почему?


Ответ

Скорей всего потому что не обрабатывается метод - (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent
Пример
AppDelegate.m
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent {
if (theEvent.type == UIEventTypeRemoteControl) { switch(theEvent.subtype) { case UIEventSubtypeRemoteControlPlay: [[NSNotificationCenter defaultCenter] postNotificationName:@"PlayNotification" object:theEvent]; break; case UIEventSubtypeRemoteControlPause: [[NSNotificationCenter defaultCenter] postNotificationName:@"PauseNotification" object:theEvent]; break; case UIEventSubtypeRemoteControlTogglePlayPause: [[NSNotificationCenter defaultCenter] postNotificationName:@"TogglePlayPauseNotification" object:theEvent]; break; default: return; } } }
RadioViewController.m
@property (nonatomic, strong) AVPlayer *player; @property (nonatomic, getter=isPlaying) BOOL playing;
- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }
- (void)viewDidLoad { ... NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:self selector:@selector(play) name:@"PlayNotification" object:nil]; [notificationCenter addObserver:self selector:@selector(pause) name:@"PauseNotification" object:nil]; [notificationCenter addObserver:self selector:@selector(togglePlayPause) name:@"TogglePlayPauseNotification" object:nil]; }
- (void)play { [self.player play]; self.playing = YES; }
- (void)pause { [self.player pause]; self.playing = NO; }
- (void)togglePlayPause { (self.isPlaying) ? [self pause] : [self play]; }

Комментариев нет:

Отправить комментарий