什麼是低功耗藍芽
低功耗藍芽是藍芽 4.0 後因應物聯網(IOT)趨勢所發展出的藍芽技術,技術特點是使用很低的能源消耗點對點的傳輸少量的資料,一般用在運動追蹤裝置、智能手錶、健康追蹤、家庭自動化…等等,低功耗藍芽一般分為兩種裝置:
- Peripheral Device(外圍裝置): 一般為智慧型穿戴裝置
- Central Device(中心裝置): 一般是智慧型手機,一般為訊號的接收方
低功耗藍牙工作原理
外圍裝置在未被連接時會不斷對外廣播(Advertisements), 中心裝置在接收到廣播內容後可以自行決定要不要連接
What is BLE? (2020) | Bluetooth Low Energy | Learn Technology in 5 Minutes
什麼是 Beacon
利用 ble 外圍裝置的廣播特性,廣播特定格式訊息的低功耗藍芽裝置,可以讓中心裝置在聽到此種廣播訊息時執行相對應指令,ex: 推播廣告,跳出資訊彈窗等,目前市場主流的 Beacon 協議有 iBeacon(Apple), Eddystone(Google), AltBeacon(Open Source), 三者中最熱門的則是 iBeacon
Beacon 使用案例
關於 iBeacon
iBeacon 為 Apple 在 2013 WWDC 上發布的 BLE 的應用技術,其將 BLE 廣播資料格式定為
範例:
同一家公司使用一個UUID,依照城市不同用不同的Major value,依照商品不同用不同的Minor Value
名詞解釋
- Region: Apple 將 beacon 信號範圍認定為一個 Geofence(虛擬的地理圍欄或區塊), 由上述的 uuid, major, minor 和 identifier (這個 region 的名稱 ex: 2 樓辦公室)來定義, 定義 uuid 和 identifier 是必填,major 和 minor 可以依照需求選填, 一個 App 最多一次同時偵測 20 個 Region
- Ranging: 裝置在偵測與 beacon 距離的行為,只能在 App 前景使用
- 觸發 eventName: didRangeBeacons
- 所需權限:Location When In Use Usage
- Monitoring: 監測手機是否進到 Region 或離開 Region,能在前景、背景、未打開 App 的情境下使用
- 觸發 eventName: didEnterRegion, didExitRegion
- 所需權限:Location Always Usage
- 注意:iOS 預設背景偵測只會有幾秒的時間來處理
Android 是否也支援 iBeacon
是的,iBeacon 只是一種 BLE 廣播的資料格式,Android 可以偵測此格式的資料後,讓 App 做對應處理,目前已有 Android Library 讓 Android 可以像 iOS 一樣進行 Ranging 和 Monitoring
Android 需要地點權限來偵測 beacon, 若未開啟會掃不到
新增以下 permission 在 AndroidManifest.xml
// old version of Android |
React-Native 相關的套件
react-native-beacons-manager 是維護年份相對較近的套件,但目前已經 3 年左右沒有再發布新版本,目前是使用 github 上最新的 git commit 點來做安裝
"devDependencies": { |
目前實測當 App 在前景時 Ranging 和 Monitoring 都能夠正常運作
參考文件與影片
藍芽
Beacon
- Get Started with Beacon(Android Official Document)
- How Beacon works?
- iBeacon. It’s a Trademark, Not a Technology.
- ESP32 #6: BLE / Bluetooth iBeacon implementation
- Understanding the different types of BLE Beacons
- Turning an iOS Device into an iBeacon Device
- How to scan iBeacon signals without specifying UUID?
- ibeacon背景偵測流程
- Swift iBeacon App 程式設計
- iBeacon 偵測範例 - android client
- estimote api doc (此 Doc 非常解釋清楚 ,請優先閱讀)
iBeacon Apple Docs
- Getting Started with iBeacon (此為 Apple 完整說明 iBeacon 運作方式文件,請優先閱讀)
- Determining the Proximity to an iBeacon Device
- Region Monitoring and iBeacon
- Ranging for Beacons
FAQ
- 可以改 Beacon 的 UUID 嗎?
可以,但是需要經由廠商提供的 App 或 SDK
Question reference: Stack Overflow , Apple Developer Forums