2016-09-27 50 views
0

我有一個應用程序在那裏我掃描信標(我知道UIIDs),並顯示它們。我跑了幾次後,幾乎立即找到了信標。但是現在每次運行它時,檢測它們似乎花費的時間越來越長。儘管我將信標放在設備旁邊的桌子上。iOS版:信標檢測花費很長的時間

我已經嘗試更換電池,從iPhone更改爲iPad,檢查Mac上的信標掃描應用程序,重建應用程序等。我還有一系列來自不同製造商的不同信標,他們都似乎有同樣的問題。似乎沒有什麼解決這個問題

我的代碼基本上是這樣的:

let locationManager = CLLocationManager() 
locationManager.delegate = self 
let region = CLBeaconRegion(proximityUUID: UUID(uuidString:"61687109-905F-4436-91F8-E602F514C96D")!, identifier: "BlueCat beacon") 
locationManager.startMonitoring(for: region) 

然後,我可以等待什麼長達5分鐘或更長時間之前的任何的委託方法得到調用。

這是我第一次嘗試使用信標。這是正常的嗎?設備可以看到燈塔很長時間嗎?在iOS

回答

1

在理想條件下,didEnterRegion回調來進入範圍的信標的幾秒鐘之內。在較不理想的條件下,這些回調可能需要15分鐘或更長時間。

有很多原因可能導致在監控檢測時標延遲,這是很難說肯定不知道你究竟是如何測試。兩個小技巧:在iOS設備上

  1. 硬件過濾器插槽有限,是一個先到先得的基礎上。如果你安裝了一堆已經佔用這些插槽的信標應用程序(或者如果你的應用程序註冊了一堆地區),所有這些插槽可能已被佔用。一旦硬件過濾器插槽消失,檢測將回落到每15分鐘發生一次的軟件掃描。卸載可能持有這些插槽的所有應用程序(包括您的應用程序),然後重新安裝您的應用程序。

  2. 確保你是不是「區域」當你把應用背景。如果iOS認爲它在該地區,那麼直到它意識到它離開該地區然後再次輸入時纔會得到新的didEnterRegion回調。 iOS意識到它離開該地區的時間比實現它所花費的時間要長得多。爲了確保它能夠實現它退出該地區,您應該始終在應用程序處於前臺時放置信標,並將應用程序在前臺停留大約一分鐘,以確保iOS意識到它已不在區域內(通常需要30幾秒鐘後觸發一次退出)。只有這樣,才能將其置於背景中並打開信標來測量檢測時間。