6

この質問は、アプリケーションがバックグラウンドにあるときに関するものです。2 つの iBeacons (同じ UUID、同じメジャー、異なるマイナー) で動作するアプリケーションを取得しました。

最初の iBeacon (マイナー 1) は、たとえばドア用です。アプリがバックグラウンドにあるとき、私は地域に入ったという通知を受け取ります。これはうまくいきます。そして今、たとえば、私は店を歩いていて、ある時点で2番目のiBeacon(マイナー2)です。2 番目の iBeacon の直近のゾーンにいる場合、アプリケーションは通知を送信する必要があります。(「ねえ、キャッシュポイントにいます」)。しかし、アプリケーションがバックグラウンドにある場合、それは不可能だと読みました。ショルダーボタンまたはホームボタンを押したときのみ機能します。 http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

質問: このユースケースを実装する方法を誰かに教えてもらえますか?

4

1 に答える 1

14

いくつかのこと:

ビーコン リージョンを作成するときは、UUID、UUID とメジャー値、または UUID、メジャー値とマイナー値のいずれかで照合できます。

UUID のみを指定すると、ビーコンの開始/終了通知にメジャー/マイナー値の情報が含まれなくなります。

同様に、UUID とマイナー値ではなくメジャー値を使用してリージョンを作成すると、ビーコンの開始/終了メッセージには、ビーコンの UUID とメジャー値が含まれますが、マイナー値は含まれません。

最も簡単な方法は、追跡しているリーチ ユニーク ビーコン用に別のリージョンを作成することです。次に、ビーコンごとに個別の入退室通知を受け取ります。

複数のビーコンを同じリージョンの一部にしたいが、異なるメジャー値またはメジャー/マイナー値を報告する場合は、ビーコン レンジングをオンにして、レンジング コールを待つ必要があります。測距呼び出しでは、現在の領域に一致するすべてのビーコンのビーコン オブジェクト (ビーコン領域オブジェクトではなく、CLBeacon オブジェクト) の配列を取得します。ビーコン オブジェクトには、そのビーコンの実際の UUID、メジャー、およびマイナーが含まれます。

バックグラウンドでビーコンの監視と測距の両方をオンにしている場合、didEnterRegion メッセージ (または状態変更メッセージ) に続いて数秒間の測距情報が表示され、アプリはスリープ状態に戻ります。

アプリがバックグラウンドにある場合、唯一の現実的な選択肢は、ローカル通知を表示して、ユーザーがアプリを再び起動することを期待することです。ユーザーがその通知をスワイプすると、システムは必要に応じて資格情報のロック解除をユーザーに促し、ユーザーをアプリに戻します。

于 2013-12-05T20:33:40.823 に答える