1
私たちのゴールESTIMOTE BEACONS:私たちはゴルフ場にEstimoteビーコンを設置する予定です。私たちのシナリオは、プレーヤーがホールに到達するたびに、プレーのペースは何ですか、ビーコンによって検出されるべきです&私たちのIPhoneアプリケーションを介してサーバーに応答します。 この場合、モバイルは彼のポケットの中にあるので、ユーザはアプリを開く必要はありません&彼は遊んでいます。アプリのみがアクティブ状態にあるときのみレンジングEstimoteビーコンが期待どおりに動作していない
- 作品:今までやっていること
。 (目標は達成されません)。
- この目標を達成するために、監視を使用していますが、問題はデリゲート(didDetermineState状態:地域:)を何度か監視していないことです(瞬時に、someDelay &と呼ばれます)。言い換えれば、ビーコンは、監視によってiOSによって常に検出されるとは限らない。 (目標は達成されません)。
- 同じiOSバージョン10を使用して2つ以上のiPhone 6をテストしている場合、それぞれの電話機で異なる結果が表示されます。&その他のものは検出されません。テストのために私たちはフリップを使用して&設定ビーコンを入力/終了イベントが異なる場所に寝かした&最低の広告間隔。
- 推定ビーコンにエジストンを実装しましたが、アプリケーションがバックグラウンドのときに動作しません。 (目標は達成されません)。
インターネットまたは推定ビーコンのフォーラムで以下の解決策を試しました。
その2013年11月の記事Ibeacon monitoringが、2016年12月に、それは何の違いを思いません。我々はまた、CoreLocationManager.startUpdatingLocationまでの範囲の背景で試してみました
- 我々はEstimoteを話すことを試みたが、彼らは答えは、我々はiBeacon監視がで少しくわしいことができることを痛感している」、ambigiousましたAppleはビーコンを搭載したアプリケーションを構築しようとする開発者ほど嫌いですが、iBeaconに関しては、AppleがロックアウトのAPIを持っているため、非常に無力です.iOS上でiBeaconパケットを検出する方法はありませんこれらの問題を呈するビルトインAPIを介して それは可能なようです。
これは、現在私たちが3〜6個のビーコンを持っているビーコンの配列を登録する方法です。
func loadBeacons() { // Load beacons self.beacons = getAllbeacons() self.beaconManager = ESTBeaconManager() self.beaconManager.delegate = self self.beaconManager.requestAlwaysAuthorization() if self.beaconManager.isAuthorizedForMonitoring() == true { self.rangingBeaconsSetup() } else { self.beaconManager.requestAlwaysAuthorization() } } func rangingBeaconsSetup() { // SET UP Ranging beacons for beacon in self.beacons { if let beaconRegion = self.beaconRegionFromItem(beacon) { beaconRegion.notifyEntryStateOnDisplay = true self.beaconManager.startMonitoring(for: beaconRegion) self.beaconManager.startRangingBeacons(in: beaconRegion) } } } func beaconRegionFrom(_ beacon: Beacon) -> CLBeaconRegion? { // GET VALID REGION let val = 1 << 16 if let uuid = NSUUID(uuidString: beacon.uuid), beacon.major < val && beacon.minor < val { return CLBeaconRegion(proximityUUID: uuid as UUID, major: CLBeaconMajorValue(beacon.major), minor: CLBeaconMinorValue(beacon.minor), identifier: beacon.deviceName) } return nil } func beaconManager(_ manager: Any, didDetermineState state: CLRegionState, for region: CLBeaconRegion) { // Monitoring delegate. if state == .inside { let notification = UILocalNotification() notification.alertBody = "By tapping you will be able to check-in" notification.alertAction = "OK" notification.fireDate = Date() application.scheduleLocalNotification(notification) } }
これらは、私たちは同じIOSデバイス(OS 10)の両方inconsistant振る舞いを持ってを持っているときに我々が受け取る応答を以下の通りです。
関連した質問:
- ビーコン精度のために私たちの期待は非常に高いですか?
ビーコンがすべての電話機にデータをブロードキャストしている場合は、同じIOSバージョン、同じIphone、同じコードを持つため、すべてのデバイスが同じように動作する必要があります。 はどのように我々は我々の経験がある 一貫した結果を得ることができ、検出が
は、我々は一貫性と信頼性の高い結果を得るために何ができる「それは全く検出されない、数秒から15分、いくつかの時間に」変わりますか?