iOS Swift获取iPhone蓝牙设置中已连接的外设列表
获取iPhone已连接蓝牙外设列表的替代方案
Core Bluetooth框架仅能扫描可被主动发现的蓝牙设备,无法直接读取系统蓝牙设置中已配对/已连接的全量设备列表——这是iOS隐私权限限制导致的。以下是几种可行的替代方案:
使用ExternalAccessory框架
该框架可获取通过MFi(Made for iPhone/iPad)认证的蓝牙外设(如蓝牙键盘、音箱等符合标准的设备)。
代码示例:// 导入头文件 #import <ExternalAccessory/ExternalAccessory.h> // 获取已连接的MFi外设列表 NSArray<EAAccessory *> *connectedAccessories = [[EAAccessoryManager sharedAccessoryManager] connectedAccessories]; for (EAAccessory *accessory in connectedAccessories) { NSLog(@"设备名称:%@,型号:%@", accessory.name, accessory.modelNumber); }注意:需在
Info.plist中添加UISupportedExternalAccessoryProtocols键,指定App支持的外设协议,否则无法获取对应设备。基于Core Bluetooth的间接维护方案
若仅需追踪App自身连接过的设备,可通过监听CBPeripheral的state属性判断连接状态(当状态为CBPeripheralStateConnected时标记为已连接),并自行维护一个设备列表。但此方法无法获取系统其他App连接的设备。权限说明
无论使用哪种方案,都需在Info.plist中添加对应蓝牙权限描述:- iOS 13及以上:
NSBluetoothAlwaysUsageDescription - iOS 12及以下:
NSBluetoothPeripheralUsageDescription
且iOS系统始终限制第三方App访问完整的蓝牙配对/连接列表,这是隐私保护的强制要求。
- iOS 13及以上:
内容的提问来源于stack exchange,提问作者Ajeet Singh Rawat
相关产品推荐
相关产品推荐

