2015年1月22日

解決 iOS 8.0.2 的 GPS 定位問題

又來了~自從升上 iOS8 之後,bug 一下多了很多,客戶的回饋是他們原先的 GPS 定位都不能使用了。而我自己安裝的軟體是從 8.0 就安裝好的,所以我沒有遇到這個 bug。

是這樣的,蘋果的 iOS 8.0.2 開始對於定位有了新的定義,所以需要使用下列的方法修正:

1. 請先到專案的 Info 裡面,增加兩個重要的屬性
NSLocationAlwaysUsageDescription  還有  NSLocationWhenInUseUsageDescription
這兩個屬性不會自己跑出來,請愛用複製貼上。 型態可以是 String or Bool



2. 去程式裡面找到呼叫 CLLocationManager 的地方 修改如下:


 locManager = [[CLLocationManager alloc] init];
    locManager.delegate = self;
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8) {
        [locManager requestAlwaysAuthorization];
        [locManager requestWhenInUseAuthorization];
    }
    locManager.DesiredAccuracy = kCLLocationAccuracyBest;
    [locManager startUpdatingLocation];


3. 然後再去對應的地方修改(或新增)程式碼:

- (void)locaitonManager:(CLLocationManager *)manager didChangAuthorizationStatus:(CLAuthorizationStatus) status
{
    switch (status){
        case kCLAuthorizationStatusNotDetermined:
            if ([locManager respondsToSelector:@selector(requestAlwaysAuthorization)]){
                [locManager requestWhenInUseAuthorization];
           
            }
            break;
        default:
            break;
    }
   
}


4. 執行程式吧,理論上可以看到要求打開權限的對話框了,大功告成!





沒有留言:

輕鬆玩東京六天五夜

起因是今年春天在我們家一輪投票之後,泰國曼谷出局,東京獲選為我們家的暑假旅遊點,掌聲~~~