sha*_*yed 0 iphone background ios swift ios13
我有一个使用 CoreLocation 和 WiFi SSID 信息的 iOS 应用程序。我的应用程序在 iOS 13 到来之前一直运行良好,但从那时起它给我带来了很多问题,尤其是当应用程序进入后台时。我一直在后台使用一个计时器作为后台任务,它在 30 秒后也不起作用,尤其是应用程序在同一时间范围内在后台被杀死。我看到有人说 iOS 13 对后台任务和时间安排很严格,但我仍然没有找到任何支持这种说法的苹果的直接参考或链接。有没有其他人面临同样的问题,然后请分享您的见解。谢谢
我有一个计时器的后台任务:
var bgTask: UIBackgroundTaskIdentifier?
var updateTimer: Timer?
func applicationDidEnterBackground(_ application: UIApplication) {
bgTask = application.beginBackgroundTask(withName: "MyTask", expirationHandler: {() -> Void in
if let bgTask = self.bgTask {
application.endBackgroundTask(bgTask)
self.bgTask = UIBackgroundTaskIdentifier(rawValue: convertFromUIBackgroundTaskIdentifier(UIBackgroundTaskIdentifier.invalid))
}
})
DispatchQueue.main.async(execute: {() -> Void in
self.updateTimer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(self.checkNetworkStatus), userInfo: nil, repeats: true)
})
}
@objc func checkNetworkStatus() {
print("Timer calledddd")
}
Run Code Online (Sandbox Code Playgroud)
名称后台任务有点不当。
具体来说,beginBackgroundTask(expirationHandler:)它实际上并没有启动任何类型的后台任务,而是告诉系统您已经开始了一些正在进行的工作,即使您的应用程序在后台,您也希望继续。
您仍然需要编写代码来创建和管理该工作。
因此,最好将后台任务 API 视为引发“不要暂停我”的断言。
iOS 13 严格限制了您可以使用后台任务防止暂停的总时间。
iOS 13 已将前景值减少到 30 秒。
一种。3 分钟,当您的应用程序从前台移动到后台时
湾 30 秒,当您的应用在后台恢复时
您可以通过查看UIApplication() backgroundTimeRemaining房产来粗略估计您可以使用的时间。
您可能需要考虑使用不同的 API 来实现您的目标。
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |