Как запустить службу в фоновом режиме iOS для получения локального уведомления?

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

Я успешно добавил локальное уведомление с приложением в фоновом режиме по UIApplication.shared.beginBackgroundTask но он работает только в течение 3 минут после того, как яблоко прекратит приложение.

  func registerBackgroundTask() { backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in self?.endBackgroundTask() } assert(backgroundTask != UIBackgroundTaskInvalid) } func endBackgroundTask() { print("Background task ended.") UIApplication.shared.endBackgroundTask(backgroundTask) backgroundTask = UIBackgroundTaskInvalid } 

И просто вызов self.registerBackgroundTask() заставляет приложение работать в фоновом режиме в течение трех минут.

Далее, что я собираюсь попробовать, это фоновая выборка и виджет для запуска службы. Здесь мне просто нужно какое-то предложение, что есть шанс, что один из двух выше будет работать?

Похоже, что «Общение с внешним аксессуаром» будет фоном, который подходит вашему приложению. См. Документы Apple для справки. Вы должны активировать Backround Mode для своего проекта и установить значение «внешний-аксессуар». Затем вы можете выполнять текущие небольшие загрузки в фоновом режиме. В качестве примера Apple упоминает мониторы сердечного ритма.

Обратите внимание, что непрерывный фоновой опрос – это трата энергии и быстро разряжает батарею. Проверьте, действительно ли это необходимо для вашего приложения. Если пользователю просто нужны нечастые уведомления / сигналы тревоги, удаленные уведомления будут намного лучшим решением. Я использую удаленные уведомления в своих проектах и ​​работает очень гладко и надежно. Дополнительным преимуществом является то, что он пробудит приложение, даже если пользователь его закрыл раньше.

Более 3 минут. Вы включите любой режим. В противном случае, когда приложение войдет в фоновое приложение. Через 3 мин.App не будет выполнять никаких действий. введите описание изображения здесь

  • Возможно ли создать прокрутку с помощью анимированного управления страницей в Swift?
  • Использование библиотеки Swift 3 в проекте Swift 2
  • Обработка данных XML с помощью Alamofire в Swift
  • Как получить размер видео для потока HLS внутри AVPlayer?
  • Пользовательский UIView с Nib в swift без использования loadFromNib в контроллере представления
  • Отображение пользовательских изображений iOS MKMapView в верхнем левом углу
  • Swift Получить строку между двумя строками в строке
  • Правильный способ кодирования изображения как base64String
  • Есть ли способ ссылаться на функцию экземпляра при вызове SequenceType.forEach?
  • Проверьте, существует ли URL-адрес
  • Странное поведение при анимации между двумя круговыми UIBezierPaths
  • Давайте будем гением компьютера.