2016-03-10 41 views
1

我和我的團隊正在研究我們需要與用戶iPhone上的應用交談的信標。由於我們需要應用程序來檢測信標並執行代碼與我們的API交談,即使遇害,我們也無法使用CoreBluetooth並需要作爲信標進行操作。我們可以在iOS上檢測到非iBeacon信標嗎?

我們正試圖在BCM20737S BLE模塊上製作定製燈標。是否有可能將此自定義信標與iPhone上的應用程序作爲信標進行對話? (CoreLocation框架)

謝謝!

回答

1

只要您的數據包使用iBeacon協議廣播數據包,則corelocation就可以檢測到它,並且您的應用將基於檢測到該信號而被喚醒。一個iBeacon協議包是一個25字節的有效載荷集,作爲BLE廣告中的製造商數據字段。

  1. 公司ID爲2個字節(0x004C)
  2. 類型是1個字節(0×02)
  3. 數據長度爲1個字節(0x015)
  4. 接近UUID是一個16字節的十六進制字符串
  5. 主要爲2個字節uint16_t
  6. 次要爲2個字節uint16_t
  7. 測量的功率是1個字節中int8_t

這個堆棧線程可能對您有些用處。

What is the iBeacon Bluetooth Profile

但從本質corelocation只配置ibeacons,如果您想要傳送youre去需要使用CoreBluetooth iOS上不同的協議報文,然後,一旦你收到數據包,它在某種程度上與使用翻譯你的應用。

1

CoreLocation框架將僅檢測iBeacons,這意味着符合iBeacon字節格式的信標。 你當然可以建立你自己的,雖然它不一定是蘋果官方認證的iBeacon,但它必須匹配字節模式。這種模式在互聯網上廣泛使用,即使您沒有註冊獲得Apple認證計劃的權利,您也有權查看該規範。

但是,請注意不要改變字節模式。一些供應商已經建立了信標傳輸,將額外的字節發送到最後以發送電池電量。在檢測到這些傳輸時,由於標題具有不同的長度字段,因此它們檢測速度要慢得多,這與用於在後臺快速檢測的硬件過濾器不匹配。

如果您要自定義信標格式,則必須使用CoreBluetooth進行檢測。我已經寫了一些開源的iOS beacon tools幫助做到這一點,使用開源的AltBeacon和Eddystone-UID格式作爲例子。儘管背景中的檢測速度如您所說較慢,但您可以讓信標儘快發送iBeacon信號(快速喚醒您的應用)和自定義信標信號(發送您想要的任何自定義字段)以便被檢測到被喚醒。 即使您定義了自己的自定義信標格式,這種方式也可以快速檢測。

相關問題