是否可以连接蓝牙设备,而无需在 iOS 中配对?
Posted
技术标签:
【中文标题】是否可以连接蓝牙设备,而无需在 iOS 中配对?【英文标题】:is it possible to connect bluetooth device, without pairing them in iOS? 【发布时间】:2017-09-06 08:48:18 【问题描述】:问题不在于BLE设备,它只是普通的蓝牙设备。
目前我的代码是这样工作的, 我调用函数:
[[EAAccessoryManager sharedAccessoryManager] showBluetoothAccessoryPickerWithNameFilter:nil completion:^(NSError *error)
];
它会打开包含可用蓝牙设备列表的弹出窗口,然后我点击我想要的设备并获取一个对象并继续。
有什么方法可以跳过这个选择器步骤并直接获取我设备的对象?
【问题讨论】:
【参考方案1】:不,不先配对是无法连接的。第一次,您必须通过“设置”应用程序或选择器让用户与设备配对。但是,在第一次配对后,如果配件已连接到 ios 设备,您可以跳过选择器并为您的配件获取 EAAccesory *
。查询已连接配件列表的方法如下:
NSArray<EAAccessory *> *connectedAccessories = [EAAccessoryManager sharedAccessoryManager].connectedAccessories;
for (EAAccessory *accessory in connectedAccessories)
// Implement needed filter to recognize your device.
// You can use for instance accessory.protocolStrings
// The MAC address is available with [accessory valueForKey:@"macAddress"]
使用 EAAccessory 框架,您无法以编程方式启动与设备的连接。对于后续连接,您可以让您的设备重新连接到最后连接的设备(如果您控制固件)。如果您的应用在前台,这将触发EAAccessoryDidConnectNotification
,否则它将排队通知并更新连接的附件列表。
【讨论】:
能否说明固件如何实现自动后续连接?我直接与固件工程师合作,并希望为用户提供在使用我正在开发的 iOS 应用程序之前不必进入设置应用程序并手动连接到附件的功能。 @Audible 好吧,相关文档是 MFi 计划的一部分,所以我不能公开提供任何细节。但是,如果您或固件团队有权访问 MFi 附件接口规范,您将在第 52.4 节(在修订版 R27 中)找到一个起点。根据产品中使用的蓝牙芯片组,芯片组附带的库中可能还有一个函数可以执行此操作。 我绝对了解严格的 MFi 准则,但是,这是一个很好的答案,谢谢!我可以访问 MFi 并将查看您引用的特定部分,我将与固件工程师和芯片制造商一起努力解决这个问题。非常感谢。以上是关于是否可以连接蓝牙设备,而无需在 iOS 中配对?的主要内容,如果未能解决你的问题,请参考以下文章