定位

https://github.com/ChenYilong/iOS9AdaptationTips/

其他參考資料:
1.定位參考 http://www.tuicool.com/articles/v6vEri

iOS開發(fā)

http://www.cocoachina.com/ios/20150618/12200.html

iOS 9適配系列教程:后臺定位

適配iOS 9后臺定位

0.jpg

Demo:GitHub地址

【iOS9在定位的問題上,有一個壞消息一個好消息】壞消息:如果不適配iOS9昨登,就不能偷偷在后臺定位(不帶藍條售碳,見圖)!好消息:將允許出現(xiàn)這種場景:同一App中的多個location manager:一些只能在前臺定位芜果,另一些可在后臺定位查蓉,并可隨時開啟或者關閉特定location manager的后臺定位。

如果沒有請求后臺定位的權限焚虱,也是可以在后臺定位的骏融,不過會帶藍條:

untitled3.png1.jpg

如何偷偷在后臺定位:請求后臺定位權限:

// 1. 實例化定位管理器
_locationManager = [[CLLocationManager alloc] init];
// 2. 設置代理
_locationManager.delegate = self;
// 3. 定位精度
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];``
// 4.請求用戶權限:分為:?只在前臺開啟定位?在后臺也可定位链嘀,
//注意:建議只請求?和?中的一個,如果兩個權限都需要档玻,只請求?即可怀泊,
//??這樣的順序,將導致bug:第一次啟動程序后误趴,系統(tǒng)將只請求?的權限霹琼,?的權限系統(tǒng)不會請求,只會在下一次啟動應用時請求?

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
   //[_locationManager requestWhenInUseAuthorization];//?只在前臺開啟定位``
   [_locationManager requestAlwaysAuthorization];//?在后臺也可定位
}
// 5.iOS9新特性:將允許出現(xiàn)這種場景:同一app中多個location manager:一些只能在前臺定位,另一些可在后臺定位(并可隨時禁止其后臺定位)枣申。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
   _locationManager.allowsBackgroundLocationUpdates = YES;
}
// 6. 更新用戶位置
[_locationManager startUpdatingLocation];
但是如果照著這種方式嘗試售葡,而沒有配置Info.plist,100%你的程序會崩潰掉忠藤,并報錯:

*** Assertion failure in -[CLLocationManager setAllowsBackgroundLocationUpdates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-1808.1.5/Framework/CoreLocation/CLLocationManager.m:593

要將 Info.plist 配置如下:

untitled2.png

blob.png

對應的 Info.plist 的XML源碼是:

untitled1.png

http://doc.okbase.net/boyuanmeng/archive/123031.htmlblob.png

在iOS8以前的版本中挟伙,我們使用CLLocationManager定位是沒有問題的,最近在iOS8系統(tǒng)中卻無法定位了模孩。尖阔。。榨咐。這是一大問題敖槿础!

1块茁、首先定義一個全局的變量用來記錄CLLocationManager對象齿坷,引入CoreLocation.framework使用
#import <CoreLocation/CoreLocation.h> @property (nonatomic, strong) CLLocationManager *locationManager;

2、初始化CLLocationManager并開始定位

locationManager=[[CLLocationManager alloc] init];

    locationManager.delegate=self;

    locationManager.desiredAccuracy=kCLLocationAccuracyBest;

    locationManager.distanceFilter=10;

    [locationManager startUpdatingLocation];//開啟定位

3数焊、實現(xiàn)CLLocationManagerDelegate的代理方法

#pragma mark CLLocationManagerDelegate<br>/**<br>* 獲取經(jīng)緯度<br>*/

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

    CLLocation *currLocation=[locations lastObject];

    location.strLatitude=[NSString stringWithFormat:@"%f",currLocation.coordinate.latitude];

    location.strLongitude=[NSString stringWithFormat:@"%f",currLocation.coordinate.longitude];

    NSLog(@"la---%f, lo---%f",currLocation.coordinate.latitude,currLocation.coordinate.longitude);

}

