2016-05-08 9 views
0

私は私のアプリで地域のモニタリングを採用しようとすると、私の知る限り理解し、これはアプリでもバックグラウンドでない場合であっても二つの方法、didEnterRegiondidExitRegionをトリガします。
これは、これらの関数が基本的なアプリケーション環境で呼び出されるコードのブロックであるが、その周りのすべてがゼロにされているかのように、関数を認識せずに関数を呼び出すことがあります。たとえば、CLLocationManagerを作成した場合、これは現在ではNULLになり、新しいインスタンスを作成する必要があります。私がする必要がどのようなCLLocationManagerからどれくらいの頻度でアップデートを入手できますか?

は、CLLocationManagerから現在位置を取得することですが、私はこれを使用することができますか?

locationManager = [[CLLocationManager alloc] init]; 

locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

locationManager.distanceFilter = 0; 
[locationManager startUpdatingLocation]; 

CLLocation *currentLocation = [locationManager location]; 

currentLocation良い値を保持するか、これは、デリゲートメソッドdidUpdateLocationsにのみ起こるのだろうか?

+0

デリゲートは、約2〜3秒で場所を持つことになりますが、あなたは、デリゲートが初めて呼び出されたとき、それはデリゲートに正しいよりも2〜3回にヒットした後に、それが正しい値を保持していないことを知っている必要があります値は –

+0

になります。distanceFilterには、必要に応じていくつかの値を割り当てる必要があります。それ以外の場合は、デバイスのバッテリーを吸ってください。あなたのアプリがiOSによって殺された場合、バックグラウンド位置サービスを再起動することを忘れないでください。 –

+0

@SunilSinghバックグラウンド位置サービスを再開するとどういう意味ですか? – Ted

答えて

0

地域監視中に残るものは地域です。アプリケーションがアクティブである間に、デリゲートは(必ずしもモニタリングを開始しロケーションマネージャ)位置マネージャと呼ぶことにします。

アプリがバックグラウンドで起動された場合、それは地域のモニタリングのために立ち上げ、ロケーションマネージャを作成します(と、それは、イベントを処理する必要がある任意の他)されていたことを検出する必要があります。

+0

まだ、コードはその機能の場所を取得しますか?またはdidupdatelocationsデリゲートメソッドでのみ発生しますか? – Ted

+0

はい、位置の監視のみから位置を取得しますが、領域の監視は領域の内外を提供します。しかし、あなたはいつものように、地域の状態の変化を知らされた後、場所を取得することができます。また、デリゲートに渡されたロケーションマネージャを使用することもできますが、別の場所を作成して場所を取得することもできます。 – danh

+0

currentLocatuon変数に注目してください。私は値が良い値で更新されるかどうか尋ねています。または、私はdidUpdateLocationsを待つべきですか? – Ted

関連する問題