How to use service soliciting with IOBluetooth/CoreBluetooth?

房东的猫 提交于 2019-12-03 09:09:07

When a Bluetooth LE device advertises, it contains certain data in its advertising packet. This can overflow into what is known as Extended Inquiry Response (EIR) data, which the scanning device can request.

To use service solicitation, one has to include the key 0x15 (marking "List of 128-bit Service Solicitation UUIDs, see here) and the ANCS UUID 7905F431-B5CE-4E99-A40F-4B1E122D00D0.

I have been able to get this to work on embedded platforms and iOS but have not tried it on OSX. However, you should be able to request the system to add the advertising data in by using the key you mentioned above:

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

This passes a dictionary containing that key paired with an array of a single CBUUID object for the ANCS UUID.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!