You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS15.1更新后无法连接蓝牙,选择设备报EABluetoothAccessoryPickerErrorDomain错误

问题原因说明

EABluetoothAccessoryPickerErrorDomain Code=1 官方定义为用户主动取消选择,但iOS 15+系统收紧了ExternalAccessory框架的权限校验逻辑,权限不足、配件协议未配置也会触发该错误。

可行解决方案

  • 首先检查Info.plist权限配置,新增以下两项:
    1. 蓝牙权限声明:添加NSBluetoothAlwaysUsageDescription键,值填写使用蓝牙的业务说明(如「需要蓝牙权限连接外部配件」)
    2. 配件协议声明:添加UISupportedExternalAccessoryProtocols数组类型键,在数组中填入你要连接的MFi认证蓝牙设备对应的通信协议字符串(协议信息可向设备厂商索取)
  • 调用蓝牙选择器前必须先主动申请蓝牙权限,不要直接唤起选择器,参考代码如下:
    // 类扩展中声明CBCentralManager属性,避免局部变量被提前释放导致无回调
    @property (nonatomic, strong) CBCentralManager *bluetoothManager;
    
    // 申请蓝牙权限
    self.bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue() options:@{CBCentralManagerOptionShowPowerAlertKey: @(YES)}];
    
    // 实现CBCentralManagerDelegate代理方法
    - (void)centralManagerDidUpdateState:(CBCentralManager *)central {
        if (central.state == CBManagerStatePoweredOn) {
            // 蓝牙权限已授权、硬件可用,再唤起蓝牙选择器
            [[EAAccessoryManager sharedAccessoryManager] showBluetoothAccessoryPickerWithNameFilter:nil completion:^(NSError *error) {
                if (error) {
                    NSLog(@"error :%@", error);
                } else {
                   // 原有连接成功后的业务逻辑
                }
            }];
        } else if (central.state == CBManagerStateUnauthorized) {
            // 此处可添加引导用户到系统设置开启蓝牙权限的逻辑
        }
    }
    
  • 调试时建议先卸载设备上的原有APP再重新安装测试,避免缓存的权限状态导致校验异常。
  • 确认你要连接的蓝牙设备为苹果MFi认证设备,ExternalAccessory框架仅支持MFi认证的蓝牙配件。

内容的提问来源于stack exchange,提问作者vishwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:36:03