最近在寫一個LBS的項目的時候,由於考慮到適配iOS8,就將項目遷移到Xcode6.0.1上,出現了不能正常獲取定位服務權限的問題。html
self.manger = [[CLLocationManager alloc]init]; self.manger.distanceFilter = kCLDistanceFilterNone; // meters self.manger.delegate = self; [self.manger requestAlwaysAuthorization]; self.manger.desiredAccuracy = kCLLocationAccuracyBestForNavigation; [self.manger startUpdatingLocation];
以上是iOS8以前的調用方法,當用戶開啓App的時候,會主動詢問是否容許開啓定位服務權限,如今在iOS8中,不管是模擬器仍是真機,都不進行提示,通過一番查閱官方文檔-->LocationAwarenessPGIntroduction 發現,Apple在iOS8中增強了隱私訪問權限的控制,必須調用新的方法來獲取用戶的容許ios
[self.manager requestWhenInUseAuthorization];
而且在info.plist文件中增長app
NSLocationWhenInUseUsageDescription BOOL YES
NSLocationAlwaysUsageDescription string 「提示描述」
兩個字段,在iOS8中才能進行正確的獲取服務權限spa
在使用高德和百度地圖的時候,出現了編譯錯誤,大體緣由是由於Xcode6中默認爲使用64編譯形成了,若是解決,後期博文會進行更新code