Дизайн шаблона для фонового рабочего приложения - PullRequest
2 голосов
/ 16 марта 2012

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

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

Ответы [ 2 ]

0 голосов
/ 16 марта 2012

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

0 голосов
/ 16 марта 2012

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

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

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

.

iOS app  ->  some form of proxy server -> server which requires
                                          "babysitting" every minute.
...