Как запустить приложение iOS в фоновом режиме навсегда? - PullRequest
4 голосов
/ 10 июня 2019

Я делаю приложение для iOS только для себя.Мне нужно выполнять определенный код каждые 30 минут, когда приложение находится в фоновом режиме.

Поскольку я только пользователь этого приложения, мне не нужно беспокоиться о проценте теста и процессе проверки Apple.Я могу использовать любой / все фоновые режимы VOIP, музыка и т. Д.

Можно ли запускать этот код в фоновом режиме каждые 30 минут?Пожалуйста, наведите меня направление.

Ответы [ 2 ]

3 голосов
/ 10 июня 2019

Это возможно.

Один из способов сделать это - создать поддельное расширение туннеля пакетов VPN. И поместите свой код в класс VPN Manager. Часть расширения VPN будет работать, пока ваше приложение работает в фоновом режиме или даже принудительно активируется пользователем.

Вы можете написать свой код в этом методе

NEPacketTunnelProvider

override func startTunnelWithOptions(options: [String : NSObject]?, completionHandler: (NSError?) -> Void) {

          fetchData()
}

func fetchData() {
        // Do not use the NSTimer here that will not run in background
        let q_background = DispatchQueue.global(qos: .background)
        let delayInSeconds: Double = 300.0 // seconds
        let popTime = DispatchTime.now() +  DispatchTimeInterval.seconds(Int(delayInSeconds))
        q_background.asyncAfter(deadline: popTime) {
        // Fetch your data from server and generate local notification by using UserNotifications framework 
            fetchData()
        }
    }

0 голосов
/ 21 июня 2019

Почему бы не пойти с Background Fetch ?

Он доступен для таких приложений, как «Новости» или «Социальные сети», поэтому приложения могут получать самые последние данные даже до взаимодействия с пользователем. Это позволяет периодическое фоновое выполнение как есть.

Простой вызов будет получать данные каждый час.

// Fetch data once an hour.
   UIApplication.shared.setMinimumBackgroundFetchInterval(3600)

Наконец, это не обходной путь или какой-либо частный API. Ваше приложение также будет принято appstore.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...