Обновите мое приложение, когда оно в фоновом режиме - PullRequest
2 голосов
/ 16 февраля 2012

Я хочу обновить некоторые данные в моем приложении.Считайте, что приложение находится в фоновом состоянии, оно не является ни Voip, ни Music, ни GPS.Можно ли обновить / отправить данные в приложение, которое находится в фоновом режиме?

ПРИМЕЧАНИЕ. Я не хочу уведомлять пользователя, чтобы приложение стало активным.

Кто-нибудь может мне помочь ??

Ответы [ 4 ]

4 голосов
/ 16 февраля 2012

Ответ - да и нет.

Apple позволяет вашему приложению завершать длительный процесс в фоновом режиме. Но если вы не попадаете в категорию Voip, музыка или GPS, вы не можете работать в фоновом режиме.

Если, например, вы хотите отправить некоторые данные на сервер, что может занять некоторое время, вы можете пометить этот процесс как выполненный обратно, пока он не завершится (или не пройдет 10 минут).

Вы найдете около Executing a Finite-Length Task in the Background

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

0 голосов
/ 29 января 2013

Если вы хотите обновить данные сервера, когда ваше приложение работает в фоновом режиме, приложение должно быть активным в это время.Он может быть активным, только если он использует «музыку, или VoIP, или отслеживание местоположения», в противном случае приложение будет приостановлено в фоновом режиме.

Один из способов избежать этого - разработать приложение и настроить его.использовать, например, «отслеживание местоположения».Это позволит ему соответствовать требованиям для активного фонового процесса, и вы сможете обновить данные сервера.

К сожалению, я не знаю, может ли приложение пройти одобрение магазина приложений с этой настройкой.Однако, если вы заинтересованы в этом решении, вы можете найти пример здесь .

0 голосов
/ 17 февраля 2012

Я сделал это в одной из моих работ.это то, что я сделал.

когда приложение вводит: - (void)applicationDidEnterBackground:(UIApplication *)application

Я отправляю данные на сервер, используя ASIHTTPRequest со свойством: [request setShouldContinueWhenAppEntersBackground:YES];

Но после завершения,я больше не делал подключения или манипулирования данными.Таким образом, только фоновое соединение работает, а не ваше приложение.после завершения соединения вы ничего не сможете сделать.

Как уже упоминалось @rckoenes, вы не можете выполнять задачу слишком долго.

0 голосов
/ 16 февраля 2012

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

...