2017-04-18 35 views
1

我目前正在研究一個涉及信標的部分的項目,因爲我看到並閱讀了不同的文章和網站,因此不建議使用非ibeacon for ios以便在時間和可訪問性方面檢測到背景檢測。我讀這篇文章: 「Can we detect non-iBeacon beacons on iOS?」 所以基本上,我們可以使用ibeacon協議來喚醒我們的手機,然後使用我們的數據包,所以我的問題是,喚醒我們的手機後,我們怎麼能連接到我們自己的相關應用程序自制協議?我們必須爲我們自己的數據包使用CoreBluetooth嗎?如果是的話,它會對ios能夠檢測到甚至是權限的速度有什麼副作用?另一個問題是,在我們喚醒手機後,我們可以將多少字節發送到我們的iOS?它還是一定的數額?或者我們可以擴展它?基本上,我們可以在第一個ibeacon包之後發送一個100KB的文件嗎?在iOS上檢測非iBeacon信標?

謝謝...

回答

2

在iOS上,有兩個非常不同的API,你可以用它來檢測信標,如藍牙LE設備,每個提供自己的優點缺點一:

CoreLocation

優點:

  • 非常快速檢測,甚至在後臺
  • 喚醒您的藍牙LE信標檢測應用
  • 更易於使用信標使用情況
  • 關的現成標價格便宜,並且可以從許多供應商

缺點:

  • 你必須知道的16個字節ProximityUUID標識檢測
  • 除了上述標識,只有四個數據字節(兩個字節主要和兩個字節未成年人)

CoreBluetooth

優點:

  • 比CoreLocation更加靈活
  • 您可以接收大約20個字節的有用數據以廣告包
  • 您可以收到很多很多如果您建立藍牙GATT連接並交換多個數據包,則可獲得更多數據。轉移100K肯定是可能的。

缺點:

  • 沒有使用廠家的廣告
  • 檢測服務廣告的背景是緩慢的背景探測能力
  • 往往需要定製信標(除非您使用AltBeacon或Eddystone)
  • 不會讓你閱讀iBeacon - 它被蘋果封鎖

您可以嘗試通過組合這兩種API來充分發揮兩全其美。您可以通過使用兩個不同的硬件信標(一個iBeacon,一個自定義)或單個硬件信標來發送兩種不同的廣告類型。

主要特技這些技術是將兩個廣告相關,如iOS的API是完全相互沙盒,沒有識別符可以在它們之間共享。我通常採用的方法是到只需使用iBeacon喚醒我的應用程序,然後開始使用已知的服務UUID(在前臺或後臺)掃描單獨的藍牙GATT服務。一旦找到這個,我連接它並用它進行數據交換。使用這種技術,我不需要關聯任何標識符。我只知道,如果我看到一個具有特定ProximityUUID的燈塔,那麼這意味着應該在附近做廣告的藍牙GATT服務可以用於我的數據交換。

+0

非常好的和詳細的答案。然而,考慮到BLE的性能,100KB傳輸儘管是絕對可能的,但可能並不是最好的想法,並且可能需要幾十秒,可能更多。 – jcaron

+0

謝謝@davidyoung,我只想知道如果我用iBeacon喚醒我的應用程序,然後搜索另一個UUID,檢測非iBeacon數據包需要多長時間?這是幾秒或幾分鐘?對於連接部分,我們是否需要進行所有配對程序?或者我們可以在我們的BLE和我們的應用程序之間傳輸數據的輕量級連接? – fafa92

+0

謝謝@ jcaron的評論,你知道一個更有效的方法來連接我的ios應用程序而無需配對嗎?通過說我的意思是傳輸數據。 – fafa92