/// 后台任务
var backgroundTask: UIBackgroundTaskIdentifier?
func applicationDidEnterBackground(_ application: UIApplication) {
/// 如果已存在后台任务,先将其设为完成
if let task = backgroundTask {
application.endBackgroundTask(task)
backgroundTask = UIBackgroundTaskIdentifier.invalid
}
/// 注册后台任务
backgroundTask = application.beginBackgroundTask(expirationHandler: {
/// 如果没有调用endBackgroundTask,时间耗尽时应用程序将被终止
if let task = self.backgroundTask {
application.endBackgroundTask(task)
self.backgroundTask = UIBackgroundTaskIdentifier.invalid
}
})
}
设置后,切后台会弹窗,是否选择一直获取定位,但是使用期间,主要看用户如何选择。
- 以上是非音乐、定位等app的保活方式,最长只有10分钟
https://lbs.amap.com/demo/sdk/service-location#ios
以上是谷歌持续定位保活方式
private var locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = kCLDistanceFilterNone
// 司机端需要持续定位上报
locationManager.allowsBackgroundLocationUpdates = true
// 是否允许中断定位功能
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.startUpdatingLocation()
以上是系统持续定位保活方式,可参考谷歌实现方式(谷歌也是同系统实现)
- 后台持续定位,审核需要注意的点,以及参数详细解释
https://x-mie.com/2018/12/ios-background-location/
https://www.jianshu.com/p/e71c7fb61ba0
网友评论