You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README_CN.md 12KB

AiBrushBleSDk使用说明

English

版本号 更新时间 作者 更新信息
v1.0 2019/07/08 JosonXiong 初步版本

一、使用条件

  • 最低版本iOS 8.0
  • 设备所使用的蓝牙版本需要4.0及以上

    二、开始使用

    1.申请sdk的key 和secret,申请地址:http://sdk.aicare.net.cn; 2.在info.plist文件中设置Privacy - Bluetooth Always Usage Description; 3.将AiBrushBleSDK.framework导入Xcode工程; 4.在AppDelegate中加入如下代码: ```

    import

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     // Override point for customization after application launch.     [AiBrushBleManager setAppKey:@“key” appSecret:@“secret”];     return YES; } ```

5.在需要使用的控制器.m中导入#import ,并遵守< AiBrushBleManagerDelegate>协议, 6.设置代理

[AiBrushBleManager shareManager].delegate = self;

7.实现代理方法

 /**
 回调蓝牙当前状态

 @param state蓝牙状态
 */
-(void)brushBleManagerUpdateBleState:(AiBrushBleState)state;

/**
 回调扫描到的所有外设

 @param peripheralList 外设列表
 */
-(void)brushBleManagerScanedPeripherals:(NSArray<AiBrushPeripheralModel *> *)peripheralList;

/**
 上报设置模式结果

 @param result 结果
 */
-(void)brushBleManagerReceiveSetModeResult:(AiBrushSetModeResult)result;

/**
 上报工作状态

 @param model 工作状态模型
 */
-(void)brushBleManagerReceiveWorkState:(AiBrushWorkStateModel *)model;

/**
 上报电源状态

 @param model 电源状态模型
 */
-(void)brushBleManagerReceiveBatteryStateModel:(AiBrushBatteryStateModel *)model;

/**
 确认收到断开蓝牙连接请求
 */
-(void)brushBleManagerReceiveDisconnectResult;

/**
 上报设备时间

 @param time 时间
 */
-(void)brushBleManagerReceiveSystemTime:(int)time;

/**
 返回设置设备时间结果

 @param result 结果
 1:设置设备时间成功
 2:设置设备时间失败
 */
-(void)brushBleManagerReceiveSetTimeResult:(int)result;

/**
 返回历史数据条数

 @param count 历史数据总数
 */
-(void)brushBleManagerReceiveHistoryDataCount:(int)count;

/**
 取消读取历史数据操作结果

 @param result 结果
 1:取消读取成功
 2:取消读取失败
 */
-(void)brushBleManagerReceiveCancelReadHistoryDataResult:(int)result;

/**
 删除历史数据

 @param result 结果
 1:删除成功
 2:删除失败
 */
-(void)brushBleManagerReceiveDeleteHistoryDataResult:(int)result;

/**
 回调历史数据

 @param model 历史数据模型
 */
-(void)brushBleManagerReceiveHistoryDataModel:(AiBrushWorkDataModel *)model;

/**
 回调工作数据

 @param model 数据模型
 */
-(void)brushBleManagerReceiveWorkDataModel:(AiBrushWorkDataModel *)model;

/**
 上报 Sensor 数据

 @param model 数据模型
 */
-(void)brushBleManagerReceiveGsensorDataModel:(AiBrushGsensorModel *)model;

/**
 上报力度相关数据

 @param model 数据模型)
 */
-(void)brushBleManagerReceiveStrengthDataModel:(AiBrushStrengthModel *)model;

/**
 上报按键确认 App 连接状态
 1----按键动作确认 App 连接有效,2----App 需要按键确认,3----App 有效不需要按键确认
 @param state 连接状态
 */
-(void)brushBleManagerReceiveConnectState:(int)state;
/**
 回调刷牙模式档位
 
 @param oneGear 一级档位
 @param twoGear 二级档位
 */
- (void)brushBleManagerReturnOneGearMode:(NSArray<NSNumber *> *)oneGear twoGearMode:(NSArray<NSNumber *> *)twoGear;

/**
 设置DID结果
 @param result 结果
 YES:成功
 NO:失败
 */
-(void)brushBleManagerReturnSetDIDResult:(BOOL)result;

/**
 设置Name结果
 @param result 结果
 YES:成功
 NO:失败
 */
-(void)brushBleManagerReturnSetNameResult:(BOOL)result;

/**
 返回OTA升级进度

 @param progress 升级进度
 */
