我的应用程序在后台模式下侦听蓝牙设备以触发事件,然后调用api。我想在1分钟后调用相同的api,然后在应用程序处于后台模式时5分钟后再次调用该api。
答案 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)
}
}