приложение для iPhone, выполнение http-запросов в фоновом режиме - PullRequest
0 голосов
/ 20 июля 2010

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

[self getItemsFromServer]

getItemsFromServer выполняет асинхронный запрос (на симуляторе я видел журнал этих методов один разЯ возвращаю заявку на передний план).Как я могу использовать какой-то таймер, чтобы этот метод запускался каждые 10 минут (мне просто нужно запускать его 4 или 5 раз, а не каждые 10 минут, пока он не вернется на передний план :-))?

спасибомного,

С наилучшими пожеланиями,

Люк

Ответы [ 3 ]

2 голосов
/ 27 августа 2010

iOS4 позволяет вашему приложению работать в течение X раз, при условии, что iOS4 предоставляет вам время, которое вы запрашиваете.Проверьте: Завершение длительной задачи в фоновом режиме .

В частности,

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

0 голосов
/ 20 июля 2010

На самом деле, вам не разрешено делать обычные HTTP-вызовы в фоновом режиме. Единственные приложения, которые могут быть активны в фоновом режиме, это те, которые воспроизводят аудио, выполняют определение местоположения или выполняют VOIP-вызовы. Я полагаю, что вся философия Apple с фоном заключается в том, что приложения не должны выполнять «работу», кроме этих ограниченных случаев, потому что ресурсы ограничены. Предлагаемый способ обойти это - использовать (тьфу) уведомления или просто обновить, когда ваше приложение просыпается. Это объясняется в документе, который будет ссылаться на javaforfood.

0 голосов
/ 20 июля 2010

Возможно, вы можете использовать Task Finishing для этого. В iOS вы можете пометить поток как завершающий и дать ему определенное время жизни. Это позволит вам сделать еще несколько звонков на ваш веб-сервер.

Взгляните на Выполнение кода в фоновом режиме

...