前言:
最近做了款藍(lán)牙打印的功能,包含藍(lán)牙自動(dòng)連接,藍(lán)牙搜索,連接之后進(jìn)行打印??偨Y(jié)了下知識(shí)點(diǎn),寫(xiě)了一個(gè)簡(jiǎn)單的Demo,對(duì)系統(tǒng)的<CoreBluetooth/CoreBluetooth.h>進(jìn)行二次封裝,避免一大推的代理調(diào)用。使用方法:
pod 方法 : ? ? ? ? ? ?pod 'JWBluetoothPrinte'
github地址: ?https://github.com/kafeidou1991/JWBluetoothPrinte
給大家分享下。有什么錯(cuò)誤的話(huà)希望大神們給我留言或者QQ(38251725)我,及時(shí)指正,避免誤導(dǎo)小伙伴們,謝謝。
1.導(dǎo)入工程文件
首先我們要知道手機(jī)藍(lán)牙簡(jiǎn)單的工作流程,我們?cè)趺床拍軐?shí)現(xiàn)打印功能呢?下面我說(shuō)下自己的見(jiàn)解。流程如下:判斷藍(lán)牙是否打開(kāi)-->搜索藍(lán)牙設(shè)備-->連接藍(lán)牙設(shè)備-->掃描藍(lán)牙服務(wù)-->搜索服務(wù)特性-如果有打印特性 即可實(shí)現(xiàn)打印。話(huà)不多少直接上代碼。使用方法:使用pod? 或者 手動(dòng)添加 <JWBluetoothPrinte>庫(kù)地址也可,在使用的地方導(dǎo)入“#import"JWBluetoothManage.h"”頭文件即可。

2.搜索藍(lán)牙設(shè)備列表

搜索結(jié)果里面有兩個(gè)數(shù)組返回,peripherals是存放所有搜索到的藍(lán)牙設(shè)備數(shù)組,rssis是對(duì)應(yīng)藍(lán)牙設(shè)備的信號(hào)強(qiáng)度數(shù)組,如果不需要 不關(guān)心即可。里面的大致流程就是:調(diào)用系統(tǒng)的廣播功能,進(jìn)行搜索設(shè)備。
3.連接藍(lán)牙
1>自動(dòng)連接上次連接的設(shè)備。

當(dāng)連接一次之后,會(huì)將藍(lán)牙設(shè)備的唯一標(biāo)識(shí)符記錄在本地,然后在藍(lán)牙設(shè)備列表中匹配,如果存在就連接,沒(méi)有就不連接。
2>手動(dòng)連接

手動(dòng)連接藍(lán)牙,和自動(dòng)連接沒(méi)什么區(qū)別。
4.連接成功搜索服務(wù),特性
設(shè)備連接藍(lán)牙成功之后會(huì)啟動(dòng)搜索服務(wù)階段,搜索到服務(wù)之后會(huì)繼續(xù)搜索藍(lán)牙設(shè)備特性屬性。

要知道,只有符合CBCharacteristicPropertyWrite 支持寫(xiě)入的設(shè)備才能進(jìn)行打印操作,否則是不支持打印功能的。當(dāng)搜索到可寫(xiě)入屬性的時(shí)候之后,這邊可以進(jìn)行打印操作了。
5.打印功能

創(chuàng)建一個(gè)打印的helper,里面的屬性可以詳細(xì)閱讀API,支持換行 文字,二維碼生成,圖片打印等等。
好了,希望能夠幫到需要做藍(lán)牙的開(kāi)發(fā)者,后續(xù)會(huì)考慮更新些東西。有什么錯(cuò)誤或者問(wèn)題,希望能夠指正,QQ:38251725