-(void)brushBleManagerReturnOTAUpdateProgress:(double)progress;

/**
 返回OTA升级结果

 @param result 结果
 */
-(void)brushBleManagerOTAUpdateResult:(BOOL)result;

三、连接设备

1.判断手机蓝牙是否可用

可通过代理方法:

/**
 回调蓝牙当前状态
 @param state 蓝牙状态
 */
-(void)brushBleManagerUpdateBleState:(AiBrushBleState)state;
以及[AiBrushBleManager shareManager].state;

获取当前蓝牙的状态,

也可通过

[AiBrushBleManager shareManager].isOn;

获取当前蓝牙是否打开可用;

2.开始扫描

[[AiBrushBleManager shareManager] startScan];
回调方法:
 /**
 回调扫描到的所有外设

 @param peripheralList 外设列表
 */
-(void)brushBleManagerScanedPeripherals:(NSArray<AiBrushPeripheralModel *> *)peripheralList;

通过这个代理回调方法可以获取扫描到的设备

3.停止扫描

[[AiBrushBleManager shareManager] stopScan];

4.连接设备

[[AiBrushBleManager shareManager] connectPeripheral:peripheral];

Peripheral为CBPeripheral对象,可通过扫描回调的设备获取到对应的模型的对应属性获得

5.确认连接

当app第一次请求连接设备时,需要设备端确认,请在15秒内按键确认。

6.连接成功

连接成功后设备的灯会保持常亮。

7.断开连接

[[AiBrushBleManager shareManager] disconnectPeripheral]

四、与设备交互

1.设置刷牙模式

 关于模式设置的详细资料,请查看协议说明

@param 必须传4个byte的数据
-(void)setBrushModeWithByte:(Byte[_Nonnull])byte;
对应的代理回调方法:
-(void)brushBleManagerReceiveSetModeResult:(AiBrushSetModeResult)result;

注意: 1.设备设备模式前,需要通过[AiBrushBleManager shareManager].versionType判断是什么设备类型,同时还要获取设备支持的模式[AiBrushBleManager shareManager].oneGearArray和[AiBrushBleManager shareManager].twoGearArray再进行设置,如果mode = 0x07,0x08,0x09,0x0A,0x0B,则需要先判断牙刷的一档模式是否支持,如果支持,则设置{mode,0x00,0x00,时间},如果不支持,再判断[AiBrushBleManager shareManager].versionType为AiBrushVersionTypeBY01,AiBrushVersionTypeBY02,AiBrushVersionTypeBY03,AiBrushVersionTypeBY04,若是以上的类型,则设置{0x05, modeID,0x00,时间};否则[AiBrushBleManager shareManager].versionType为AiBrushVersionTypeBY05,AiBrushVersionTypeBY06,AiBrushVersionTypeBYOther,则设置{0x06,频率,占空比,时间}

具体如下

  if (mode == 0x06){
        Byte b[4] = {0x06,0x02,0x03,0x16};
        
        [[AiBrushBleManager shareManager] setBrushModeWithByte:b];
    }else{
        if ([[AiBrushBleManager shareManager].oneGearArray containsObject:[NSNumber numberWithChar:mode]]) {
            Byte dataByte[] = {mode,0x00,0x00,0x16};
            [[AiBrushBleManager shareManager] setBrushModeWithByte:dataByte];
        }else{
            if (mode == 0x07 || mode == 0x08 || mode == 0x09 || mode == 0x0A || mode == 0x0B ) {
                if ([AiBrushBleManager shareManager].versionType == AiBrushVersionTypeBY01 || [AiBrushBleManager shareManager].versionType == AiBrushVersionTypeBY02 || [AiBrushBleManager shareManager].versionType == AiBrushVersionTypeBY03 || [AiBrushBleManager shareManager].versionType == AiBrushVersionTypeBY04) {
                    Byte modeIDByte=0x00;
                    if (mode == 0x07) {
                        modeIDByte = 0x01;
                    }else if (mode == 0x08){
                        modeIDByte = 0x02;
                    }else if (mode == 0x09){
                        modeIDByte = 0x03;
                    }else if (mode == 0x0A){
                        modeIDByte = 0x04;
                    }else if (mode == 0x0B){
                        modeIDByte = 0x05;
                    }
                    
                    Byte dataByte[] = {0x05,modeIDByte,0x00,0x16};
                    [[AiBrushBleManager shareManager] setBrushModeWithByte:dataByte];
                }else{
                    Byte dataByte[] = {mode,0x00,0x00,0x16};
                    [[AiBrushBleManager shareManager] setBrushModeWithByte:dataByte];
                }
                
            }else{
                Byte dataByte[] = {mode,0x00,0x00,0x16};
                [[AiBrushBleManager shareManager] setBrushModeWithByte:dataByte];
            }
        }
    }
    

