Законно ли создавать рекурсивный фоновый обработчик в iphone? (Обработка, когда приложение переходит в фоновый режим) - PullRequest
0 голосов
/ 30 сентября 2011

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

Ответы [ 4 ]

3 голосов
/ 30 сентября 2011

Из документации :

Приложения, выполняющие фоновые задачи, имеют ограниченное время чтобы запустить их. (Вы можете узнать, сколько времени доступно, используя свойство backgroundTimeRemaining.) Если вы не вызываете endBackgroundTask: за каждую задачу до истечения времени система убивает приложение.

Так что нет, вы не можете бесконечно бегать в фоновом режиме.

0 голосов
/ 24 октября 2011

Из комментария 20 на Выпуск 515. Фоновая поддержка приложений для iPhone с поддержкой многозадачности :

Я почти уверен, что без непрерывного воспроизведения аудиофайла или регистрации позиции GPSВы не можете поддерживать живые сокеты прослушивания UDP в iOS 4.3+ (как в основном потоке, так и во вторичном).Если вы проигрываете аудио с помощью AVAudioPlayer (после инициализации AudioSession до этого) в nsrunloop каждые 5 секунд, основной поток остается активным, и, кроме того, НЕ обязательно объявлять поддержку звукового фона в info.plist.

Я думаю, что это «трюк», используемый Media5 и Bria.Я попытался также создать бесконечный поток TCP для интерфейса обратной связи, объявляя его как VoIP, просто чтобы проверить, поддерживается ли также сокет UDP.Ответ - нет, только TCP-сокеты работают в фоновом режиме (и с заблокированным экраном), в то же время UDP закрыт и больше не может прослушивать входящие вызовы.

Таким образом, ключевым моментом является то, что основной поток должен бытьоставаться активным ... использование простого nstimer o бесконечный цикл запуска бесполезен, поскольку сторожевой таймер убивает процесс через несколько секунд в фоновом режиме (за исключением случаев, когда вы работаете в режиме отладки с подключенным интерфейсом GDB, он работает вечно).*

0 голосов
/ 13 октября 2011

Существует VoIP-приложение Media5, которое может принимать в фоновом режиме входящие звонки с использованием UDP-сокетов.

Разработчики заявили, что использовали «трюк» для поддержания приложения активным всегда, и я бы исключил тихий звукигровой вариант.Вопрос в том, что это за уловка?

Также Bria может получать с UDP в фоновом режиме.

0 голосов
/ 01 октября 2011

Да, это правильно, вы не можете так бесконечно бегать. Но я обнаружил еще одну хитрость: когда приложение выходит в фоновый режим, начинайте проигрывать звук с громкостью 0 :-) Ваше приложение никогда не будет убито.

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