Как выполнить фон сети в ios4 - PullRequest
1 голос
/ 15 декабря 2010

Наше приложение не использует приложение электронной почты по умолчанию для электронной почты, вместо этого используется реализация SMTP.Прямо сейчас, когда приложение находится на переднем плане - электронная почта отправляется с использованием SMTP-соединения.Но, если я нажму «Отправить», а затем переключусь на другое приложение, электронное письмо не будет отправлено.Он отправляется только тогда, когда мы возвращаемся обратно в приложение.Как правило, мы хотим отправить электронное письмо, когда приложение также находится в backgrond.Любые советы приветствуются.Как чат-приложения опрашивают новые сообщения - если мы получим какие-либо подсказки по этому поводу - мы также можем выполнить нашу задачу.

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Это хороший вопрос.

Согласно документации Apple о многозадачности Apple:

В дополнение к предыдущим клавишам iOS предоставляет два других способа работы вСправочная информация:

Выполнение задачи - приложения могут запрашивать у системы дополнительное время для выполнения данной задачи. Локальные уведомления - приложения могут планировать доставку локальных уведомлений в заранее установленное время.

Если ваша задача не является длительной и непрерывной задачей, такой как служба VOIP, служба GPSили аудио сервис, вы можете объявить его как «задачу конечной длины», и вы можете выполнить эту задачу в фоновом режиме.Помните, что MU доступен только с iOS 4.0 и только для 3GS и 4 устройств.Вы также должны управлять этими задачами для других устройств, которые не поддерживают MU.

Всегда в соответствии с официальной документацией вы можете сделать это:

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

  • Оберните любые длительные критические задачи вызовами -[UIApplication beginBackgroundTaskWithExpirationHandler:] и -[UIApplication endBackgroundTask:].Это защищает эти задачи в ситуациях, когда ваше приложение внезапно перемещается в фоновый режим.
  • Дождитесь вызова метода applicationDidEnterBackground: участника вашего приложения и затем запустите одну или несколько задач.
0 голосов
/ 15 декабря 2010

Одним из требований Apple к сторонним приложениям является то, что вы не можете запускать свое приложение в фоновом режиме. Я думаю, вы можете выполнить свою задачу, вернув NO в вашем методе applicationShouldTerminate, но ваше приложение не будет одобрено Apple для размещения в AppStore.

...