ローカル通知でビーコンを実装しました。ブルートゥースがオンになっていて、デバイスがビーコン範囲に入り、アプリが「実行されていない」状態になっている場合、すべてが正常に機能します。ただし、デバイスが既にビーコンの範囲内にあり、Bluetooth がオンになっている場合、デリゲートは呼び出されません。それは制限ですか、それとも何か不足していますか?
1 に答える
これは Core Location フレームワークの制限です。
アプリケーションが「実行されていません」状態で終了すると、ロケーション マネージャー リージョンの didEnter / didExit リージョン イベントにより再起動できます。アプリケーションの終了中に Bluetooth のオンとオフを切り替えた場合、ロケーション マネージャーは領域の開始/終了イベントを受信しません。didEnter / didExit イベントを発生させる唯一の方法は、検出しきい値を超えてビーコン領域の 1 つに物理的に出入りすることです。
- 終了したアプリは、リージョンの didEnter / didExit イベントで起動します。
領域監視サービスは、アプリがフォアグラウンドまたはバックグラウンドで実行されている間、通常どおりイベントを配信します。(このサービスは、地理的地域とビーコン地域の両方で使用できます。) 終了した iOS アプリの場合、このサービスはアプリを再起動してイベントを配信します。
- ビーコン レンジングではアプリが起動しません。
(ビーコン領域の notifyEntryStateOnDisplay プロパティが true の場合、デバイスをスリープ解除すると、アプリはバックグラウンドで数秒間ビーコンを検出します。) このサービスは、終了した iOS アプリを再起動しません。ただし、領域監視サービスを使用してビーコン領域を監視することで再起動できます。