Предполагая, что это возможно, я бы хотел, чтобы мое приложение для iOS, когда оно было установлено на заднем плане, опрашивало сервер (то есть, по сути, получало содержимое URL-адреса каждые 30 минут и уведомляло пользователя, если оно содержит что-то «интересное»), по существу, ваналогично тому, как работает встроенный почтовый клиент, если вы не используете push-уведомления.
Теперь, из моего чтения (я опытный программист, но новичок в iOS),Я думаю, что может быть два возможных способа сделать это:
- Метод 1: В applicationDidEnterBackground:, запустить фоновую задачу, которая выполняет периодический опрос;
- Метод 2: Отправить свой собственныйприложите UILocalNotification без видимого текста для пользователя, но которое просто служит для того, чтобы разбудить ваше приложение за X минут для выполнения опроса (а затем отправить себе другое уведомление для следующего времени и т. д.).
Я вижу в документации Apple Планирование, регистрация и обработка уведомлений , кажется, что они действительно имеютmple usign Method 1 (их пример "chat", Перечисление 2-2).Но что удивительно в этом методе, так это то, что он, кажется, просто сидит в непрерывном цикле, выполняя опрос, без промежуточного сна;на платформах, с которыми я более знаком, это было бы нецелесообразно и могло бы сжечь ЦП.
Так что части моего вопроса по существу: - Возможен ли метод 2 (или должен всегда вызывать UILocalNotificationвидимое предупреждение для пользователя, а это не то, что я хочу), и если да, то рекомендуется ли это делать?- Если способ сделать это - метод 1, является ли пример «чата» Apple «сидеть в непрерывном цикле» действительно нормальным (например, использует ли iOS процессор, так что это не проблема), и если нет, то каким образомiOS сказать фоновому процессу "спать по Х секунд / минут"?И если по какой-то причине непрерывный цикл Apple в порядке, каким будет время для интервалов между опросами?
NB. Я ценю, что возможность работать в фоновом режиме - это, по сути, функция iOS 4.Я не против, если мое приложение будет работать только в iOS 4.