2014-09-06 25 views
3

對於特定的業務案例,我想通過利用iBeacon技術來觸發基於接近度的通知(推送或UILocalNotification)。 這是爲了在應用程序處於後臺/鎖定屏幕時工作。iBeacon案例 - 帶距離限制的觸發didEnterRegion

我有一些具體的限制:

  • 該產品具有在一定的水平縮放,所以它不是可能的範圍內20個地區。我們將範圍上只有一個UUID(也許2或3,如果我們開發新的功能集,但我們不會登記每個物理信標區)

  • 我們將使用主要和次要調用Web服務

  • 關於這一點,我知道我將不得不使用以下方法:第一次didEnterRegion:沒有關於主要/次要/距離的先前信息,然後didRangeBeacon:執行更高級的操作。 考慮到信標的快速波束率,我已經使用本地存儲機制來超時使用信標。

    *的主要制約因素:我們有關於信標的距離區域的事件(爲例,僅觸發通知,如果CLProximityImmediate)

現在我看到的主要限制。正如我的應用程序將只在後臺幾秒鐘的範圍後,在一個區域進入,如果我有基於距離/接近的限制,這是非常有可能的是,應用程序將:

  • 返回後臺狀態之前用戶得到的物理信足夠接近被觸發事件
  • 永遠不會被再次觸發,因爲它進入該區域再次範圍內,這可能不會發生

你有什麼想法/解決這種情況?

回答

3

您在此用例中適用的限制CoreLocation絕對正確。如果按照您所描述的方式進行設置,典型行爲將是應用程序將在未知距離(通常最大範圍約50米)內檢測背景中的信標,背景範圍約5秒,然後應用程序將被iOS暫停。 5秒的測距時間通常不足以讓用戶接近足夠的信標來觸發您的用例。

不幸的是,有沒有簡單的解決方法與標準信標和CoreLocation.CLBeaconRegion對象沒有像地址爲CLCircularRegion的距離字段。

兩個比較極端的方法,你可以嘗試:

  1. 只要你檢測設備是太遠關掉你的一個區域的監控,然後重新啓用它的權利爲您的應用程序掛起自己在回撥爲applicationWillResignActive:。您可能會得到一個新的入場事件和更多的背景測距時間。

  2. 使用非標準信標週期性停止它們的傳輸以觸發強制退出/進入事件。

+0

感謝您確認我的觀點。 我將探索看起來有趣的第一個選項! – 2014-09-06 12:59:42