標籤:
iOS8 定位問題2014-10-09 09:50 1012人閱讀 評論(0) 收藏 舉報
轉載自: http://www.th7.cn/Program/IOS/201409/282090.shtml
在IOS8中定位功能新增了兩個方法:
- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
這兩個新增的方法導致,之前寫的程式在iOS8運行會出現,定位功能無法正常使用
這樣讓iOS8正常使用定位功能呢?
<1>你需要在info.plist表裡面添加兩條變數
在Info.plist中加入兩個預設沒有的欄位
這兩個欄位沒什麼特別的意思,就是自訂提示使用者授權使用地理定位功能時的提示。
這樣在寫代碼:
CLLocationManager *locationManager = [[CLLocationManager alloc]init]; locationManager.delegate = self; [locationManager requestAlwaysAuthorization]; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = kCLDistanceFilterNone; [locationManager startUpdatingLocation];
這是在調用代理
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { switch (status) { case kCLAuthorizationStatusNotDetermined: if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { [locationManager requestWhenInUseAuthorization]; } break; default: break; }}
這樣就Ok了,就會彈出原來的提示框
今天在開發的時候發現了一個iOS8的定位問題,執行操作之後,不會調用到定位之後的delegate方法中,然後找了一些資料來瞭解了一下ios8系統下的定位,發現確實是有所不同的:
解決方案:
1.在info.plist中添加key;
NSLocationWhenInUseDescription,允許在前台擷取GPS的描述
NSLocationAlwaysUsageDescription,允許在後台擷取GPS的描述
2.在代碼定位中,做版本區分和授權請求:
[objc] view plaincopyprint?
- if ([CLLocationManager locationServicesEnabled])
- {
- if (!self.locationManager)
- {
- self.locationManager = [[CLLocationManager alloc] init];
- }
- self.locationManager.delegate = self;
- self.locationManager.distanceFilter=1.0;
- self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
-
- if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
- {
- [self.locationManager requestAlwaysAuthorization]; // 永久授權
- [self.locationManager requestWhenInUseAuthorization]; //使用中授權
- }
-
- [self.locationManager startUpdatingLocation];//開啟位置更新
- self.delegate = delegate;
- }
ok,解決了。 這個改動也看出了蘋果對隱私授權開始進行層次設計,授權不再僅僅是局限於是否的2選1. 這是一件好事!
iOS 8定位問題(轉)