2013-05-25 3 views
0

мой клиент просит меня разработать приложение, которое периодически извлекает местоположение пользователя & статус батареи телефона, а затем отправляет их на наш серверный сервер для анализа данных, а затем возвращает назад push-уведомление.Реализация долгосрочных фоновых задач в iOS

Но через приложение док, я могу узнать, что от яблока ИОСА устр doc:

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

Apps, которые играют звуковой контент пользователя в то время как в фоновом режиме, , такие как приложение музыкального проигрывателя

приложение, которые держат пользователь в курсе их место во все времена, такие как навигационное приложение

Apps, которые поддерживают передачи голоса по IP-протоколу (VoIP)

Прессу приложений, которые должны загрузки и проце сс нового содержание

приложение, которые получают регулярные обновления от внешних устройств

Я интересно, если это было бы возможно, если мы закончим это приложение, как некоторые навигации приложения, так что мы можем иметь длительные фоновые задачи? Будет ли appstore отклоняться в нашем приложении?

BTW, каково определение навигационного приложения Apple?

+0

Ask Apple. Вам нужно будет четко понять полезность приложения и не пытаться скрыть, что он делает. – Wain

+0

Привет, Уэйн, спасибо за ответ. Извините, из-за NDA, я не могу сказать больше требований. Я могу отправить Apple ответ. – David

ответ

2

Вы могли бы рассмотреть возможность использования:

[CLLocationManager startMonitoringSignificantLocationChanges]; 

Это заставит ваше приложение будет перезапущен, если он был убит, когда местоположение существенно меняется, что позволяет обновить данные на сервере при достаточно регулярных интервалах, предполагая пользователь движется. Это не требует специального разрешения фона. В документах:

Если вы запустите эту услугу, а ваше приложение будет завершено, система автоматически перезапустит приложение в фоновом режиме, если произойдет новое событие. В таком случае словарь параметров передается в метод locationManager: didUpdateLocations: метод вашего делегата приложения содержит ключ UIApplicationLaunchOptionsLocationKey, чтобы указать, что ваше приложение было запущено из-за события местоположения.

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

+0

Привет, Тарк, спасибо за советы. Мне нужно последовательно восстановить статус батареи примерно каждые 30 минут. Наше приложение в основном похоже на гибрид с сообществом utility & LBS. Место необходимо, но не ядро. – David

0

https://github.com/yarodevuci/backgroundTask Проверьте мой код здесь я использую аудио-плеер, который играет пустой файл WAV отлично работает на IOS 8 использования батареи около 10% в 24-часовой период Как использовать:

var backgroundTask = BackgroundTask() 
backgroundTask.startBackgroundTask() //Starts playing blank audio file. You can run NSTimer() or whatever you need and it will continue executing in the background. 

backgroundTask.stopBackgroundTask() //Stops the task 
Смежные вопросы