首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS上的IOBluetooth /使用Mac地址连接到设备?

iOS上的IOBluetooth /使用Mac地址连接到设备?
EN

Stack Overflow用户
提问于 2014-08-15 19:42:49
回答 2查看 2.7K关注 0票数 3

在工作中,我被赋予的任务是:)移植一个Android库,它可以连接到设备上做一些事情(因为保密协议,我不能说太多)。安卓代码使用getRemoteDevice(macAddress)createRfcommSocketToServiceRecord基本上跳过了整个配对机制,然后“按原样”发送字节。在iOS上这是可能的吗?有没有这种程度的“肮脏”:-)

EN

回答 2

Stack Overflow用户

发布于 2014-08-17 04:20:41

如果是蓝牙2.1,那就很简单了。您还可以创建套接字。例如:

代码语言:javascript
复制
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扫描此设备:

代码语言:javascript
复制
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:kScanServiceUUID]] options:options];

只有在那之后才能连接到它的CBPeripheral。

更新:和蓝牙2.1中的“基本上跳过整个配对机制”,我猜你不能只做配对没有用户。有一种方法可以向用户显示对话框,用户可以选择他想要配对的设备,但这是我所能找到的全部:

代码语言:javascript
复制
- (void)showBluetoothAccessoryPickerWithNameFilter:(NSPredicate *)predicate completion:(EABluetoothAccessoryPickerCompletion)completion

显示一个警告,允许用户将设备与蓝牙附件配对。

与蓝牙2.1不同的是,在蓝牙LE中,你根本不需要配对。

票数 4
EN

Stack Overflow用户

发布于 2014-08-17 04:11:15

除非您能够控制设备固件,否则无法通过CoreBluetooth完成此操作。(它只支持BT 4.0。)几个星期以来,我一直在反对这一点,但似乎没有办法在App Store的审查过程中通过这个问题。此外,蓝牙4.0标准特别说明MAC地址不是固定的,设备可能会在您身上更改它。

然而,如果你可以控制进入关贸总协定的内容,你可能就可以伪造android正在做的事情。

我不知道MFI程序中提供了哪些接口,它们是否更符合您的目标。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25325809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档