0

我目前正在研究一個應用程序,我希望我的應用程序能夠在後臺模式下檢測到信標時(即時)。根據我讀過的文章,不能用didEnterRegion完成,我應該在後臺模式下運行時使用範圍(位置更新)。有什麼解決方案可以直接減少didEnterRegion閾值嗎?或者我應該使用其他方法嗎?如果是這種情況,它是否像didEnterRegion一樣工作,但RSSI範圍有限?當我的手機進入該區域並鎖定並且屏幕關閉時,它是否工作?降低didEnterRegion的門檻

回答

2

監控API無法控制檢測回調的距離。第一次在無線電廣播範圍內,通常在40米左右的時間裏,你總會得到一個回叫。

有兩種方式只能在近距離上的信標來觸發:

  1. 配置您的信標低無線電發射功率,如果製造商支持它。

  2. 將Ranging API與監控結合起來,並且儘可能在後臺運行(在沒有特殊後臺許可的情況下,iOS上的最大時間爲180秒),然後在測距回調錶示CLBeacon準確性字段爲即時時觸發您的邏輯。

選項1比較簡單,但不太可靠,因爲它往往會觸發更遠的距離,而且有時甚至在非常接近的範圍內都會觸發。

只要背景測距時間沒有用完,選項2更可靠。如果手機的收音機在40米處觸發以開始測距,如果用戶超過180秒直接接近,則測距時間用完,並且在信標消失並且重新出現以重置允許的測距時間之前,您無法觸發觸發器。

+0

感謝您的澄清,所以據我所知,沒有任何方法可以長時間進行測量而不會關閉?即使通過觸發位置更新,例如以下行: self.locationManager.allowsBackgroundLocationUpdates = true; – fafa92

+0

可以通過按下肩膀按鈕或主頁按鈕打開手機屏幕作爲iOS觸發器再次開始測距?或者當手機超出範圍然後進入時它可以重新啓動? – fafa92

+1

是的,它可以。 CLBeaconRegion上的一個名爲notifyEntryStateOnDisplay的設置會導致額外的回調,它會重置測距時鐘。 allowedBackgroundLocationUpdates設置對信標測距沒有影響,但您可以將位置背景模式添加到您的plist以獲得無限的背景測距。感謝有問題,你需要說服蘋果,你提供了一個引人注目的位置相關的好處,用戶獲得批准的應用程序商店。 – davidgyoung