Разрешенные фоновые действия приложения iOS 7

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

Версия ОС - iOS 7.1

У меня есть несколько вопросов о том, что я могу делать в фоновом режиме.

(1) Поскольку мое приложение зарегистрировано для обновления местоположения в фоновом режиме, могу ли я отслеживать доступность сети, состояние вызова, уровень заряда батареи? Я много гуглил, но не совсем ясно, разрешено ли отслеживать и собирать сетевые данные, данные о батарее и данные о вызовах, когда мое приложение зарегистрировано для обновлений местоположения при работе в фоновом режиме.

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

(3) Целью захвата указанных данных является сохранение захваченных данных в базе данных sqlite и отправка на сервер с помощью веб-сервисов. Это разрешено?

Мое приложение отправится в магазин приложений Apple, поэтому я ищу приемлемый подход.

Где-то я читал, что если ваше приложение зарегистрировано для VOIP в фоновом режиме, вы можете создать сокет и получить данные. Но я не уверен, что этот способ работает или может быть принят Apple App Store.


person Srivathsa    schedule 14.08.2014    source источник


Ответы (1)


Да, вы можете делать все, что вы собираетесь делать (как вы заявили), если вы НЕ звоните в OpenGL ES.

iOS запрещает фоновым приложениям получать доступ к графическому процессору, поэтому самое переднее приложение всегда может предоставить пользователю отличный опыт. Ваше приложение может быть завершено не только в том случае, если оно выполняет вызовы OpenGL ES в фоновом режиме, но и в том случае, если ранее отправленные команды сбрасываются на графический процессор в фоновом режиме. Ваше приложение должно убедиться, что все ранее отправленные команды завершили выполнение, прежде чем перейти в фоновый режим.


Apple предоставляет хорошее руководство о том, что делать и не делать в фоновом режиме здесь:

https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

См. раздел Ответственное фоновое приложение.

person Anindya Sengupta    schedule 14.08.2014
comment
Спасибо, Аниндия, за то, что нашли время дать мне ответ. Но в соответствии с рекомендациями Apple в той же ссылке говорится, что когда приложение iOS находится в фоновом режиме, оно может выполнять только задачи, связанные с «Данные о местоположении», «Фоновая выборка», « VOIP», аудио, Bluetooth и т. д. Но это не говорит о том, что при регистрации в одной из утвержденных служб, таких как «Данные о местоположении», можно ли использовать другие службы, такие как доступность, статус вызова, уровень заряда батареи.. Так что, если у вас есть сталкивался с любым таким случаем использования, пожалуйста, помогите мне понять .. Еще раз большое спасибо .. - person Srivathsa; 18.08.2014
comment
Это возможно, и Apple это одобряет. Apple оставляет задачу обнаружения противоправных действий самой iOS. Основная проблема Apple заключается в том, что приложению переднего плана должно быть выделено максимальное количество ресурсов. Вот причина всех этих ограничений. Пока вы позволяете это (не делая тяжелых вещей, таких как вызов OpenGL или потребление большого объема памяти), Apple с вами все в порядке. - person Anindya Sengupta; 18.08.2014