如何使用IOBluetooth / CoreBluetooth服务请求?

时间:2014-05-05 09:30:57

标签: ios macos core-bluetooth iobluetooth ancs

我要做的是在我的Mac上使用iPhone上的Apple通知中心服务(ANCS)。为了让我的iPhone在iPhone的蓝牙设置中显示,我显然需要使用服务请求。

我到目前为止尝试的是在我的Mac上发起CBPeripheralManager,向其添加ANCS服务并开始投放广告。这似乎没有这样做,因为我的Mac没有出现在我的iPhone的蓝牙设置中。我还尝试过启动CBCentralManager并使用CBCentralManagerScanOptionSolicitedServiceUUIDsKey密钥中的ANCS UUID开始扫描,这也不起作用。

有没有人知道如何做到这一点?我花了大量时间观看WWDC视频并浏览Apple的文档,但除了一些含糊不清的“服务征集”之外,我找不到它。

谢谢!

1 个答案:

答案 0 :(得分:4)

当蓝牙LE设备通告时,它在其广告包中包含某些数据。这可能会溢出到所谓的扩展查询响应(EIR)数据中,扫描设备可以请求这些数据。

要使用服务请求,必须包括密钥0x15(标记" 128位服务请求UUID列表,请参阅here)和ANCS UUID 7905F431-B5CE-4E99-A40F-4B1E122D00D0

我已经能够在嵌入式平台和iOS上使用它,但尚未在OSX上尝试过。但是,您应该能够使用上面提到的密钥请求系统添加广告数据:

CBCentralManager *manager = [[CBCentralManager alloc] initWithDelegate:self 
                                                                 queue:nil];
[manager scanForPeripheralsWithServices:nil
                                options:@{
    CBCentralManagerScanOptionSolicitedServiceUUIDsKey:@[
        [CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"]]}];

这会传递一个包含该密钥的字典,该字典与ANCS UUID的单个CBUUID对象的数组配对。