我要做的是在我的Mac上使用iPhone上的Apple通知中心服务(ANCS)。为了让我的iPhone在iPhone的蓝牙设置中显示,我显然需要使用服务请求。
我到目前为止尝试的是在我的Mac上发起CBPeripheralManager
,向其添加ANCS服务并开始投放广告。这似乎没有这样做,因为我的Mac没有出现在我的iPhone的蓝牙设置中。我还尝试过启动CBCentralManager
并使用CBCentralManagerScanOptionSolicitedServiceUUIDsKey
密钥中的ANCS UUID开始扫描,这也不起作用。
有没有人知道如何做到这一点?我花了大量时间观看WWDC视频并浏览Apple的文档,但除了一些含糊不清的“服务征集”之外,我找不到它。
谢谢!
答案 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对象的数组配对。