wx-ant-ble
項(xiàng)目地址:Github
藍(lán)牙開發(fā)助手:Github
微信哲戚、支付寶小程序BLE藍(lán)牙SDK(v1.1.1)
詳細(xì)接口說明
Release Notes
v1.1.0
2019/01/15
1、發(fā)布第一個(gè)可用版本。封裝藍(lán)牙接口,兼容微信和支付寶小程序。附有說明和demo。
v1.1.1
2019/08/15
1、修復(fù)微信小程序安卓手機(jī)斷開連接睛低,狀態(tài)更新不回調(diào)的bug。
2服傍、已知另一個(gè)微信小程序藍(lán)牙bug钱雷。安卓手機(jī)在設(shè)備異常斷開時(shí)(比如斷電),不會(huì)觸發(fā)onBLEConnectionStateChange
回調(diào)吹零。除非在已經(jīng)設(shè)置監(jiān)聽notify的情況下罩抗。
Features
- 兼容微信和支付寶小程序
- 簡(jiǎn)潔但功能完整的Api,可以根據(jù)需求自由調(diào)用
- 接口均有返回狀態(tài)瘪校,判斷是否調(diào)用成功
- 單例模式
- 完整例子
Directory
- ~/index.js SDK入口
- ~/src SDK源碼
- ~/example 微信和支付寶小程序demo
Installation
- npm
npm install wx-ant-ble
// 微信小程序請(qǐng)查看npm文檔澄暮,支付寶小程序僅下載
- 直接下載或者使用git克隆
git clone https://github.com/zhaodahai/wx-ant-ble.git
Usage
1、引入SDK管理類和枚舉
// 引入SDK管理類 微信小程序通過npm構(gòu)建后
import { BTManager, ConnectStatus } from 'wx-ant-ble';
// 引入SDK管理類 支付寶小程序
import { BTManager, ConnectStatus } from '../../wx-ant-ble/index.js';
2阱扬、初始化藍(lán)牙管理器 & 設(shè)置用戶信息
// 初始化藍(lán)牙管理器 單例模式
this.bt = new BTManager({
debug: true // 是否開啟打印調(diào)試
});
3泣懊、注冊(cè)回調(diào)
// 注冊(cè)狀態(tài)更新回調(diào)
this.bt.registerDidUpdateConnectStatus(res => {
// 參數(shù)結(jié)構(gòu)注意查看log
console.log('registerDidUpdateConnectStatus', res);
if (res.connectStatus === ConnectStatus.connected) {
this.setData({ isConnected: true });
...
}else if (res.connectStatus === ConnectStatus.disconnected) {
this.setData({ isConnected: false });
...
}
});
// 注冊(cè)發(fā)現(xiàn)外設(shè)回調(diào),當(dāng)掃描到設(shè)備時(shí)回調(diào)麻惶,或者達(dá)到超時(shí)時(shí)間回調(diào)馍刮。
this.bt.registerDidDiscoverDevice(res => {
// 參數(shù)結(jié)構(gòu)注意查看log
console.log('registerDidDiscoverDevice', res);
...
});
// 注冊(cè)特征值改變回調(diào),當(dāng)監(jiān)聽的特征值改變時(shí)回調(diào)窃蹋,或者讀特征值時(shí)回調(diào)卡啰。
this.bt.registerDidUpdateValueForCharacteristic(res => {
// 參數(shù)結(jié)構(gòu)注意查看log
console.log('registerDidUpdateValueForCharacteristic', res);
...
});
4静稻、掃描 & 停止掃描
// 開始掃描
this.bt.scan({
services: [], // 主service的uuid列表
allowDuplicatesKey: false, // 是否允許重復(fù)上報(bào)設(shè)備
interval: 0, // 上報(bào)新設(shè)備的間隔,默認(rèn)為0
timeout: 15000, // 掃描超時(shí)時(shí)間匈辱,毫秒
deviceName: '', // 需要匹配的設(shè)備名稱
containName: '' // 需要包含的設(shè)備名稱
}).then(res => {
console.log('scan success', res);
}).catch(e => {
console.log('scan fail', e);
});
// 停止掃描
this.bt.stopScan()
.then(res => {
console.log('stopScan success', res);
}).catch(e => {
console.log('stopScan fail', e);
})
5振湾、連接 & 斷開連接
// 連接設(shè)備
this.bt.connect(device) // device應(yīng)為registerDidDiscoverDevice注冊(cè)的方法上報(bào)的設(shè)備對(duì)象
.then(res => {
console.log('connect success', res);
}).catch(e => {
console.log('connect fail', e);
});
// 斷開連接
this.bt.disconnect()
.then(res => {
console.log('disconnect success', res);
}).catch(e => {
console.log('disconnect fail', e);
})
5、Read & Notify & Write
// 讀特征值亡脸,讀到的值從registerDidUpdateValueForCharacteristic注冊(cè)的方法上報(bào)
this.bt.read({
suuid: 'xxxx', // 特征對(duì)應(yīng)的服務(wù)uuid
cuuid: 'xxxx' // 特征uuid
}).then(res => {
console.log('read success', res);
}).catch(e => {
console.log('read fail', e);
})
// 向藍(lán)牙模塊寫入數(shù)據(jù)
this.bt.write({
suuid: 'xxxx', // 特征對(duì)應(yīng)的服務(wù)uuid
cuuid: 'xxxx', // 特征uuid
value: 'FFFF' // 寫入的數(shù)據(jù)
}).then(res => {
console.log('write success', res);
}).catch(e => {
console.log('write fail', e);
})
// 監(jiān)聽/停止監(jiān)聽 特征值改變押搪,改變特征值從registerDidUpdateValueForCharacteristic注冊(cè)的方法上報(bào)
this.bt.notify({
suuid: 'xxxx', // 特征對(duì)應(yīng)的服務(wù)uuid
cuuid: 'xxxx', // 特征uuid
state: true/false // 是否監(jiān)聽
}).then(res => {
console.log('notify success', res);
}).catch(e => {
console.log('notify fail', e);
})
WxApp
Notice
我的郵箱: zxh71_kg@163.com