再見,BLE的那些坑!

攻城獅Right發表於2018-12-24

藍芽,平常你用的多嗎?
上班路上戴著藍芽耳機聽音樂、看視訊
開啟藍芽分享個人熱點給小夥伴們
解鎖共享單車時,開啟藍芽就能迅速解鎖
……

BLE—藍芽低能耗技術,方便了我們的生活,但是開發者在開發過程中卻遇到了不少坑,尤其對小白使用者來說坑真的太多了,都是安卓、iOS系統惹的禍。

今天,柚子君給大家分享一個解決BLE那些坑的經驗,希望能幫助更多人。

專案中用到BLE模組時,要注意以下問題:

❶ 用示例程式碼安卓系統掃描藍芽裝置就無法成功,而蘋果則沒問題。

✓ 解決辦法:將serviceUUIDs: [“, “]改為serviceUUIDs: []即可。一次掃描不出來可以多掃描幾次。

❷ 安卓和蘋果的裝置UUID不一樣,安卓為xx:xx:xx:xx:xx:xx格式,蘋果為GUID格式。

✓ 解決辦法:以你掃描獲取的UUID訪問裝置就行了。
❸ 安桌和蘋果的服務UUID和服務特徵CharacteristicsUUID不一樣(服務UUID和服務特徵CharacteristicsUUID是父子關係)。
安卓為GUID格式,蘋果為短格式。兩者掃描出的服務數也不一樣,蘋果只掃描出使用者能呼叫的,安卓會把系統級的也掃描出來,安卓一般第3個服務是使用者能呼叫的。
✓ 解決辦法:以你掃描獲取的獲取的服務UUID的服務特徵CharacteristicsUUID訪問就行了。

❹ 最重要的一點,也是為什麼呼叫老不對的問題。

✓ 解決辦法:不管你是否知道裝置UUID,服務UUID,藍芽是否開啟。請一定要按步驟呼叫:掃描裝置->連線裝置->獲取所有服務UUID

->服務UUID對應的所有服務特徵CharacteristicsUUID。這些步驟走完了,才能呼叫服務UUID和對應的服務特徵CharacteristicsUUID。

▌本文作者:APICloud 版主 scmyzyh

相關文章