iOS8 下定位 (CLLocationManager) 的改變 |
2014/09/21 ~ 阿亮 ~ |
今天 iOS8 下測試下一班高鐵v1.8.1 、下一班火車v1.2.1 ,發現定位的寫法也不一樣了…. >”< 舊的 CLLocationManager 寫法,在新安裝的 App 會出現定位不會被詢問的情形。
如上圖所示,原本 Xcode5.1.1 的定位,若沒有變更程式碼,用 Xcode6 去編繹,安裝後的 App 會發現在「隱私權」>「定位服務」下的應用程式呈現沒有設定(如圖 1.),新裝的 App 也不會因為 CLLocationManager startUpdatingLocation 詢問定位的權限了
在 iOS8 下,它改由 requestWhenInUseAuthorization 來詢問權限
if (nil == locationManager) { locationManager = [[CLLocationManager alloc] init]; } if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) [locationManager requestWhenInUseAuthorization];
另外,要在 info.plist 設定詢問權限時的字串 NSLocationWhenInUseUsageDescription
這樣在詢問的對話框就會出現上面設定的字串了
上面定位有問題的情形倒是在以下情形是不會發生的
- 原本 iOS7 就安裝的App,升級到 iOS8,因為原本定位設定儲存了,不會有問題
- 在 iOS8 下,安裝 Xcode5.1.1 編繹出來的 App
Thanks for sharing!
谢谢博主,以前都用iOS7测的,换了8之后也没试过定位,今天一用 !!昏頭!!
问题解决了,太好了 !!放炮!!
谢谢博主,解决大问题了。。。。真心被折腾了三四天了,原来答案在这里 !!爽!!
博主请收下我的膝盖~~~ Orz