iOS 封装一个百度地图的定位类 可以持续后台定位

此处有BUG

适合新手,大牛路过请无视。

开始了

如果你是新手,对定位类不是很懂,或者公司要求接百度地图API。
哎呀!还是不做废话了。首先我们集成通过CocoaPods集成百度地图如果对CocoaPods还不了解推荐看一遍就会的CocoaPods的安装和使用教程或者你想直接看iOS百度地图配置

进行中

那么我开始简单的介绍一下吧
首先你要简单配置一下
如果要使用在前台定位 添加Privacy - Location When In Use Usage Description
如果要在后台使用 添加Privacy - Location Always Usage Description
建议两个都添加在plist文件里面


plist文件配置.png
#import <Foundation/Foundation.h>

@import CoreLocation;
@interface YZLocationManager : NSObject

//是否开启后台定位 默认为NO
@property (nonatomic, assign) BOOL isBackGroundLocation;

//isBackGroudLocation为YES时,设置LocationInterval默认为1分钟
@property (nonatomic, assign) NSTimeInterval locationInterval;

//后台定位开启时 返回定位经纬度
@property (nonatomic, copy) void (^YZBackGroundLocationHander) (CLLocationCoordinate2D coordinate);

//后台定位开启时 返回反编码地理位置
@property (nonatomic, copy) void (^YZBackGroundGeocderAddressHander) (NSString *address);

//获取经纬度
@property (nonatomic, copy) void (^YZLocationCoordinate) (CLLocationCoordinate2D coordinate, NSError *error);

//获取反编码地理位置
@property (nonatomic, copy) void (^YZLocationGeocderAddress) (NSString *address, NSUInteger error);

//最近一次定位的经纬度
@property (nonatomic, readonly) CLLocationCoordinate2D lastCoordinate;

//最近一次反编码地理位置
@property (nonatomic, copy, readonly) NSString *lastGeocoderAddress;
//通过单例创建
+ (YZLocationManager *)sharedLocationManager;

//获取经纬度和反编码地理位置
- (void)receiveCoorinate:(void (^)(CLLocationCoordinate2D coordinate, NSError *error))coordinateHander geocderAddress:(void (^)(NSString *address, NSUInteger error))addressHander;

//传入经纬度获取反编码地理位置
- (void)geoCodeSearchWithCoorinate:(CLLocationCoordinate2D)coordinate address:(void (^)(NSString *address, NSUInteger error))address;

//开始定位
- (void)startLocationService;

//停止定位
- (void)stopLocationService;

@end

这是.h文件 定义了几个block
如果你创建是一个单例类 那么要注意在多个页面使用到时这些属性已最后一次赋值为准,如果同一个页面多处要求同时定位,本类或许将不适用。
如果你要使用持续后台定位,我们还要进一步配置

持续后台定位配置.png

在配置完之后使用的时候要注意,关于一些后台定位的配置都需要

isBackGroundLocation为YES的时候才能设置

iOS8进入后台的时候需要配置requestAlwaysAuthorization否则在顶部将会显示一个蓝条以上都配置好了就可以使用了 由于使用的百度地图,百度地图定位间隔的API没有公开经过测试大概是30秒,这30秒正常可以满足大多数需求 如果这里有想要
系统自带的持续定位的那么你可以看看这个

注意

如果你想审核的时候不被拒,在App介绍里面的加上一句话让用户看到(例句):

使用“打卡”应用点击上班签到后将开启轨迹定位功能,会持续使用GPS定位服务,切换到后台仍会保存GPS连接,相比其他操作会消耗更多的电量。
GPS在后台持续运行会影响电池续航时间

简单的例子来一个,其它用法你们可以自己看下源码的注释

    YZLocationManager *manager = [YZLocationManager sharedLocationManager];
    manager.isBackGroundLocation = YES;
    manager.locationInterval = 10;
//    @weakify(manager)
    [manager setYZBackGroundLocationHander:^(CLLocationCoordinate2D coordinate) {
        _plc(coordinate);
        YZLMLOG(@">>>>>>>>>>>>>%f,,%f",coordinate.latitude,coordinate.longitude);
//        @strongify(manager) //注意别造成循环引用
//        [manager geoCodeSearchWithCoorinate:coordinate address:^(NSString *address, NSUInteger error) {
//            YZLMLOG(@">>>>>>>>>>address:%@",address);
//        }];
        NSDictionary *dic = @{
                              @"time":self.dateString,
                              @"coordinate":[NSString stringWithFormat:@"%f,%f",coordinate.latitude,coordinate.longitude]
                              };
        [self.dataSouce addObject:dic];
        [self.tableView reloadData];
    }];
    
    [manager setYZBackGroundGeocderAddressHander:^(NSString *address) {
        YZLMLOG(@">>>>>>>>>>address:%@",address);
    }];
    [manager startLocationService];

结束了

多的不说了,例子什么的都在源码里面了,哪里写的有问题的地方可以提出来以便楼主进行修改。觉得楼主写的好的请给颗star。
源码地址:GitHub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容