2011-02-08 21 views
5

私はビルドしているアプリのためにCLLocationManagerを試してきました。位置情報サービスが有効になっているかどうか、ユーザーが自分の現在地を使用することを許可しているかどうかを確認する方法を理解しています。ロケーションサービスの変更に関する通知?

ユーザーは、私のアプリが最初に自分の場所を使用することを可能にし、ユーザーのいずれかの場合:

  1. 明示的
  2. の位置情報サービスをオフには、明示的に私のデ許可
  3. 機内モードで電話をかけますアプリの場所を使用するには

アプリを再開すると自動的に登録して応答できる通知が投稿されていますか?

もし私がAppDelegateのapplicationDidFinishLaunchingメソッドとapplicationWillEnterForegroundメソッドに手動でこのチェックを入れるには、このシナリオを処理する最善の方法(私はGPS座標を表示しているビューを更新できます)ですか?

アプリを再起動すると、最初のビューではviewWillAppearがトリガーされず、そのビューをGPS座標の表示からフレンドリーなメッセージに変更して再表示する必要があるため、ロケーションサービスを可能にするために、AppDelegatesは私が考えることができる最高のフックでした。

ありがとうございます!

答えて

2

あなたのアプローチは健全です。アプリの再起動時にコアロケーションが利用できない場合、またはネットワークアクセスが変更された場合は、それに応じて更新する必要のあるViewControllerに通知を送信できます。チェックアウトNSNotificationCenter

上記を採用しても、いつでもネットワークアクセスが失われる可能性があるため、いつでもviewDidAppearでこれらのチェックを行うことをお勧めします。さらに、位置検査を行うラインテストでも使用できます。

+0

感謝を取得します。最初のアプリケーションの起動と、最初の読み込み後にビューが画面に読み込まれるたびに、1)viewWillAppearを使用して、2)アプリケーションをバックグラウンドから再開するためのapplicationWillEnterForegroundを使用します。私のテストでは、viewDidAppearは最初にビューが読み込まれたときに呼び出されるだけなので、アプリケーションに残っている間にネットワーク到達可能性が変更された場合には使用したくありません。 – djibouti33

16
のiOS 4.2で

以降あなたは、デリゲートの呼び出しにご返信用

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; 
+1

これは受け入れられる回答でなければなりません –

関連する問題