0

ビーコンの範囲に入ったときにユーザーに表示したい UIAlertViews に少し苦労しています。ビーコンまでの特定の距離に達したときにのみ、UIAlertview が表示されるようにします。最初に、「didrangebeacons」デリゲート メソッドで Alertview を起動することを考えました。ただし、これにより AlertView が 1 秒に 1 回起動されます。次に、didEnterRegionでこれを行う必要があると考えましたが、ユーザーが範囲内(おそらく20m離れたところ)にいるとすぐに起動されます。

それを正しく実装するためのベストプラクティスは何ですか? 私が設定するフラグについて考えました。例: 「showAlert」というフラグを作成し、DidEnterRegion デリゲート メソッドで最初に「YES」に設定します。特定の RSSI に達するとすぐに、アラートビューを提示し、その後 NO に設定します。ビーコンの領域を出るとすぐに、YES に戻ります。

これはそれを行う「正しい」方法ですか?

ありがとうございました!!

4

2 に答える 2

3

didRangeBeacons メソッドで距離情報のみを取得します。そのメソッドでは、ビーコンの配列を取得します。アレイに複数のビーコンがある場合の対処方法を決定する必要があります。私がしていることは、ループして最も近いビーコンを見つけることです(実際にはおおよその距離である正確な読み取りに基づいています)

ビーコン配列が空の場合や、すべてのビーコンが近接度が不明または精度値が -1 である場合に呼び出されることがあります。これらのケースを確実に処理する必要があります。

また、バックグラウンドにいると混乱します。その場合、ビーコンの範囲に入ると、didEnterRegion 呼び出しが行われ、次にいくつかのレンジング コール (私のテストに基づいて約 5 秒間) が行われます。その後、レンジング コールが停止し、ユーザーがアプリをフォアグラウンドに戻します。バックグラウンドで実行していて、ユーザーが十分に近づいていないために最初の数回の測距呼び出しを無視すると、ユーザーが近づいても通知されません。

于 2013-11-28T21:30:12.327 に答える
1

あなたの didRangeBeacons メソッドでは、CLBeacon オブジェクトの精度プロパティおよび/または RSSI をチェックして、ビーコンが十分に近いかどうかを判断します。

精度はメートル単位の推定値であり、RSSI を使用するよりも適しているかもしれませんが、どちらも同じように互換性があると思います。

次に、アラートが表示されている状態にフラグを設定し、アラートを表示します。デリゲート メソッド "didExitRegion" では、フラグをリセットして、リージョンに戻った場合に再度通知を受け取る準備ができているようにします。

于 2013-11-29T13:10:39.043 に答える