上报系统对比,定位跟权限(代码片段)

刘姥姥爱学习 刘姥姥爱学习     2022-12-29     393

关键词:

上报系统

  • 埋点上报

●具体业务代码处、手动添加埋点代码
●友盟统计/百度统计
●无法更改/代码侵入
●预埋使用轮询接口上传日志
●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

nr-ios/android相机/相册/日历/定位等权限检测+申请代码(代码片段)

...相册日历定位…两端获取权限的区别android调用申请权限,系统会呈现两个还是三个系统弹窗,直到你同意或拒绝后,选择不在提示,iOS端,调用申请权限,系统弹窗仅会弹出一次,该次就决定了你的权限策略,此后再调用申请权限API均无系... 查看详情

liteos错误处理(代码片段)

...码发生错误时,系统调用错误处理模块的接口函数,完成上报错误信息,并调用用户自己的钩子函数,进行特定的处理。错误处理模块实现OS内部错误码记录功能。OS内部错误码无法通过接口返回,通常会上报错误处理模块进行... 查看详情

耳机驱动程序上报(代码片段)

上报设备headset:听筒micheadphone:听筒没有micLineout:声音输出没有mic上报方式输入子系统:可上报输入事件上报开关事件switchstate:uevent编写输入系统驱动分配input_dev;设置:能产生哪类事件:EV_SW能产生EV_SW中的哪些事件headsethea... 查看详情

几种mq的对比(代码片段)

mq的优点解耦、异步、削峰场景1在这个场景中,A系统跟其它各种乱七八糟的系统严重耦合,A系统产生一条比较关键的数据,很多系统都需要A系统将这个数据发送过来。A系统要时时刻刻考虑BCDE四个系统如果挂了该咋办?要不要... 查看详情

nr-ios/android相机/相册/日历/定位等权限检测+申请代码(代码片段)

...相册日历定位…两端获取权限的区别android调用申请权限,系统会呈现两个还是三个系统弹窗,直到你同意或拒绝后,选择不在提示,iOS端,调用申请权限,系统弹窗仅会弹出一次,该次就决定了你的权限策略,此后再调用申请权限API均无系... 查看详情

安卓定位权限(代码片段)

一、前言随着安卓系统版本的变动,定位权限也多次被修改。随着变动次数的增多,但是对于不同的版本,不同的机型差异越来越大,在处理定位权限时,需要注意的地方就变多了。本篇主要记录对不同安卓... 查看详情

华为od机试真题java实现日志采集系统真题+解题思路+代码(2022&2023)(代码片段)

...组件。日志是按行生成,每行记做一条,由采集系统分批上报。如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验;如果一次上报的条数太多,会导致超时失败。为此,项目组设计了如下的上报策略:每... 查看详情

前端错误监控的简单设计与实现(代码片段)

...录前端错误监控的简单设计与实现前端埋点错误类型异常上报的数据格式异常上报防抖处理缓存异常上报数据来限制上报频率异常上报可定制化配置前端异常监控代码后端限流异步发送邮件发送邮件阻塞问题总结参考前端错误监... 查看详情

android应用接入firebasecrashlytics进行崩溃分析上报(代码片段)

前言所在公司的项目中有一款应用应客户要求,需要接入FirebaseCrashlytics,在此提前练手,也做个总结。本文以最新的Gradle7.5为例,如果Gradle版本比较低,添加依赖那一章节可参考官方文档。1.登录Firebase控制台,创建项目及应用... 查看详情

根据来源编号对明细进行分组跟库存做对比用到的技术list根据某个字段分组doublelong比较大小(代码片段)

publicRstartProcess(@RequestBodyShouldCredentialPayablebean)System.out.println("应付贷项参数bean========="+bean);//开启审批流程之前先验证库存booleanjudge=false;if(null!=bean.getCredentialPayableDetail()&&bean.g 查看详情

ios权限设置判断和跳转-最全最详细(代码片段)

...了对用户隐私的保护,访问照相机、相册、麦克风、定位、通讯录等,都需要在info.plist文件中添加权限,而且少一个都不行。根据需要添加,项目中使用了什么,就添加对应的权限。权限字段相册使用权限Priv... 查看详情

别再说“换皮”了,来看看harmonyos与android的全面对比吧(代码片段)

...其中一个大佬在圈里的分享。一、前言华为自己对于鸿蒙系统的定位是完全不同于安卓系统的:它不仅是一个手机或某一设备的单一系统,而是一个可将所有设备串联在一起的通用性系统,就是多个不同设 查看详情

别再说“换皮”了,来看看harmonyos与android的全面对比吧(代码片段)

...其中一个大佬在圈里的分享。一、前言华为自己对于鸿蒙系统的定位是完全不同于安卓系统的:它不仅是一个手机或某一设备的单一系统,而是一个可将所有设备串联在一起的通用性系统,就是多个不同设 查看详情

权限系统设计详解(代码片段)

权限系统设计详解老权限系统的问题与现状业界权限系统的设计方式RBAC模型ABAC模型ABAC模型的原理新权限系统的设计思想权限系统自身的权限管理权限类型的定义默认角色的分类新权限系统的核心模块设计系统/菜单/数据权限管... 查看详情

android系统framework中定制实现开关机动画实践(代码片段)

...实现方案其他问题总结写在前面本文主要记录了在Android10系统定制开关机动画时遇到的权限(读写)问题以用开关机动画资源的流程、文件要求等问题。涉及知识点:Linux中文件读写权限、系统开发层启动流程、adbshel... 查看详情

android系统framework中定制实现开关机动画实践(代码片段)

...实现方案其他问题总结写在前面本文主要记录了在Android10系统定制开关机动画时遇到的权限(读写)问题以用开关机动画资源的流程、文件要求等问题。涉及知识点:Linux中文件读写权限、系统开发层启动流程、adbshel... 查看详情

androidbug定位(代码片段)

!!!核心思想耐心追踪|大胆假设小心求证|对比分析|ERROR并非ERROR异常并非异常断点调试https://blog.csdn.net/johnWcheung/article/details/102620497日志打印#打印property(android.os.SystemProperties)getpropkey#设置propertysetprop 查看详情

异常上报功能bugly简介(代码片段)

目的:为了能够快速定位到线上版本bug位置,经过比较之后,决定使用腾讯家的Bugly。1、注册产品官方文档使用指南1.1登录-使用QQ登录Bugly官网没有账号就注册,要实名就实名,在此不做注册介绍。注册登陆完找不到我的产品就... 查看详情