Как отправить локальное уведомление, когда приложение переходит в фоновый режим - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу отправить локальное уведомление, когда мое приложение переходит в фоновый режим, уведомление поступает от вызывающего веб-сервиса (мы не могли использовать push-уведомления, потому что мы используем локальные серверы и нет доступа в Интернет), я знаю о возможности фоновой выборки и я включил его в своем приложении, но я хочу, чтобы другой таймер вызывал веб-сервис каждые 2 минуты и отправлял уведомления, если приложение не завершилось, у кого-нибудь есть идея сделать это?

Спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

К сожалению, push-уведомления с вашего сервера - единственный способ иметь фоновые задачи по расписанию, которое вы решаете.

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

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

Вы можете определить, когда приложение переходит в фоновый режим, двумя способами:

  1. Реализация методов applicationWillResignActive() или UIApplicationDidEnterBackground() в делегате приложения.

  2. Зарегистрируйтесь для получения уведомления UIApplicationDidEnterBackground.

Вот пример регистрации для уведомления:

let center = NotificationCenter.default
center.addObserver(self, selector: #selector(yourMethod), name: Notification.Name.UIApplicationDidEnterBackground, object: nil)

Вы также можете проверить состояние приложения в любое время, например:

let state = UIApplication.shared.applicationState
    if state == .background {
        // App is in background
    }
    else if state == .active {
        // App is in foreground
    }

Дополнительная информация о продлении времени фонового выполнения , фоновое обновление приложения и режимах фона .

...