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

iOS使用AccessorySetupKit配对BLE设备时卡在连接状态

BLE配对卡在Connecting状态(AccessorySetupKit使用问题)

我正在用Swift开发一款BLE应用,采用Passkey Entry:响应方显示、发起方输入的配对方式。选择AccessorySetupKit是因为项目需要获取已配对设备的功能,但目前遇到配对阻塞问题:输入PIN码后iPhone端一直卡在“Connecting”状态——尽管对方设备屏幕显示配对成功,最终iPhone端会超时失败。

测试环境

  • iPhone设备:12 Pro、13 Pro Max,运行不同版本的iOS 18
  • 待配对设备:多款搭载不同固件的BLE设备

相关代码

ASPickerDisplayItem初始化代码

internal struct MyAccessory
{
    private static let serviceUuid: String = "180A"
    
    public static let name: String = "MyDevice"
    
    public static let image: UIImage = UIImage( named: "MyImage" )!
    
    public static let services: CBUUID = CBUUID( string: serviceUuid )
    
    public static let pickerDisplayItem: ASPickerDisplayItem =
    {
        let descriptor: ASDiscoveryDescriptor = ASDiscoveryDescriptor()

        descriptor.bluetoothServiceUUID = services
        
        let pickerDisplayItem = ASPickerDisplayItem(
            name: name,
            productImage: image,
            descriptor: descriptor
        )
        
        // For Passkey Entry '.confirmAuthorization' is needed
        pickerDisplayItem.setupOptions = [.confirmAuthorization, .finishInApp]
        
        return pickerDisplayItem
    }()
}

应用工作流程代码

public class AccessoriesManager
{
    private var accessorySession: ASAccessorySession = ASAccessorySession()

    init()
    {
        accessorySession.activate( on: DispatchQueue.main, eventHandler: handleSessionEvent )
    }

    public func startScan()
    {
        accessorySession.showPicker( for: [
            MyAccessory.pickerDisplayItem
            ]
        )
        { error in
            if let error
            {
                print( "Failed to show picker due to: \( error.localizedDescription )" )
            }
        }
    }

    private func handleSessionEvent( event: ASAccessoryEvent )
    {
        switch event.eventType
        {
        case .accessoryAdded:
            /*
             Continue the configuration
             */
            
            break
        default:
            break
        }
    }
}

期望行为

希望配对过程和不使用AccessorySetupKit时一致,即通过传统系统弹窗输入PIN码完成配对流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:42:09