zoukankan      html  css  js  c++  java
  • iOS14 Core Location后台定位

    首先贴出 官方文档:https://developer.apple.com/documentation/corelocation/choosing_the_location_services_authorization_to_request 详细介绍了如何确定你需要申请的Location权限。

    定位的权限申请

    在iOS14中,使用用户Gps信息,需要申请权限。申请的权限分为2种。

    When In Use
    Always

    When In Use提示界面如下:
    image

    Always 的申请方式有2种,提示界面也稍有不同,
    第一种是先成功申请到了 When In Use,之后使用requestAlwaysAuthorization申请always,弹出如下界面:
    image

    第二种是直接使用requestAlwaysAuthorization,但是程序弹出的界面还是When In Use的界面,如果用户允许了,当系统第一次在后台向app发送gps信息时,会自动弹出第二个授权界面:
    image

    这2种权限的最大不同在于,当app被kill掉后,Always权限能够让系统在后台自动启动被kill掉的程序,运行相应的代码。对于个人隐私来说,这是一个十分危险的选项!为了应对这个隐私安全问题,iOS会定期弹出通知,提醒你这个程序又在后台使用了你的位置,起到了一定的安全作用,如下图:
    image

    在background模式下获取location

    无论是 When In Use 还是 Always 权限,只要不kill掉app,app都可以在后台持续收集gps信息。
    要开启后台模式,首先开启Location update的 backgroud mode ,如图:
    image

    再设置 allowsBackgroundLocationUpdates = true,就能在程序进入backend后,继续跟踪用户的坐标信息。
    如果想更加明确地告知用户正在使用后台定位,可以设置
    locationManager.showsBackgroundLocationIndicator = true
    这样在status bar左上会显示蓝色定位图标,表示正在后台使用导航定位。如图:image

    如需要关闭后台定位,只需要设置 allowsBackgroundLocationUpdates = false,这样程序进入后台,也不会取定位信息了。

    定位精确度和耗电

    location的精确度和耗电息息相关,越精确越耗电。通过 locationManager.desiredAccuracy可以设定精确度。
    精确度从高到低依次为:

    public let kCLLocationAccuracyBestForNavigation: CLLocationAccuracy //导航应用使用
    public let kCLLocationAccuracyBest: CLLocationAccuracy //iOS 默认值
    public let kCLLocationAccuracyNearestTenMeters: CLLocationAccuracy
    public let kCLLocationAccuracyHundredMeters: CLLocationAccuracy
    public let kCLLocationAccuracyKilometer: CLLocationAccuracy
    public let kCLLocationAccuracyThreeKilometers: CLLocationAccuracy
    public let kCLLocationAccuracyReduced: CLLocationAccuracy // 最不精确,不精确范围在1-20km之间
    

    选择合适的精确度,可以大幅降低电池的消耗。

  • 相关阅读:
    实例天天向上的力量
    实例天天向上的力量
    数字类型及操作
    基本数据类型
    函数与模块
    Turtle库(海龟)
    python猛蛇绘制
    输出函数
    循环语句
    集合
  • 原文地址:https://www.cnblogs.com/breezemist/p/14538308.html
Copyright © 2011-2022 走看看