2014-10-13 9 views
0

Я пытаюсь реализовать образец виджета iOS 8 сегодня, который включает в себя элементы управления музыкальным проигрывателем, приложение является основным музыкальным приложением с включенным фоновым звуком.Элементы управления музыкальным плеером в iOS 8 сегодня виджет

Я много искал, чтобы найти способ уведомления содержащего приложения, но я не нашел его !.

Сценарий в основном, приложение находится в состоянии ожидания и на выбранной песне/альбоме (возможно, оно приостановлено на определенной песне), тогда мне нужно отображать имена в виджетах с кнопками воспроизведения/остановки/следующей, и т.д.

на основе документации Apple, и этот документ, в котором описываются сценарии использования: https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensibilityPG.pdf

Он упоминает, что расширения не должны обрабатывать любые длинные исполнения и заявил, воспроизведение аудио в частности, как неподдерживаемый случае, как это должен работать за пределами расширения. но в этом сценарии не упоминался способ запуска содержащего приложения, он просто упомянул метод NSURLSession, который может обрабатывать большие файлы и приложение для пробуждения в фоновом режиме для вызова handleEventsForBackgroundUrlSession и возможности совместного использования приложений App-Group, где оба приложения, содержащие приложение и расширение, могут доступ к совместно используемому контейнеру данных. Единственное возможное решение, о котором говорится, - это решение openURL, которое принудительно выводит все приложение на передний план.

Я установил отдельную группу приложений для своей демонстрации и пробовал вызовы NSNotificationCenter с помощью настраиваемого уведомления, вызвав addObserver/postNotificationName на содержащее приложение и расширение соответственно, но он вообще не работал. Я даже попытался изменить NSUserDefaults для App-Group, но это не срабатывает и в содержании фона приложения.

Вот некоторые вопросы, которые могут быть связаны, но я не нашел ответа на него: (Sharing data between app extension and conainer app) --- (NSUserDefaultsDidChangeNotification not sent when app resumes from the background) --- (Set notifications from Today Extension Widget)

Я думал, что это возможно, не выполнимо, но я просто нашел приложение под названием TapTunes, которое недавно добавило виджет с похожими функциями, включая все элементы управления в самом расширении.

Спасибо.

ответ

0

Вопрос в том, хотите ли вы воспроизвести какой-то пользовательский звук или просто треки с музыкального плеера iOS?

Для меня это похоже, что TapTunes использует стандартный музыкальный плеер. Я думаю, что это может быть достигнуто с помощью MPMusicPlayerController (https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/)

Если вы хотите играть в пользовательские аудио, как правило, у вас есть специальный звуковой фон режим включен (см здесь: http://www.raywenderlich.com/29948/backgrounding-for-ios), и имеют функцию обратного вызова, который непрерывно призванное кормить в новых аудиоданных, например из Интернета. Возможно, вы можете просто наблюдать за ключом NSUserDefault в обратном вызове, который сообщает вам текущее действие («следующий трек», «предыдущий трек» и т. Д.). Я предполагаю, что это может привести к некоторым задержкам до тех пор, пока действие не будет выполнено.

В любом случае, не удивляйтесь, если виджет будет отклонен App Store, поскольку в последнее время они очень осторожны с виджетами, которые не следуют обычной концепции «покажите мне какую-нибудь быструю информацию». То, что TapTunes было одобрено, не означает, что ваше приложение также будет одобрено.