iOS 封裝一個(gè)百度地圖的定位類 可以持續(xù)后臺(tái)定位

此處有BUG

適合新手笙各,大牛路過(guò)請(qǐng)無(wú)視。

開始了

如果你是新手邦鲫,對(duì)定位類不是很懂灸叼,或者公司要求接百度地圖API。
哎呀庆捺!還是不做廢話了古今。首先我們集成通過(guò)CocoaPods集成百度地圖如果對(duì)CocoaPods還不了解推薦看一遍就會(huì)的CocoaPods的安裝和使用教程或者你想直接看iOS百度地圖配置

進(jìn)行中

那么我開始簡(jiǎn)單的介紹一下吧
首先你要簡(jiǎn)單配置一下
如果要使用在前臺(tái)定位 添加Privacy - Location When In Use Usage Description
如果要在后臺(tái)使用 添加Privacy - Location Always Usage Description
建議兩個(gè)都添加在plist文件里面


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

@import CoreLocation;
@interface YZLocationManager : NSObject

//是否開啟后臺(tái)定位 默認(rèn)為NO
@property (nonatomic, assign) BOOL isBackGroundLocation;

//isBackGroudLocation為YES時(shí),設(shè)置LocationInterval默認(rèn)為1分鐘
@property (nonatomic, assign) NSTimeInterval locationInterval;

//后臺(tái)定位開啟時(shí) 返回定位經(jīng)緯度
@property (nonatomic, copy) void (^YZBackGroundLocationHander) (CLLocationCoordinate2D coordinate);

//后臺(tái)定位開啟時(shí) 返回反編碼地理位置
@property (nonatomic, copy) void (^YZBackGroundGeocderAddressHander) (NSString *address);

//獲取經(jīng)緯度
@property (nonatomic, copy) void (^YZLocationCoordinate) (CLLocationCoordinate2D coordinate, NSError *error);

//獲取反編碼地理位置
@property (nonatomic, copy) void (^YZLocationGeocderAddress) (NSString *address, NSUInteger error);

//最近一次定位的經(jīng)緯度
@property (nonatomic, readonly) CLLocationCoordinate2D lastCoordinate;

//最近一次反編碼地理位置
@property (nonatomic, copy, readonly) NSString *lastGeocoderAddress;
//通過(guò)單例創(chuàng)建
+ (YZLocationManager *)sharedLocationManager;

//獲取經(jīng)緯度和反編碼地理位置
- (void)receiveCoorinate:(void (^)(CLLocationCoordinate2D coordinate, NSError *error))coordinateHander geocderAddress:(void (^)(NSString *address, NSUInteger error))addressHander;

//傳入經(jīng)緯度獲取反編碼地理位置
- (void)geoCodeSearchWithCoorinate:(CLLocationCoordinate2D)coordinate address:(void (^)(NSString *address, NSUInteger error))address;

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

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

@end

這是.h文件 定義了幾個(gè)block
如果你創(chuàng)建是一個(gè)單例類 那么要注意在多個(gè)頁(yè)面使用到時(shí)這些屬性已最后一次賦值為準(zhǔn)滔以,如果同一個(gè)頁(yè)面多處要求同時(shí)定位捉腥,本類或許將不適用。
如果你要使用持續(xù)后臺(tái)定位醉者,我們還要進(jìn)一步配置

持續(xù)后臺(tái)定位配置.png

在配置完之后使用的時(shí)候要注意但狭,關(guān)于一些后臺(tái)定位的配置都需要

isBackGroundLocation為YES的時(shí)候才能設(shè)置

iOS8進(jìn)入后臺(tái)的時(shí)候需要配置requestAlwaysAuthorization否則在頂部將會(huì)顯示一個(gè)藍(lán)條以上都配置好了就可以使用了 由于使用的百度地圖,百度地圖定位間隔的API沒有公開經(jīng)過(guò)測(cè)試大概是30秒撬即,這30秒正沉⒋牛可以滿足大多數(shù)需求 如果這里有想要
系統(tǒng)自帶的持續(xù)定位的那么你可以看看這個(gè)

注意

如果你想審核的時(shí)候不被拒,在App介紹里面的加上一句話讓用戶看到(例句):

使用“打卡”應(yīng)用點(diǎn)擊上班簽到后將開啟軌跡定位功能剥槐,會(huì)持續(xù)使用GPS定位服務(wù)唱歧,切換到后臺(tái)仍會(huì)保存GPS連接,相比其他操作會(huì)消耗更多的電量粒竖。
GPS在后臺(tái)持續(xù)運(yùn)行會(huì)影響電池續(xù)航時(shí)間颅崩。

簡(jiǎn)單的例子來(lái)一個(gè),其它用法你們可以自己看下源碼的注釋

    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) //注意別造成循環(huán)引用
//        [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];

結(jié)束了

多的不說(shuō)了蕊苗,例子什么的都在源碼里面了沿后,哪里寫的有問(wèn)題的地方可以提出來(lái)以便樓主進(jìn)行修改。覺得樓主寫的好的請(qǐng)給顆star朽砰。
源碼地址:GitHub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尖滚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞧柔,更是在濱河造成了極大的恐慌漆弄,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造锅,死亡現(xiàn)場(chǎng)離奇詭異撼唾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)哥蔚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門倒谷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛛蒙,“玉大人,你說(shuō)我怎么就攤上這事渤愁∮罴荩” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵猴伶,是天一觀的道長(zhǎng)课舍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)他挎,這世上最難降的妖魔是什么筝尾? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮办桨,結(jié)果婚禮上筹淫,老公的妹妹穿的比我還像新娘。我一直安慰自己呢撞,他們只是感情好损姜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殊霞,像睡著了一般摧阅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绷蹲,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天棒卷,我揣著相機(jī)與錄音,去河邊找鬼祝钢。 笑死比规,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拦英。 我是一名探鬼主播蜒什,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疤估!你這毒婦竟也來(lái)了灾常?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤做裙,失蹤者是張志新(化名)和其女友劉穎岗憋,沒想到半個(gè)月后肃晚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锚贱,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年关串,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拧廊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片监徘。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吧碾,靈堂內(nèi)的尸體忽然破棺而出凰盔,到底是詐尸還是另有隱情,我是刑警寧澤倦春,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布户敬,位于F島的核電站,受9級(jí)特大地震影響睁本,放射性物質(zhì)發(fā)生泄漏尿庐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一呢堰、第九天 我趴在偏房一處隱蔽的房頂上張望抄瑟。 院中可真熱鬧,春花似錦枉疼、人聲如沸皮假。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惹资。三九已至,卻和暖如春航闺,著一層夾襖步出監(jiān)牢的瞬間布轿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工来颤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汰扭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓福铅,卻偏偏與公主長(zhǎng)得像萝毛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滑黔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容