web-dev-qa-db-ja.com

CLLocationManagerの「目的」プロパティの置き換え

IOS 6では、位置情報サービス(@property(copy, nonatomic) NSString *purpose)を使用する理由を説明するCLLocationManagerのpurposeプロパティは非推奨になりました。

もしあれば、Appleはどのような代替品を提案していますか?

43
Guillaume

IOS6のpurposeプロパティの代わりに、NSLocationUsageDescriptionという名前の新しいInfo.plistキーがあります(別名「プライバシー-場所の使用法の説明」)。

キーは 情報プロパティリストキーリファレンスに記載されています ですが、残念ながら、purposeプロパティの非推奨の注記には記載されていません。

しかし CLLocationManager.hこのコメントがあります:

*非推奨。キーNSLocationUsageDescriptionを使用して、Info.plistに目的文字列を設定します。

コードでは、キーとpurposeプロパティの両方を設定できます(ただし、そのメソッドが将来実際に削除される場合は、ロケーションマネージャーが最初にそのセレクターに応答するかどうかを確認することをお勧めします)。

IOS 6で実行している場合、ロケーションマネージャーはキーを使用します。
iOS 6未満で実行している場合、キーは無視され、purposeプロパティが使用されます。

62
user467105

アプリで同じ問題が発生しました。

CLLocationManager!のアクティビティを設定できるようになりました。さまざまなCLActivityTypeを選択できるため、独自の目的を記述する必要はありません。

ナビゲーションベースのアプリの例を次に示します

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation];

その他の可能なCLActivityTypesは次のとおりです。

 - CLActivityTypeFitness
 - CLActivityTypeOther
 - CLActivityTypeOtherNavigation
3
Ralph Marschall