/**

 *定位失敗胃夏,回調此方法

 */
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{

    if ([error code]==kCLErrorDenied) {

        NSLog(@"訪問被拒絕");

    }

    if ([error code]==kCLErrorLocationUnknown) {

        NSLog(@"無法獲取位置信息");

    }

}

iOS8中使用CoreLocation定位

1、在使用CoreLocation前需要調用如下函數(shù)【iOS8專用】:iOS8對定位進行了一些修改昌跌,其中包括定位授權的方法仰禀,CLLocationManager增加了下面的兩個方法:(1)始終允許訪問位置信息

- (void)requestAlwaysAuthorization;
(2)使用應用程序期間允許訪問位置數(shù)據(jù)

- (void)requestWhenInUseAuthorization;

示例如下:

    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=10;
    if (iOSVersion>=8) {
        [locationManager requestWhenInUseAuthorization];//使用程序其間允許訪問位置數(shù)據(jù)(iOS8定位需要)
    }
    [locationManager startUpdatingLocation];//開啟定位

2、在Info.plist文件中添加如下配置:(1)NSLocationAlwaysUsageDescription
(2)NSLocationWhenInUseUsageDescription
untitled4.png

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蚕愤,一起剝皮案震驚了整個濱河市答恶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萍诱,老刑警劉巖悬嗓,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異裕坊,居然都是意外死亡包竹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門籍凝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來周瞎,“玉大人,你說我怎么就攤上這事饵蒂∩睿” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵退盯,是天一觀的道長彼乌。 經(jīng)常有香客問我泻肯,道長,這世上最難降的妖魔是什么慰照? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任灶挟,我火速辦了婚禮,結果婚禮上毒租,老公的妹妹穿的比我還像新娘稚铣。我一直安慰自己,他們只是感情好蝌衔,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布榛泛。 她就那樣靜靜地躺著蝌蹂,像睡著了一般噩斟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孤个,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天剃允,我揣著相機與錄音,去河邊找鬼齐鲤。 笑死斥废,一個胖子當著我的面吹牛,可吹牛的內容都是我干的给郊。 我是一名探鬼主播牡肉,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淆九!你這毒婦竟也來了统锤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤炭庙,失蹤者是張志新(化名)和其女友劉穎饲窿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焕蹄,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡逾雄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腻脏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸦泳。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖永品,靈堂內的尸體忽然破棺而出辽故,到底是詐尸還是另有隱情,我是刑警寧澤腐碱,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布誊垢,位于F島的核電站掉弛,受9級特大地震影響,放射性物質發(fā)生泄漏喂走。R本人自食惡果不足惜殃饿,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芋肠。 院中可真熱鬧乎芳,春花似錦、人聲如沸帖池。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睡汹。三九已至肴甸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囚巴,已是汗流浹背原在。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彤叉,地道東北人庶柿。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像秽浇,于是被迫代替她去往敵國和親浮庐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內容

  • 出自http://my.oschina.net/are1OfBlog/blog/420034 摘要 現(xiàn)在很多社交柬焕、...
    JJO閱讀 4,142評論 4 19
  • http://www.cnblogs.com/kenshincui/p/4125570.html 摘要: 現(xiàn)在很多...
    大崔老師閱讀 3,300評論 1 2
  • CoreLocation框架 一. iOS8.0之前的定位(?????) 前臺定位導入CoreLocation框架...
    尼古拉斯趙四爺閱讀 978評論 0 2
  • 一审残、定位介紹 現(xiàn)在很多社交、電商击喂、團購應用都引入了地圖和定位功能维苔,似乎地圖功能不再是地圖應用和導航應用所特有的。的...
    LHsunshine閱讀 321評論 0 0
  • 再遇見你的時候很偶然 我還在陽光下嘻嘻哈哈 說實話我受到了驚嚇 雙唇緊閉 我有些猶豫 我沉浸在那天的爭吵 像把刀子...
    一個膚淺的人丶閱讀 159評論 0 0