Фон поддержка аудио и дистанционного управления Использование MPMUSICPLAYERCONTROLLER на iOS 4. Это даже возможно?

StackOverflow https://stackoverflow.com/questions/3175974

Вопрос

Я провел два дня на это и никуда не потратил. Я пытаюсь использовать [MPMUSICPLAYERCONTROLLER ApplicationMusicPlayer], чтобы воспроизвести звук, выбранный из библиотеки iPod пользователя и запустить его на заднем плане, а также поддерживать удаленные события. Теперь на самом деле игра на самом деле - это легкая часть. Получите экземпляр, выберите песни, назначьте музыкальную очередь и играйте. Сделано и сделано. Но ... а) Я не могу получить его играть на заднем плане, а б) даже когда на переднем плане я не могу получить события дистанционного управления, чтобы работать вообще!

И прежде чем спросить, да, я установил записи Plist, категорию аудиосигнала, звонок, чтобы сказать, что я заинтересован в получении удаленных событий и настроил первый ответчик, чтобы прослушать их, поэтому, пожалуйста, узнайте, да, я ' Читайте прочитанные каждый один документ на эту тему, которое я мог найти * (* Задача, которую я обвиняю Apple для того, чтобы не был понятен вообще на этой теме, ни какой-либо пример кода!) И я смотрел каждый из Видео WWDC, относящиеся к нему (даже замораживание экрана, чтобы скопировать код точно из своего примера ...) Итак, если я не пропустил что-то не в этом списке, ответ на любую из этих ответов не собирается помочь.

Еще одна вещь ... Я явно говорю об использовании MPMusicPlailerTroller, который согласно документам, никогда не использует сеанс приложения. Это всегда использует системный сеанс. (Может быть, что в себе отвечает на мой вопрос, но документы не ясно говорят, что я не уверен, отсюда и этот вопрос.)

Это сказал, что через два дня мои мысли это:

  1. При использовании MPMUSICPLAYERCONTROLLER, независимо от того, какие методы вы звоните или какие записи Plist вы устанавливаете, ваше приложение никогда не будет работать в фоновом режиме. Период. Если вы используете экземпляр iPodmusicPlayer, музыка продолжает играть, но это потому, что это играет iPod, а не ваше приложение. Если вы используете экземпляр ApplicationMusIcPlayer, приходя к фону, ваша музыка останавливается. В обоих случаях ваше приложение приостановлено.

  2. Независимо от вашего использования экземпляров iPodmusicPlayer или ApplicationMusicPlayer или ApplicationMusicPlayer, все удаленные события переходят на саму приложение iPod, а не ваше, даже если вы явно просили их. Если вы используете экземпляр ApplicationMusicPlayer, и вы используете пульт дистанционного управления, чтобы выбрать «PLAY», приложение iPod принимает команду, чтобы ваши аудио утки и прерываются, и воспроизведение начинается в приложении iPod. Если вы выбрали iPodmusIcplayer вместо этого, то, конечно, не имеет значения, поскольку вы явно сказали, что вы в основном просто заинтересованы в дистанционном управлении приложением iPod, которое снова является то, что на самом деле получает удаленные события.

  3. Значок в регулявах быстрого переключателя внизу Никогда не меняется в значок вашего приложения, потому что еще раз, ваше приложение никогда не устанавливается для получения событий. Приложение iPod есть, поэтому его значок появляется там.

Так что я хочу знать, это ... Я здесь не прав? Кто-нибудь успешно успешно использовал MPMUSICPLAYERCONTROLLER и смогли перехватить удаленные события? Хотя я бы предпочел использовать ApplicationMusicPlayer с помощью фоновой музыки поддержки, поэтому я не обманывающую iPod пользователя, тем большая вещь - уведомления с дистанционным управлением, что означает, что если я должен использовать iPodmusicControl и сохранить мое приложение на переднем плане, чтобы перехватить их Сообщения, так что будь то. Таким образом, это уродливо, но, по крайней мере, это что-то.

Примеры кода или, по крайней мере, явные шаги против одного из встроенных шаблонов приложений будут очень оценены. (Даже не нужна реализация ... Просто шаги. Надеюсь, что будет умирать неизбежное «Это все еще под ним, что люди продолжают отвечать на вопросы.)

Отметка

Это было полезно?

Решение

Я решил это. Информация на мой другой вопрос здесь ...

Переполнение стека: воспроизведение музыки iPod при получении событий дистанционного управления

... Но короткая версия - это вы должны использовать AVPlayer (но не AvaudioPlayer. Не знаю, почему то есть!) с URL-адресом актива от MPMediaItem вы получили из библиотеки, то установите категорию аудио сеанса для воспроизведения (не включить Смешиваемым!) И добавьте соответствующие клавиши к вашему файлу info.plist, показывая, что ОС ваше приложение хочет поддержать фоновый аудио.

Это позволяет вам играть в элементы из вашей библиотеки iPod (кроме файлов Audible.com по какой-то причине!) И все же получите удаленные события. Предоставлено, вы должны сделать больше работы, и поскольку это ваш аудиоплеер, который отделен от отделения, и прерывает приложение iPod (что может или не должно быть желательно. И снова не включает в себя смешивание или приложение iPod будет угнать Пульт дистанционного управления событиями) Но это перерывы!

Другие советы

Для тех, кто хочет знать, я узнал, что выяснил звук, играя в фоновом режиме, вы должны установить категорию аудио сеанса для воспроизведения, а затем фоновый аудио работает совсем хорошо. Если вы также хотите играть свои собственные звуки одновременно, вы должны пометить категорию в качестве смешиваемой. Это решило фоновую музыкальную часть. Но то, что я обнаружил, это в любое время, когда iPod играет, вам не кажется возможным получить удаленные уведомления.

Вот обновленная нить ...

Как вы можете воспроизводить музыку из приложения iPod, пока не получаем события дистанционного управления в вашем приложении?

М.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top