can only accept this command while in the powered on state(iOS蓝牙 打开app后的第一次扫描要扫描两次)

   日期:2020-11-05     浏览:132    评论:0    
核心提示:第一次扫描后系统才去检查蓝牙状态,调用更新的代理方法///开始扫描- (void)startScan: (void(^)(CBPeripheral *))update{ //1.扫描外设 Services: 扫描指定服务的外设 options: 设置 为nil表示默认设置#pragma mark - 第一步 扫描外设 scanForPeripherals [self.cbCentralManager scanForPeripheralsWithServices:nil options

第一次扫描后系统才去检查蓝牙状态,调用更新的代理方法

///开始扫描
- (void)startScan: (void(^)(CBPeripheral *))update{ 
    //1.扫描外设 Services: 扫描指定服务的外设 options: 设置 为nil表示默认设置
#pragma mark - 第一步 扫描外设 scanForPeripherals
    [self.cbCentralManager scanForPeripheralsWithServices:nil options:nil];
    if (self.cbCentralManager.state == CBManagerStateUnknown) { 
        _isStateUnknown = YES;
    } 
    //保存扫描回调 self.scanBlock =
    self.scanBlock = update;
}
//蓝牙状态更新CBCentrlManager.state
-(void)centralManagerDidUpdateState:(CBCentralManager *)central{ 
    NSLog(@"%zd",central.state);
    [self isBluetoothAvailabel];
    //如果是打开app后第一次扫描,则需要在确定蓝牙状态是CBManagerStatePoweredOn后再扫描一次
    if (_isStateUnknown) { 
         [self.cbCentralManager scanForPeripheralsWithServices:nil options:nil];
    }
}

下面的博客是对我在github上上传的蓝牙工具类的介绍,这个工具类兼容oc和swift, 上面的代码摘自这个工具类

参考博客:
iOS(oc swift)蓝牙框架(工具类 demo)

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服