2012-09-24 5 views
43

iOS 6では、ロケーションサービス(@property(copy, nonatomic) NSString *purpose)を使用する理由を説明するために、CLLocationManagerのpurposeプロパティが廃止されました。CLLocationManagerの「目的」プロパティの置き換え

何を交換、もしあれば、Appleが提案されていますか?

+0

スコアが30以上の回答があります。あなたはそれを受け入れられたものとしてマーキングすると考えましたか? – bdesham

答えて

62

のiOS 6でpurposeプロパティの交換がNSLocationUsageDescriptionという新しいInfo.plistのキーです(:ここ

は は他の可能CLActivityTypesがある

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation]; 

ナビゲーションベースのアプリケーション

のために、たとえばです別名「プライバシー - ロケーション使用説明」)。

鍵は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を選択できるため、独自の目的をもう作成する必要はありません。

- CLActivityTypeFitness 
- CLActivityTypeOther 
- CLActivityTypeOtherNavigation 
+0

ユーザーに表示される内容が変更されますか? TypeOtherを使用するのではなく、より具体的にしたいと思います(以前は「目的」で可能でした)。置き換えを待って、私は廃止予定のメソッドを使用し続けます。 – Guillaume

+0

よく表示されるメッセージは、デフォルトのメッセージです。「 'AppName'はあなたの現在の場所を使用します」「リンゴがこれを変更した理由はわかりませんが、ユーザーは詳細を知りたいと思います。 .. –

+0

廃止予定が正式にはすぐに中止されることを意味することを忘れないでくださいが、すぐにその定義が変わる可能性があります。 – Guillaume

関連する問題