HKBLE
HK 蓝牙包,用于连接 HK 的特定蓝牙设备并获得蓝牙数据
黑卡科技蓝牙设备连接,数据读取文档
工作环境 支持 iOS8.0 以上
导入
- 直接导入,下载后将 sdk 文件夹复制到工程中即可使用
- 通过 cocoapods 导入 pod 'HKBLESDK'
项目配置
- 在 info.plist 中添加 NSBluetoothPeripheralUsageDescription,NSBluetoothAlwaysUsageDescription 两项;
- 在 Build Settings 中 Other Linker Flags 添加 -ObjC;
- 在 Build Settings 中 Enable Bitcode 改为 NO;
项目使用
HKBluetooth 作为单例,负责所有连接、数据获取、数据清空、硬件升级操作:
-
需要开启一个工作(工作后已经开始扫描),指定一个类遵循协议,承载协议方法;对应有一个方法结束工作;
- (void)startWorkWithDelegate: (id<HKBluetoothDelegate> _Nullable)objc; - (void)stopWork;
-
开始扫描、结束扫描来控制蓝牙工作状态;
- (void)startScan; - (void)stopScan;
-
连接蓝牙需要:CBPeripheral(BlePar peripheralInfo 中有存储) 类型的蓝牙数据;或者用标准的 Mac 地址作为连接对象;
- (void)connectWithPeripheral: (CBPeripheral *)peripheral andCardMac: (NSString *)cardMac;
-
断开蓝牙需要:CBPeripheral(BlePar peripheralInfo 中有存储) 类型的蓝牙数据作为断开连接的对象;
- (void)disconnectWithPeripheral: (CBPeripheral *)peripheral;
-
绑定、解绑:是否记录 Mac 地址作为重连的对象;
- (void)bindWithMacAddress: (NSString *)macAddress; - (void)unbindingWithPeripheral: (CBPeripheral *)peripheral; - (void)unbinding; - (void)updateMac: (NSString *)macAddress;
-
获取离线数据,调用方法后,通过协议返回离线数据;
- (void)getBleDataOfOffline;
-
获取离线数据后,可清除打卡缓存;
- (void)clearCache;
-
设备升级,需要本地设备升级文件路径,调用方法后,通过协议获取升级进程及结果;
- (void)updateCardWithPath: (NSString *)path;
协议介绍:HKBluetoothDelegate
-
系统蓝牙状态,开启工作后会获取蓝牙系统状态,通过以下方法返回,以 iOS10.0 为界限分为两个状态返回
- (void)bluetoothState: (CBManagerState )state API_AVAILABLE(ios(10.0)); - (void)bluetoothStateOld: (CBCentralManagerState )state;
-
扫描到蓝牙后返回列表
- (void)bluetoothList: (NSArray *)result;
-
连接后,蓝牙连接状态返回,BLEConnectState 为蓝牙连接状态(见枚举),BlePar peripheralInfo 为连接的设备信息
- (void)bluetoothConnectState: (BLEConnectState)state peripheralInfo: (BleParipheralInfo *)info;
-
连接上后,会定时获取电池电量,voltage 为电量,charge 充电标志:0 未充电 1 充电状态,date 上一次充电时间,isNilDate 上一次充电时间是否为空(swift 代码接入,避免发生为空错误)
- (void)bluetoothVoltage: (NSUInteger)voltage Charge: (Byte)charge Date: (NSDate *)date NilDate: (BOOL)isNilDate;
-
连接上后,会获取一次设备版本号,version 为一串字符串,需要自行获取解析
- (void)bluetoothVersion: (NSString *)version;
-
升级过程及结果,OtaUpdateStatus 为升级的状态(见枚举),progress 为升级的进度
- (void)bluetoothUpdateStatus: (OtaUpdateStatus)status progress: (float)progress;
-
打卡数据获取,分为在线(连接后打卡)和离线(打卡后连接)两种方式,在线会自动清空,离线需要手动清空; UserRecordItem 是打卡数据 model,离线和在线都以这个 model 解析; 离线数据是先获取总数,然后通过获取离线数据的方法获取离线数据,在协议返回离线数据获取进度及结果
- (void)bluetoothOnlineData: (UserRecordItem *)cardItem; ------ 在线 - (void)bluetoothOfflineDataTotal: (NSInteger)totalNum; ------ 离线总数获取 - (void)bluetoothOfflineDataProcessWithComplate: (NSInteger)complateNum Total: (NSInteger)totalNum Begin: (BOOL)begin; ------ complateNum 完成数量 totalNum 总数 begin 是否是起始(方便于做进度提示) - (void)bluetoothOfflineData: (NSArray *)cardArr; ------ 离线数据接收
-
基站类型蓝牙数据获取,扫描时获取; dic 为字典:dic["macAddress"] 获取蓝牙 Mac 地址;dic["power"] 获取电池电量
- (void)bluetoothBaseStationData: (NSDictionary *)dic;