2017-05-02 9 views
0

ウェイクアップ距離を設定することは可能ですか?可能であれば、起床距離/最小rssiを設定する方法は?特定の範囲のビーコンからアプリを起動する方法は?

私は最低距離以内に起床するアプリケーションを5メートルに設定するか、最小rssi値に設定します。今私は起床するためにデフォルトの範囲に基づいてビーコンからアプリケーションを起動することができます。

私はSwift 3を使ってアプリを開発しています。

答えて

1

iOS CoreLocation APIは、ビーコン監視からのコールバックのための最小距離を設定する機能を提供しません。同様のことを達成するための共通のアプローチは、ビーコンレンジングを使用することです。あなたは両方の監視を開始し、同時に及ぶことでこれを実現

locationManager?.startMonitoring(for: region) 
locationManager?.startRangingBeacons(in: region) 

モニタリングコールバックは、ビーコンが最初に検出されたときに、バックグラウンドでアプリを覚ます、および及ぶだろうが自動的に開始されます。そして、あなたが最小距離の条件が満たされた場合にのみ、あなたのロジックを実行するまでのコールバックで:

func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) { 
    for beacon in beacons { 
    // Is beacon less than 5 meters away? 
    if beacon.accuracy < 5.0 { 
     // Custom logic here 
    } 
} 

これにはいくつかの注意点があります:バックグラウンドで

  1. は、あなただけの10秒の取得します領域内のビーコンが最初に検出された後にレンジングされる。したがって、送信範囲の外側のエッジ(たとえば40メートル)のバックグラウンドでビーコンを検出した場合、ユーザーが10秒以内に5メートル以内に入ると、カスタムロジックがトリガーされます。これをより実用的にする方法はlengthen the time of background ranging to 180 secondsです。

  2. レンジングコールバックは毎秒発生します。したがって、ロジックを1回だけ実行したい場合は、何らかのフラグを設定して毎秒何度も実行しないようにする必要があります。

+0

はbeacon.accuracy in meterですか?私が監視を開始すると、実際の距離は1メートル未満ですが、ログでは、それは1メートル(おそらく3.xxxxxxx)以上のbeacon.accuracyと言います。実際の距離とbeacon.accuracyの違いを作る方法はそれほど遠すぎませんか? –

+0

精度はメートルで表されますが、ビーコン距離の推定値は変動する無線信号強度測定値に基づいているため、不正確です。可能な限り最良の結果が得られるようにビーコンの「測定電力」の設定を調整することはできますが、依然として不正確です。 – davidgyoung

関連する問題