6

didExitRegion が呼び出されたときに実行されるコードをトリガーする、iPhone にジオフェンスを作成するコードがあります。ただし、WiFi をオフにすると、didExitRegion がトリガーされないことがわかりました。iOS で地域の変更を監視するには WiFi が必要ですか? 希望の精度は kCLLocationAccuracyHundredMeters に設定されています。iOS 6.1 と iPhone 4 でテストしています。

位置監視を設定するための私のコードは次のとおりです。

- (id)init {
self = [super init];
if (self) {
    CLLocationManager *manager = [[CLLocationManager alloc] init];
    manager.delegate = self;
    manager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    manager.distanceFilter = RADIUS/10.0;
    manager.headingFilter = kCLHeadingFilterNone;
    self.locationManager = manager;
    self.authorizationStatus = [CLLocationManager authorizationStatus];
}
return self;
}

ありがとう

4

3 に答える 3

11

iOS デバイスは、3 つの方法を使用してユーザーの位置を検出します。(通常)最も正確なものから最も正確でないものまで、次のとおりです。

  1. GPS ハードウェア
  2. 近くの Wi-Fi ネットワークを特定することによって
  3. セルタワーの三角測量

アプリが GPS を使用していないか、実行されていない (つまり、以前に終了された) 場合、デバイスは上記の方法 2 と 3 を使用してユーザーの位置を特定しようとします。そのため、(GPS ハードウェアが使用されていない場合や GPS 信号が弱い場合に) デバイスがユーザーの位置を特定できるかどうかは、Wi-Fi ネットワークと携帯電話基地局の可用性に依存します。Wi-Fi ネットワークと基地局の数が多いほど、位置精度が向上します。したがって、ユーザーが監視対象領域に出入りする (つまり、「ジオフェンス」を横切る) 場合、ユーザーがいつ通知を受け取るかを正確に予測することは不可能です。(もちろん、問題の領域が常に同じである場合、デバイスはほぼ同じ精度でユーザーの位置を特定します)。

Location Awareness Programming Guideの関連ドキュメントは次のとおりです。

特定のしきい値距離は、現在利用可能なハードウェアとロケーション テクノロジによって決まります。たとえば、Wi-Fi が無効になっていると、地域の監視の精度が大幅に低下します。ただし、テスト目的で、最小距離は約 200 メートルであると想定できます。

そのため、地域の監視が機能するために Wi-Fi は必要ありませんが、Wi-Fi を有効にすると、ユーザーが地域のジオフェンスを越えたかどうかをデバイスが判断できる可能性が高くなります。

于 2013-04-08T20:45:04.030 に答える
2

コアロケーションを使用するwifiがないと、奇妙な奇妙なことが起こる可能性があります. あなたのケースを助けるために、距離フィルターを取り除きます。これは物事を台無しにする可能性があり、あまり役に立ちません。ジオフェンスの設定に必要な精度が必要な場合は、おそらく kCLLocationAccuracyBest のみを使用します。他の精度とフィルターを使用すると、GPS メーターが 1000 メートルずれて、修正に 1 ~ 2 分かかることがあります。これでバッテリーが多すぎる場合は、フェンスからの距離に基づいて電源をオフにしたりオンにしたりするシステムをセットアップします。

于 2013-04-08T17:30:35.847 に答える
2

WiFi をオフにすると、現在地の精度が低下します。GPS 信号がない場合 (一部の建物内)、位置情報が更新されません。外にいるとき、またはロケーション シミュレーターを使用してテストした場合は、これを試しましたか?

また、GPS (SIM を搭載した iPhone または iPad) があれば、ジオフェンス機能に WiFI は必要ありません。

于 2013-04-08T16:38:21.703 に答える