5分钟后如何在后台调用api?

时间:2019-04-13 11:54:47

标签: ios swift

我的应用程序在后台模式下侦听蓝牙设备以触发事件,然后调用api。我想在1分钟后调用相同的api,然后在应用程序处于后台模式时5分钟后再次调用该api。

1 个答案:

答案 0 :(得分:0)

确保打开背景模式并在xCode中设置所需的值。这很奇怪,但是即使关闭了后台模式,此代码也可以工作。我使用以下代码:

在AppDelegate中添加以下代码:

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    registerBackgroundTask(60)
    return true
}

func registerBackgroundTask(_ durationSec : Double = 60 ) {
    let duration : DispatchTime = DispatchTime.now() + durationSec
    DispatchQueue.global(qos: .background).asyncAfter(deadline: duration, qos: .background) {
            print("fasdf")
            // customize it!
        }
}

func applicationDidEnterBackground(_ application: UIApplication) {

    application.beginBackgroundTask {[weak self] in
        self?.registerBackgroundTask(5 * 60)
    }
}