在工作中,我被赋予的任务是:)移植一个Android库,它可以连接到设备上做一些事情(因为保密协议,我不能说太多)。安卓代码使用getRemoteDevice(macAddress)和createRfcommSocketToServiceRecord基本上跳过了整个配对机制,然后“按原样”发送字节。在iOS上这是可能的吗?有没有这种程度的“肮脏”:-)
发布于 2014-08-17 04:20:41
如果是蓝牙2.1,那就很简单了。您还可以创建套接字。例如:
EASession *session = [[EASession alloc] initWithAccessory:accessory
forProtocol:PROTOCOL_STRING];
if (session) {
[[session inputStream] setDelegate:self];
[[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[session inputStream] open];
[[session outputStream] setDelegate:self];
[[session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[session outputStream] open];
}但是,正如@Paulw11提到的,你需要通过MFI计划。
蓝牙LE有很大的不同。它没有套接字。您只能使用服务和特征进行操作。
顺便说一句,您不能仅使用其MAC地址连接到BLE设备。您首先需要使用此设备的服务UUID扫描此设备:
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:kScanServiceUUID]] options:options];只有在那之后才能连接到它的CBPeripheral。
更新:和蓝牙2.1中的“基本上跳过整个配对机制”,我猜你不能只做配对没有用户。有一种方法可以向用户显示对话框,用户可以选择他想要配对的设备,但这是我所能找到的全部:
- (void)showBluetoothAccessoryPickerWithNameFilter:(NSPredicate *)predicate completion:(EABluetoothAccessoryPickerCompletion)completion显示一个警告,允许用户将设备与蓝牙附件配对。
与蓝牙2.1不同的是,在蓝牙LE中,你根本不需要配对。
发布于 2014-08-17 04:11:15
除非您能够控制设备固件,否则无法通过CoreBluetooth完成此操作。(它只支持BT 4.0。)几个星期以来,我一直在反对这一点,但似乎没有办法在App Store的审查过程中通过这个问题。此外,蓝牙4.0标准特别说明MAC地址不是固定的,设备可能会在您身上更改它。
然而,如果你可以控制进入关贸总协定的内容,你可能就可以伪造android正在做的事情。
我不知道MFI程序中提供了哪些接口,它们是否更符合您的目标。
https://stackoverflow.com/questions/25325809
复制相似问题