藍(lán)牙開發(fā)中的常見的問題
發(fā)布時間:2022-08-03 09:19:34
瀏覽:299
藍(lán)牙開發(fā)中的常見的問題:
藍(lán)牙技術(shù)憑仗其普遍性與簡約性改動了設(shè)備之間的無線通訊。由于其功耗與本錢較低,在安康醫(yī)療、體育健身、家庭樓宇自動化、信標(biāo)等應(yīng)用范疇的開展過程中發(fā)揮著至關(guān)重要的作用。
藍(lán)牙給我們帶來很多便當(dāng),不過關(guān)于一些新手,在停止藍(lán)牙開發(fā)之前,有必要對其相關(guān)的學(xué)問有細(xì)致的理解,這里主要引見一些藍(lán)牙應(yīng)用開發(fā)的常見問題。
1.應(yīng)用如何做自動重連
其實自動重連比想象的要簡單許多,無論是Android還是ios端,只需求在設(shè)備斷開銜接的拜托辦法中,重新調(diào)用gatt.connet或者是centralManager.connet辦法就能夠了,無論當(dāng)時設(shè)備能否有點,能否在四周,當(dāng)設(shè)備再次開會或者銜接到可銜接范圍內(nèi),都會自動被連上。
2.銜接失敗處置
分兩個平臺來說,iOS端有銜接失敗的拜托,但簡直不會發(fā)作這種狀況;而關(guān)于同款設(shè)備,android常常會呈現(xiàn)銜接失敗的狀況,status != BluetoothGatt.GATT_SUCCESS ,android端開發(fā)請不要把銜接失敗和斷開銜接放在一塊處置,由于斷開銜接能夠直接嘗試重新銜接,而銜接失敗后嘗試重新銜接,需求加一些延時,并且需求gatt.close,清空一下狀態(tài),否則會把gatt阻塞招致手機不重啟藍(lán)牙就再也無法銜接任何設(shè)備的狀況。
3.后臺運轉(zhuǎn)
iOS后臺運轉(zhuǎn),需求設(shè)備中info.Plist權(quán)限,key:Required background modes,value: bluetooth-central(手機作為central) , bluetooth-peripheral(手機作為外設(shè))
4.同時銜接多個設(shè)備
Android很簡單,創(chuàng)立多個gattCallback,每個gattCallback單獨管理設(shè)備銜接后的操作,而iOS也倡議不要創(chuàng)立多個CBCentralManager,多個CBCentralManager理論上能夠用,但是會存在多個手機版本存在不同的行為,還有一些很容易出錯的問題,這塊內(nèi)容不細(xì)說了。運用同一個CBCentralManager,經(jīng)過進入拜托的peripheral的identifier辨別不同的設(shè)備,停止不同的操作和處置。
5.掃描播送包
一切外設(shè),只要在發(fā)出播送包的狀況下,才干被central發(fā)現(xiàn),絕大多數(shù)狀況下,外設(shè)被銜接后就不會發(fā)出播送(也有例外),很多人遇到無法找到設(shè)備的問題,大多屬于這種狀況。
6.進步藍(lán)牙銜接速度
無論是iOS,還是Android,都能夠經(jīng)過已綁定的設(shè)備,在不開啟掃描的狀況下停止快速銜接,iOS需求的參數(shù)是peripheral的identifier,Android需求mac地址。但Android和iOS還是有一些區(qū)別的,比方iOS不能拿到已綁定的設(shè)備list,但是能夠經(jīng)過UUID去拿到peripheral的實例。而Android能夠拿到已綁定的設(shè)備list。Android綁定過程需求手動調(diào)用createBond的辦法,而iOS在銜接勝利一次后會自動綁定。Android在處置createBond時,常常會由于不同手機平臺,不同設(shè)備,會產(chǎn)生兼容性的問題,這點需求留意。
7.定向掃描
在掃描時分能夠傳入serviceUUID,這樣能夠掃描到特定條件的設(shè)備,進步掃描的速度,掃除干擾。
8.如何獲取mac地址
Android能夠直接經(jīng)過getAddress得到mac地址;而iOS出于蘋果的平安戰(zhàn)略問題,無法直接取得mac地址,只能得到一個mac地址換算出來的identifier。不過在智能設(shè)備開發(fā)時,普通都會思索到這個問題,大多數(shù)智能設(shè)備會把mac地址保管在播送數(shù)據(jù)中,不同設(shè)備可能會存在不同的位置。
9.Babybluetooth藍(lán)牙庫的運用
Babybluetooth是iOS的藍(lán)牙庫的封裝,iOS藍(lán)牙拜托層級特別厭惡,一個拜托接著一個拜托,比方先進入掃描的拜托,在進入鏈接的拜托,在進入銜接勝利,發(fā)現(xiàn)效勞,發(fā)現(xiàn)特征,讀寫操作,一套操作被拆分的很散,容易出錯,代碼不易維護,上手慢等缺陷,Babybluetooth對CoreBluetooth停止了封裝,把拜托回調(diào)停止辦法調(diào)用的方式,改成了鏈?zhǔn)睫k法次第調(diào)用,直接調(diào)用baby.enjoy()辦法,完成一整套操作,簡化了上手難度和代碼維護本錢。