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

Я пишу приложение, которое должно воспроизводить звук в качестве реакции на изменение местоположения пользователя.

когда приложение работает в основном фокусе (а не в фоновом режиме), все работает хорошо, и звук воспроизводится правильно с помощью AVAudioPlayer.

если я заставлю приложение перейти в фоновый режим (нажав кнопку «Домой»), звук будет продолжать воспроизводиться (я изменил файл info.plist и использовал [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil]; чтобы это стало возможным).

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

мой вопрос: как я могу заставить приложение воспроизводить звук, когда он не находится в основном фокусе (он находится в фоновом режиме)?


person jbjb    schedule 20.08.2011    source источник
comment
Я не знаю, возможно ли это, но я бы попытался отправить локальное уведомление и, если пользователь откроет его, начать воспроизведение звука.   -  person EmilioPelaez    schedule 20.08.2011
comment
Попробуйте использовать другую звуковую структуру, такую ​​как MediaPlayer или AudioToolBox, я думаю, что они могут быть более способны воспроизводить звук из фона, чем AVAudioPlayer.   -  person Mick MacCallum    schedule 21.08.2011


Ответы (2)


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

person Marcus Toepper    schedule 20.08.2011

Я думаю, вам просто нужно объявить свое приложение как аудиоприложение. Вы можете сделать это, добавив ключ UIBackgroundMode со значением audio в ваш файл info.plist.

person Darshan Prajapati    schedule 20.08.2011
comment
Я объявил это как аудиоприложение. может я не понял. я изменил файл info.plist ... - person jbjb; 20.08.2011