2012-09-24 51 views
43

在iOS 6中,CLLocationManager的purpose屬性用於描述使用位置服務的原因(@property(copy, nonatomic) NSString *purpose)已被棄用。替換CLLocationManager的「用途」屬性

什麼替代,如果有的話,是由蘋果公司提出的?

+0

還設有一個得分≥30一個答案;你有沒有考慮將其標記爲已接受? – bdesham

回答

62

更換爲在iOS 6中的purpose屬性名爲NSLocationUsageDescription新的Info.plist鍵(又名「隱私 - 位置使用說明」)。

關鍵是documented in the Information Property List Key Reference,但不幸的是它沒有提及purpose財產的棄用票據。

然而,CLLocationManager.h確實有此評論:

*已過時。使用密鑰NSLocationUsageDescription在Info.plist中設置目標字符串。

在代碼中,你可以同時設置鍵和purpose屬性(但你可能要檢查的位置經理首先響應的是選擇,如果/當該方法在將來實際刪除)。

如果iOS 6的下運行,位置管理器將使用的關鍵。
當在小於iOS 6的運行,密鑰將被忽略和purpose屬性將被使用。

+6

那你到底能夠如何定位這個字符串呢?或者你是否需要一個本地化的infoplist.strings來達到這個目的? (沒有雙關語意圖) –

+0

@BobdeGraaf本地化的infoplist.strings聽起來像從這裏走的路:http://stackoverflow.com/a/14144989/159758 – DonnaLea

3

我只是在我的應用程序相同的問題。

我發現你現在可以設置CLLocationManager!您可以選擇不同的CLActivityTypes的活動,這樣你就不必再編寫自己的目的。

這裏是例如基於應用

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation]; 

其他可能CLActivityTypes是導航:

- CLActivityTypeFitness 
- CLActivityTypeOther 
- CLActivityTypeOtherNavigation 
+0

它會改變顯示給用戶的內容嗎?我想更具體一些(比如之前可能有「目的」),而不是僅僅使用TypeOther。等待替換,我會繼續使用已棄用的方法。 – Guillaume

+0

那麼顯示給用戶的消息就是一條默認消息:「'AppName'想要使用你當前的位置。」我不明白爲什麼蘋果改變了這一點,我確信用戶想知道細節。 .. –

+0

不要忘記,棄用正式意味着很快被廢棄了,但很快的定義可以改變。 – Guillaume