2014-03-07 105 views
1

我已經創建了一個用於檢測信標的應用程序。事情進展順利。我遇到的問題是: 當有更多的信標彼此重疊時。我想如何處理考慮這種情況的情況 1.當我們想要在進入信標燈時從一個特定的信標中只收到一次報價時,我們就有了一個以上的信標彼此重疊的地方。如何處理互相重疊的iBeacon

感謝,

+0

也許通過檢查接近? – Larme

回答

1

當你有重疊的iBeacons,它來設計iBeacon顯示標識符是很重要的(UUID,主要,次要)和CLBeaconRegions你用來監視他們,使你得到你想要的結果。

只要檢測到任何重疊的iBeacons,您是否要觸發「優惠」?如果是這樣,然後監視CLBeaconRegion匹配他們所有,可能通過設置UUID(也許主要,如果所有信標共享該值)。在這種情況下,您將只獲得一個區域條目通知時,其中任何一個被檢測到。每個重疊的iBeacon不會得到一個。

如果您只希望在檢測到單個重疊iBeacons時觸發「優惠」,然後監控CLBeaconRegion,該優惠只匹配該iBeacon,通常通過指定該優惠券,主要和次要帳戶CLBeaconRegion 。當然,您還需要確保每個iBeacon配置有不同的未成年人。請記住,如果需要,您可以同時監視多個CLBeaconRegions,併爲每個回調獲得特定的回調。

雖然它與重疊的iBeacons是一個單獨的問題,但如果您確實希望用戶「只接收一次優惠」,則還需要爲檢測回調添加一個篩選器。 iOS中的一個小故障有時會給你一個非常快速的區域回調,接着是幾乎瞬間進入的區域回調。爲了防止用戶第二次獲得優惠,請將最後一次優惠推送給用戶的時間戳記存儲起來,並且只有在足夠的時間過後(例如1小時或一天)才能再次推送優惠券。See this answer for details.

0

我現在的工作流程是在didRangeBeacons方法中檢測與我的實際位置最接近的Beacon。這是通過比較每個信標的rssi屬性來完成的。

識別出最接近的Beacon I後,將處理此信標所需的操作。

爲了避免這個動作被重複觸發(因爲didRangeBeacons方法每秒觸發幾次),我在我的實際beaconHandler中實現了一個isLocked標誌(BOOL),它執行處理。

所以我只對離我最近的燈塔做出反應。而我只有一次反應。我也跟蹤我認爲最接近的最後一座燈塔。這使我能夠立即作出反應,如果你正在進入另一個信標範圍。所以例如當你沿着一家商店散步時,每個燈塔立即被觸發,但不會重複。

+0

,當然它們都是硬件級別配置唯一的,即所有我的信標都有一個puuid,並且每個beacon具有不同的主/次id配置 – Norman