質問: ### iBeacon をバックグランド受信する方法 PhoneGap の com.unarin.cordova.beacon を使ってビーコンを受信するアプリを作っています。 やりたいことは、スマホ端末からビーコンが離れたらローカル通知を出すアプリを作りたいです。 ### 現在できていること cordova.plugins.locationManager の didRangeBeaconsInRegion()を使ってビーコンを検知すること自体はできています。 ### 現在の設定 バックグラウンド(常時使用)の設定はしてあります。 Background Modes は、以下にチェックがしてあります。 * Location updates * Uses Bluetooth LE accessries info.plist は、以下の記述がしてあります * Privacy - Location Always and When In Use Usage Description * Privacy - Location Always Usage Description * Privacy - Location When In Use Usage Description ### 実現できていないこと ログ出力から、バックグラウンド動作はしていると思われるのですが、10秒くらいするとログ出力が止まってしまうので、それ以降はバックグラウンド処理はしていないと思われます。 ### 解決したいこと 10秒経過しても継続して計測ができれば目的を果たせると思うのですが、その方法がわかりません。 GPS ロガーのアプリがあるので、継続してバックグラウンド処理ができそうな気がするのですが、どうやって実現しているかを探しているところです。 ご存知の方がいらっしゃいましたら、教えていただけると助かります。 よろしくお願いします。 ### 補足情報(言語/ツール等のバージョンなど) Mac OS Sierra 10.12.6 Xcode 9.0.1 objective-c PhoneGap 6.5.2 iPhone6s plus iOS 11.0.3
回答: cordova.plugins.locationManager.startRangingBeaconsInRegion ではなく、 cordova.plugins.locationManager.startMonitoringForRegion で監視する分は、動作が安定しないもののバックグラウンドで動いているようです。 安定しないと判断したのは、didEnterRegion / didExitRegion が呼ばれた時にローカル通知を出しているが、反応が異様に遅い時があるためです。 ranging ではなく monitoring であれば大丈夫みたいです。 困った方の参考になれば幸いです。