2014-09-27 81 views
1

摘要: 以前運行的應用程序無法運行geode代碼和反向geode代碼。反向geode代碼失敗,因爲geode代碼無法提供位置。然後,我用蘋果自己的LocateMe示例代碼覆蓋,並啓用了隱私下的定位服務。我還啓用了位置服務下的「允許位置訪問」爲「始終」,但此設置在運行Apple的LocateMe或我自己的應用程序後自行變回無。IOS 8位置服務不能正常工作

重現步驟: 似乎位置服務SDK獲取位置已損壞。升級到IOS 8後,以前在iPhone 5上工作的軟件停止工作。 第1步。加載示例LocateMe Apple的示例Core Location示例項目; 第2步。在系統設置下啓用位置服務,並將應用程序的「允許位置服務」更改爲始終。

獲取位置失敗,並且「始終」設置被刪除。

預期結果: 獲取位置和位置更新。

實際結果: 請參閱上文。

版本: IOS 8.0.0和8.0.2

注:

配置: iPhone 5和iPhone 6加

添加此這沒有幫助: [self.locationManager requestAlwaysAuthorization];

+0

我以前有同樣的問題,這裏是我的解決方案http://stackoverflow.com/a/26075203/1998979 – 2014-09-30 02:45:34

回答

1

使用

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) \ 
    ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 



     if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8")) { 
      CLLocationManager *manager = [[LocationManager sharedInstance] clLocationManager]; 
      [manager requestWhenInUseAuthorization]; 
      [manager startUpdatingLocation]; // or what ever location function you need. 
     } else { 
      // The usual way for iOS <= 7 
      // (Do what you did before) 
     } 

除上述外,你將不得不在你的Info.plist文件添加一個字符串值的關鍵NSLocationWhenInUseUsageDescription。值是在iOS詢問用戶是否授予對您應用的位置訪問權限時在Altert中呈現的字符串。 爲了向後兼容,您可能還想添加密鑰NSLocationUsageDescription