Реагирование на события, когда устройство заблокировано - PullRequest
5 голосов
/ 11 марта 2012

Я работаю над радио-будильником, и у меня есть некоторые проблемы. Я использую локальные уведомления для сигналов тревоги, поэтому у него есть мягкий запасной вариант, если приложение не запущено.

Мне хорошо известны ограничения устройства, и я знаю, что я могу и не могу делать, когда устройство переходит в фоновый режим.

Но мой вопрос таков: Я видел другие приложения, запускающие аудио-стример, когда я заблокировал устройство. Как это возможно? Может ли это быть в сроки исполнения?

Как лучше всего это реализовать? Можно ли активировать сеанс потоковой передачи, когда устройство заблокировано?

Редактировать

Чтобы уточнить: я знаю, как заставить звук воспроизводиться в фоновом режиме. Но проблема в том, что при воспроизведении локального уведомления или какого-либо другого события запускается воспроизведение звука.

Одно приложение, которое, кажется, делает это, - Radio Alarm Clock . Я не пробовал это в течение длительного периода времени еще. Но, похоже, это делает. Видео-демонстрация приложения: http://www.youtube.com/watch?v=KJQiFOcdBWk

1 Ответ

3 голосов
/ 11 марта 2012

Вы уже объявили свою фоновую задачу?

Поддержка некоторых типов фонового выполнения должна быть заранее объявлена ​​приложением, которое их использует.Приложение заявляет о поддержке службы, используя свой файл Info.plist.Добавьте ключ UIBackgroundModes в файл Info.plist и установите его значение в массив, содержащий одну или несколько из следующих строк:

audio - приложение воспроизводит звуковой контент для пользователя в фоновом режиме,(Это содержимое включает потоковое аудио или видео с использованием AirPlay.)

Руководство по программированию приложения для iOS - реализация долгосрочных фоновых задач

Вы можете добавить это, нажавна значке основного проекта, затем на вкладке «Информация» вы можете добавить «Необходимые фоновые режимы» в раздел «Пользовательские свойства целевого объекта iOS».«Приложение воспроизводит звук» будет одним из трех значений по умолчанию.

Большое редактирование с новым ответом:

Если все остальное уже в порядке, вы можете поддерживать приложение в фоновом режиме, используяметод UIApplication

- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler

подробно описан здесь: Ссылка на класс UIApplication

с примером здесь: Час 21: Создание фоновых приложений

Это позволяет вам запускать экземпляр NSTimer, который запускает ваш музыкальный проигрыватель.Разница между этим подходом и UILocalNotifications заключается в том, что этот метод никогда не позволяет приложению полностью перейти в фоновый режим, музыкальный проигрыватель существует все время, что устраняет необходимость его создания из фона, что выглядит невозможным.

Могут быть ограничения на то, как долго вы можете установить таймер, я не проверял это последние 14 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...