iOS开发实用技术

后台保活

2021-11-15  本文已影响0人  太平洋_cfd2
    /// 后台任务
    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
            }
        })
    }

设置后,切后台会弹窗,是否选择一直获取定位,但是使用期间,主要看用户如何选择。

  1. 以上是非音乐、定位等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()

以上是系统持续定位保活方式,可参考谷歌实现方式(谷歌也是同系统实现)

  1. 后台持续定位,审核需要注意的点,以及参数详细解释
    https://x-mie.com/2018/12/ios-background-location/
    https://www.jianshu.com/p/e71c7fb61ba0
上一篇下一篇

猜你喜欢

热点阅读