当前位置:首页 » 《关注互联网》 » 正文

上报系统对比,定位跟权限_刘姥姥爱学习的博客

20 人参与  2021年09月05日 12:23  分类 : 《关注互联网》  评论

点击全文阅读


上报系统

  • 埋点上报

●具体业务代码处、手动添加埋点代码
●友盟统计/百度统计
●无法更改/代码侵入
●预埋使用轮询接口上传日志
●Crash. 上报

  • 无埋点上报

●基于基于Runtime/消息转发
●使用Method Swizzling / Aspect/开源框架
●hook通用方法(页面时常、 接口调用、点击)
●动态下发/动态增加删除上报
●唯一标识的问题

ios中的定位服务

●CoreL ocation.framework
●获取设备的地理位置、方向、海拔等信息
●系统通过多种方式获得(WI-FI/ GPS/蓝牙…)
●定位服务的使用
●首次使用需要获取权限
●通过CLLocationManager获得当前的位置

定位权限

两个维度

  • 隐私定位服务

CLLocationManager locationServicesEnabled
引导跳转Setting

  • 具体app的定位服务

CLLocationManager authorizationStatus
设置info.plist申请权限的具体原因
发起询问
在delegate中处理授权变化

代码演示

定义一个类出来专门弄这个

@interface GTLocation : NSObject

+ (GTLocation *)locationManager;

- (void)checkLocationAuthorization;

@end
#import "GTLocation.h"
#import <CoreLocation/CoreLocation.h>

@interface GTLocation()<CLLocationManagerDelegate>
//这个右面有用
@property(nonatomic, strong, readwrite) CLLocationManager *manager;
@end

@implementation GTLocation
//单例模式
+ (GTLocation *)locationManager{
    static GTLocation *location;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        location = [[GTLocation alloc] init];
    });
    return location;
}
//初始化上面的参数 设置delegate
- (instancetype)init{
    self = [super init];
    if (self) {
        self.manager = [[CLLocationManager alloc] init];
        self.manager.delegate = self;
    }
    return self;
}

- (void)checkLocationAuthorization{
    
    //判断系统是否开启
    if(![CLLocationManager locationServicesEnabled]){
        //引导弹窗
        //
    }
    
    if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){//如果开启了就判断是不是第一次用
        [self.manager requestWhenInUseAuthorization];//获取用户使用时候的权限
    }
}

#pragma mark - delegate

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
    //如果早试用期间改变就在更新一次
    if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
        //
        [self.manager startUpdatingLocation];
        
    }else if (status == kCLAuthorizationStatusDenied){
        //
    }
}

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray<CLLocation *> *)locations {
    
    //地理信息
    CLLocation *location = [locations firstObject];
    //用于在地理坐标和地名之间转换的接口。
    CLGeocoder *coder = [[CLGeocoder alloc] init];
    //提交指定位置的反向地理编码请求。
    [coder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        //地标信息
    }];
    
     [self.manager stopUpdatingLocation];
}

@end

在appdelegate中

   [[GTLocation locationManager] checkLocationAuthorization];

在info.plist加入
在这里插入图片描述

CLLocationManager

●CLLocationManager

●提供位置相关的操作 ●权限 ●开始或停 止位置相关的服务

●CLLocation

●某个位置的地理信息(经度/维度/海拔…

CL Placemar.k

●地标信息(省市街道…)

●CLLocationManagerDelegate

●位置相关权限更新回调 ●定位成功/失败回调 ●方向/指定区域的进入离开

●CLGeocoder.

●提供CLLocation 和CLPlacemark之间的转换

●模拟器支持坐标信息

定位服务的流程

locationServiceEnabled 服务开关
authorizationStatus 权限申请
didChangeAuthorizationStatus 权限更新
startUpdatingLocation 位置信息获取
didUpdateLocation 位置信息
reverseGeocodeLocation 地标信息

其他的服务

位置的变化,运动的轨迹,速度
后台定位服务
mapkit


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/27027.html

位置  权限  定位  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 新章速递养大的反派疯魔了是什么小说(江曜姬时语)完本阅读无广告(江曜姬时语)
  • 爱,一触就破无广告_妹妹夏夏孟夏人气小说_小说后续在线阅读_无删减免费完结_
  • 他死后前妻疯魔了彩蛋(顾煜迟林筱棠)全书在线下载阅读完美终章小说大结局
  • 此后锦书休寄周窈音全文最新章节(周窈音)全文免费阅读无弹窗大结局_周窈音免费阅读
  • 弹幕说我是捞女?反手收购男主公司养鸡(林朝曦沈墨川)_弹幕说我是捞女?反手收购男主公司养鸡
  • 没给寡嫂抢到La******,老公把我和儿子做成蜡像(顾云州沈云烟)_没给寡嫂抢到La******,老公把我和儿子做成蜡像顾云州沈云烟
  • 出狱后,假千金靠玄术杀疯了(顾九音霍霆修)_出狱后,假千金靠玄术杀疯了
  • 养妹偷我认亲玉佩当上千金,男友当场分手超长版_玉佩陈雨柔养父母一口气看完_小说后续在线阅读_无删减免费完结_
  • 抽卡后,气运之子怎么都缠上来了小说(夏挽棠)(抽卡后,气运之子怎么都缠上来了)全书+后续+结局在线阅读
  • 前传爱意随风消逝续集:全文+番外乔清浅宋轻舟:结局+番外新上热文
  • 宋昭黎陆铭绪(假如从没拥抱你)前文+全本完整阅读预售作品抢先看
  • 终章小说搬空海港!我携军舰嫁军官躺赢了完结篇(温婉历战)已更新+延伸(搬空海港!我携军舰嫁军官躺赢了)清爽版

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1