3.如果[AiBrushBleManager shareManager].isWorking == YES,说明设备正在工作,此时无法设置工作模式。

4. 查询工作状态

-(void)queryWorkState;
对应的代理回调方法:
-(void)brushBleManagerReceiveWorkState:(AiBrushWorkStateModel *)model;

5. 查询电源状态

-(void)queryBatteryState;
对应的代理回调方法:
-(void)brushBleManagerReceiveBatteryStateModel:(AiBrushBatteryStateModel *)model;

6. 切换工作状态

-(void)changeWorkState;
对应的代理回调方法:
-(void)brushBleManagerReceiveWorkState:(AiBrushWorkStateModel *)model;

7. 查询设备时间

-(void)querySystemTime;
对应的代理回调方法:
-(void)brushBleManagerReceiveSystemTime:(int)time;

8.设置系统时间

-(void)setSystemTime;
对应的代理回调方法:
-(void)brushBleManagerReceiveSetTimeResult:(int)result;

9. 读取历史数据

-(void)queryHistoryData;
对应的代理回调方法:
-(void)brushBleManagerReceiveHistoryDataCount:(int)count;
-(void)brushBleManagerReceiveHistoryDataModel:(AiBrushWorkDataModel *)model;

10. 取消读取历史数据

-(void)cancelReadHistoryData;
对应的代理回调方法:
-(void)brushBleManagerReceiveCancelReadHistoryDataResult:(int)result;

11. 删除历史数据

-(void)deleteHistoryData;
对应的代理回调方法:
-(void)brushBleManagerReceiveDeleteHistoryDataResult:(int)result;

12.请求档位信息

-(void)queryGear;
对应的代理回调方法:
- (void)brushBleManagerReturnOneGearMode:(NSArray<NSNumber *> *)oneGear twoGearMode:(NSArray<NSNumber *> *)twoGear;

13.蓝牙电动牙刷厂商型号列表”(设置did:0~65535,请参考《蓝牙电动牙刷厂商型号列表》

-(void)setDID:(int)did;
对应的代理回调方法:
-(void)brushBleManagerReturnSetDIDResult:(BOOL)result;

14.设置蓝牙名称

-(void)setName:(NSString *)name;
对应的代理回调方法:
-(void)brushBleManagerReturnSetNameResult:(BOOL)result;

注意: 名称长度不能超过16个byte

15. OTA upgrade(OTA升级)

/*
 @param fileStr 文件路径
 */
- (void)OTAUpdate:(NSURL *)fileStr;
对应的代理回调方法:

-(void)brushBleManagerReturnOTAUpdateProgress:(double)progress;
-(void)brushBleManagerOTAUpdateResult:(BOOL)result;

注意: 不是所有设备都支持OTA升级,而是有“FEF5”特征服务的设备才支持。

16.升级成功后重启设备

 - (void)rebootDevice;
对应的代理回调方法:
无

五、其他回调

1.设备按确认键与app建立连接时,会回调以下方法

 /**
 上报按键确认 App 连接状态
 1----按键动作确认 App 连接有效,2----App 需要按键确认,3----App 有效不需要按键确认
 @param state 连接状态
 */
-(void)brushBleManagerReceiveConnectState:(int)state;

2.设备工作后会主动上传工作数据,回调以下方法

/**
 回调工作数据

 @param model 数据模型
 */
-(void)brushBleManagerReceiveWorkDataModel:(AiBrushWorkDataModel *)model;

3.测试用的设备可能回调以下方法

/**
 上报 Sensor 数据

 @param model 数据模型
 */
-(void)brushBleManagerReceiveGsensorDataModel:(AiBrushGsensorModel *)model;

/**
 上报力度相关数据

 @param model 数据模型
 */
-(void)brushBleManagerReceiveStrengthDataModel:(AiBrushStrengthModel *)model;

六、联系我们

感谢您使用品网SDK进行产品研发,如在使用过程中有任何疑问,欢迎随时与我们联系。帮助企业实现产品的快速智能化,是我们不断前行的动力。 Web: www.inet-tek.com Email : iot.support@inet-tek.com