Мне нужно закодировать приложение iOS, которое отправляет данные на сервер каждые 30 минут. Может ли это работать, когда приложение находится в фоновом режиме? Насколько он надежный?
Запуск фоновых сервисов в iOS
Ответ 1
Невозможно постоянно выполнять задачи в фоновом режиме в тот промежуток времени, который вы запрашиваете. Вы можете запросить конкретное разрешение через соединение с разработчиком, но я должен предупредить вас, что вам понадобится очень веский аргумент. Я включил приведенную ниже документацию, возможно, ваш запрос относится к одной из групп, которая может работать постоянно. Или, может быть, вы могли бы использовать один из длительных фоновых потоков и адаптировать его таким образом, чтобы он выполнял задачу, которую вы пытаетесь выполнить.
Непосредственно из документации Apple:
Реализация долгосрочных фоновых задач
Для задач, которые требуют больше времени для выполнения, вы должны запросить определенные разрешения для их запуска в фоновом режиме без их приостановки. В iOS только определенные типы приложений могут работать в фоновом режиме:
- Приложения, которые воспроизводят звуковой контент для пользователя в фоновом режиме, например приложение музыкального проигрывателя
- Приложения, которые постоянно информируют пользователей о своем местонахождении, такие как навигационное приложение
- Приложения, которые поддерживают передачу голоса по Интернет-протоколу (VoIP). Новостные приложения, которые необходимо загружать и обрабатывать новый контент.
- Приложения, которые получают регулярное обновление от внешних аксессуаров
Приложения, которые реализуют эти сервисы, должны декларировать сервисы, которые они поддерживают, и использовать системные инфраструктуры для реализации соответствующих аспектов этих сервисов. Объявление сервисов позволяет системе узнать, какими сервисами вы пользуетесь, но в некоторых случаях именно системные каркасы фактически препятствуют приостановке вашего приложения.
~/Конец строки
Ответ 2
В iOS7 введены новые API многозадачности, благодаря которым можно запускать фоновое задание на бесконечную длительность. Apple рекомендует использовать NSURLSession API, который создает фоновый сеанс и переносит передачи
В iOS7 также представлены новые UIBackgroundModes, которые включают "Фоновая выборка" и "удаленные уведомления", которые помогают выполнять фоновые службы
Ответ 3
Нет способа сделать это как сервис, кроме некоторых особых случаев, предоставляемых ios, как сказал https://stackoverflow.com/users/1515108/im-lp. Но вы можете имитировать его. Это сообщение ответит как:
Я надеюсь, что он поможет!