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

watchOS中CBCentralManager.state始终为.unauthorized的问题求助

watchOS中CBCentralManager状态始终为.unauthorized的解决方法

针对你遇到的问题,可从以下几个方向排查解决:

  • 验证Info.plist键的正确性
    确保使用系统标准的Raw键值,而非本地化后的显示名称:

    • 蓝牙始终使用描述对应键:NSBluetoothAlwaysUsageDescription
    • 蓝牙外设使用描述对应键:NSBluetoothPeripheralUsageDescription
      建议直接在Xcode的Info.plist面板中通过"+"按钮选择系统预设的权限项,避免手动输入时出现拼写或空格错误。
  • 检查App ID的蓝牙权限配置
    登录Apple开发者后台操作:

    1. 找到对应App ID,在"Capabilities"列表中启用"Bluetooth LE"权限
    2. 重新生成适配的Provisioning Profile
    3. 在Xcode中确认watchApp和watchAppExtension都选择了更新后的授权文件
  • 处理用户已拒绝授权的场景
    若用户之前手动拒绝过蓝牙授权,App不会自动再次弹出授权请求,此时central.state会保持.unauthorized。需引导用户前往:
    Apple Watch设置 > 你的应用 > 开启蓝牙权限

  • 确认watchOS版本适配规则
    watchOS 6及以上版本对BLE中心模式的权限要求更严格,需确保权限描述与部署目标版本匹配;若使用更低版本,需对应调整权限配置逻辑。

  • 规范扫描时机
    仅在蓝牙状态就绪后执行扫描操作,修改centralManagerDidUpdateState方法示例:

    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        switch central.state {
        case .poweredOn:
            central.scanForPeripherals(withServices: nil, options: nil)
        case .unauthorized:
            print("蓝牙权限未授权,请前往设置开启")
        default:
            print("蓝牙状态异常:\(central.state)")
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:16:11