是否可以连接蓝牙设备,而无需在iOS中进行配对?

问题描述:

问题不在于BLE设备,它只是普通的蓝牙设备。是否可以连接蓝牙设备,而无需在iOS中进行配对?

目前我的代码是这样工作的, 我调用该函数:

[[EAAccessoryManager sharedAccessoryManager] showBluetoothAccessoryPickerWithNameFilter:nil completion:^(NSError *error) 
     { 

     }]; 
    } 

,并打开弹出可用的蓝牙设备的列表,然后我点击我需要的设备上,并得到一个对象,并继续前进。

有没有什么办法可以跳过这个选择器步骤并直接获取我的设备对象?

不,不可能先不配对。第一次,您必须从设置应用程序或选择器中将用户与设备配对。但是,在第一次配对之后,如果配件已连接到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,否则它会排队通知并更新连接配件的列表。

+0

您能否澄清固件如何完成自动后续连接?我直接与固件工程师一起工作,并希望在使用我正在使用的iOS应用程序之前,为用户提供不必进入设置应用程序并手动连接到附件的功能。 – Audible

+0

@听起来相关文档是MFi计划的一部分,所以我不能公开任何细节。但是,如果您或固件团队可以访问MFi附件接口规范,您可以在第52.4节(修订版R27)中找到起点。根据产品中使用的蓝牙芯片组,可能还有一个功能可以在芯片组附带的库中完成。 –

+1

我绝对明白严格的MFi指导方针,但是,这是一个很好的答案,谢谢!我可以访问MFi,并会查看您引用的特定部分,我将与固件工程师和芯片制造商合作尝试解决此问题。非常感激。 – Audible