Как включить элементы управления iPod в фоновом режиме для управления музыкой без iPod в iOS 4?
Хороший пример того, что я пытаюсь выполнить, реализован в последней версии приложения iPhone Spotify для (у Pandora есть такая же функция).
Когда Spotify находится в фоновом режиме, двойное нажатие открывает "многозадачную док-станцию", где элементы управления iPod (воспроизведение/пауза, перемотка вперед и т.д.) позволяют управлять воспроизведением музыки Spotify (а не приложением ipod). Кроме того, когда iphone/ipod touch заблокирован, двойное нажатие отображает аналогичные элементы управления воспроизведением.
Если вы не знаете, что я имею в виду, вот статья с скриншотами:
http://www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/
В моем текущем приложении музыка транслируется с сервера (используя Matt Gallagher AudioStreamer). Мне удалось сохранить музыку в фоновом режиме. Теперь я хотел бы связать свое воспроизведение с экраном "multi-task dock" /lock.
Должен ли я использовать [MPMusicPlayerController iPodMusicPlayer]
? Как я могу продолжить?
Бонусный вопрос: если вы можете сказать мне, как изменить значок ipod на значок моего приложения в "многозадачной док-станции" (Spotify тоже вытащил этот трюк...), который должен быть УДИВИТЕЛЬНЫМ.
Любая благодарность, спасибо.
Ответы
Ответ 1
Проблема решена.
Короче говоря, чтобы включить событие дистанционного управления, 1) используйте:
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent
и 2), это ваш контроллер:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
Я должен отдать должное Гранту. Он разветкил Matt Gallagher AudioStreamer, обеспечив все улучшения ios4 (фоновое аудио и удаленные элементы управления). Вы можете найти его источники вместе с рабочим образцом на github: http://github.com/DigitalDJ/AudioStreamer
Относительно значка: после использования beginReceivingRemoteControlEvents
значок автоматически переключается на значок вашего приложения. Блестящий!
Ответ 2
Здесь документация:
http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/RemoteControl/RemoteControl.html
Обратите внимание, что он будет работать только тогда, когда у вас активная аудио сессия в вашем приложении.
Я использую его с AVAudioSession
с категорией AVAudioSessionCategoryPlayback
и AVAudioPlayer
, а "удаленные элементы управления" работают только тогда, когда у меня есть AVAudioSession
active и AVAudioPlayer
созданный объект.
Ответ 3
Элементы управления будут изменяться для вашего приложения, если вы используете новый фоновый аудио api. Информацию можно найти здесь. В частности, разделы об фоновом аудио.