Шаблон дизайна для фонового рабочего приложения

Я создал приложение веб-службы и хочу заполнить свои контроллеры представления в соответствии с ответом, который я получаю (через GET) в основном потоке. Но я хочу создать запланированный таймер, который будет управлять моим сервером, если возникнет какая-либо разница (скажем, если счетчик массива изменился), я создам локальное уведомление. Насколько я прочитал здесь и некоторые результаты Google, я не могу запускать свое приложение в фоновом режиме более десяти минут, ожидая некоторых особых ситуаций (аудио, Vo-IP, GPS). Но мне нужно контролировать сервер по крайней мере один раз в минуту .. Может ли кто-нибудь предложить какую-нибудь идею или ссылку, пожалуйста?

EDIT
Я не буду продавать приложение в магазине, только для локальной сети. Допустим, с сервера я отправлю текстовые сообщения пользователям, и если придет новое сообщение, счетчик массива сообщений будет увеличиваться, в этой ситуации я создам уведомление. Мне нужно сохранить эту «управляющую» маршрутизацию навсегда, будь то на переднем плане или в фоновом режиме. Дает ли GCD такое решение, кто-нибудь знает?


person ilhnctn    schedule 16.03.2012    source источник


Ответы (2)


Просто воспроизведите беззвучный звуковой файл в цикле в фоновом режиме ИЛИ пропингуйте местоположение пользователя в фоновом режиме. Да, это немного разряжает батарею, но это простой хак для домашних приложений. Только не забудьте включить типы фона в Info.plist!

person Richard J. Ross III    schedule 16.03.2012
comment
Если у вас есть пример кода или учебник, не могли бы вы поделиться, пожалуйста? Если нет, то все равно попробую :) - person ilhnctn; 16.03.2012
comment
спасибо, я не очень разбираюсь в программировании, поэтому я попросил учебники :) но я думаю, что я легко схвачусь - person ilhnctn; 16.03.2012

Примечание: "[...] я получаю (через GET) в основном потоке". Это не очень хороший подход. Вы не должны никогда получать какие-либо сетевые ресурсы в основном потоке. Почему? Потому что ваш графический интерфейс, поддерживаемый основным потоком, перестанет отвечать на запросы, когда выборка не будет мгновенной. Любой всплеск задержки в сети приводит к менее чем желаемому пользовательскому опыту.

Ответ. Помимо перечисленных особых ситуаций, вы не можете запускать фоновые приложения. Так, как я это вижу:

  • Не ставьте приложение в фоновом режиме. (дерьмовое решение)
  • Попробуйте поместить еще одну «сущность» между приложением и «сервером». Я не знаю, почему вам «нужно контролировать сервер хотя бы раз в минуту», но, возможно, вы можете делегировать это «управление» другому процессу вне устройства?

.

iOS app  ->  some form of proxy server -> server which requires
                                          "babysitting" every minute.
person Community    schedule 16.03.2012
comment
Я не буду продавать приложение в магазине, только для локальной сети. Допустим, с сервера я отправлю текстовые сообщения пользователям, и если придет новое сообщение, счетчик массива сообщений будет увеличиваться, в этой ситуации я создам уведомление. Мне нужно сохранить эту «управляющую» маршрутизацию навсегда, будь то на переднем плане или в фоновом режиме. Дает ли GCD такое решение, у вас есть идеи? - person ilhnctn; 16.03.2012