【发布时间】:2017-02-27 10:29:24
【问题描述】:
我正在开发与服务器有 MQTT 连接的应用程序,并且服务器正在发送一些与设备相关的值,并相应地更改 UI。但是,当应用程序处于后台时,用户应该会收到有关某些值已更改的本地通知。我知道 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() 即可让应用在后台运行三分钟。
接下来我要尝试的是后台获取和小部件来运行服务,在这里我只是想要一些建议,上面两个中的一个有没有可能起作用?
【问题讨论】:
标签: ios swift widget background-process