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