前言
本文是一些解決 BLE 廣播相關(guān)問(wèn)題的經(jīng)驗(yàn)分享。對(duì)于用戶(hù)常常遇到的一些問(wèn)題,比如廣播包最多能帶多少用戶(hù)數(shù)據(jù),廣播名字怎么設(shè)置,廣播類(lèi)型有哪些,為什么有些手機(jī)無(wú)法掃描到設(shè)備等問(wèn)題,都將在本文得到解答。
BLE 廣播最基礎(chǔ)知識(shí)
隨著 BLE 核心規(guī)范版本的更新,藍(lán)牙廣播增加了很多特性,如擴(kuò)展廣播,同步廣播等。本文不對(duì)這些特性做展開(kāi),僅討論傳統(tǒng)廣播的一些比較基礎(chǔ)的知識(shí)。
手機(jī)找不到設(shè)備的普通廣播?
用戶(hù)使用手機(jī)的系統(tǒng)藍(lán)牙掃描周?chē)O(shè)備時(shí),系統(tǒng)藍(lán)牙可以?huà)叱鲆恍┰O(shè)備,但自己的設(shè)備卻沒(méi)有掃描到?
先一句話(huà)概括:可能和手機(jī)的系統(tǒng)藍(lán)牙的過(guò)濾機(jī)制有關(guān)。
手機(jī)找不到設(shè)備的 Beacon 廣播?
這個(gè)問(wèn)題和找不到設(shè)備的普通廣播的原因類(lèi)似,可以先一句話(huà)概括:可能和手機(jī)系統(tǒng)藍(lán)牙的過(guò)濾機(jī)制有關(guān)。解決的辦法是找到一個(gè)可以?huà)呙?Beacon 廣播包的 APP,比如LightBlue 等。
廣播名顯示異常
這個(gè)問(wèn)題有以下幾個(gè)場(chǎng)景:
- 使用 iOS 手機(jī)掃描設(shè)備,掃到“a”名字的設(shè)備,而當(dāng)連接、斷連一次該設(shè)備后,再次掃描,掃到了“b”名字的同一個(gè)設(shè)備。
- 工程師在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn),固件上修改了設(shè)備名但無(wú)法修改成功,用 iOS 手機(jī)掃描出來(lái)一直是某個(gè)固定的名字,而當(dāng)用 Android 手機(jī)掃描時(shí),則一切正常。
一句話(huà)解答這個(gè)問(wèn)題是:iOS 手機(jī)遵循完整的設(shè)備名掃描機(jī)制,并且會(huì)保留已連接設(shè)備的信息。
小結(jié)
在開(kāi)發(fā)過(guò)程中遇到和藍(lán)牙廣播相關(guān)的問(wèn)題時(shí),基于本人的經(jīng)驗(yàn)可按下以下步驟進(jìn)行逐一排查:
- 確認(rèn)系統(tǒng)正確發(fā)出廣播,可通過(guò) LOG 信息和電流波形確認(rèn);
- 工程師在開(kāi)發(fā)過(guò)程中修改藍(lán)牙外設(shè)固件時(shí),最好使用 Public 地址類(lèi)型并且每次下載固件前都改一下藍(lán)牙地址;
- 了解藍(lán)牙的廣播類(lèi)型,有一些手機(jī) APP 無(wú)法掃描 Beacon 類(lèi)設(shè)備,建議使用STBLE Toolbox 工具或者 LightBlue 工具對(duì)設(shè)備進(jìn)行掃描;
- 注意手機(jī)的系統(tǒng)藍(lán)牙有過(guò)濾機(jī)制,本文檔的第三章提及的解決方式,不能百分百逃過(guò)手機(jī)的過(guò)濾機(jī)制。當(dāng)遇到有的手機(jī)無(wú)法掃描自己的 BLE 外設(shè)時(shí),我們可以利用該手機(jī)系統(tǒng)藍(lán)牙已掃出的設(shè)備,對(duì)其廣播包進(jìn)行解析,找出其被該手機(jī)識(shí)別的廣播字段依據(jù)。