我想要做的是在我的 Mac 上使用我的 iPhone 上的 Apple 通知中心服务 (ANCS)。为了让我的 Mac 出现在我 iPhone 的蓝牙设置中,我显然需要使用服务请求。
到目前为止,我尝试的是启动 CBPeripheralManager
在我的 Mac 上,添加 ANCS 服务并开始做广告。这似乎没有,因为我的 Mac 没有出现在我的 iPhone 的蓝牙设置中。我也尝试过启动 CBCentralManager
并使用 CBCentralManagerScanOptionSolicitedServiceUUIDsKey
中的 ANCS UUID 开始扫描键,这也不起作用。
有谁知道如何做到这一点?我花了很多时间观看 WWDC 视频和浏览 Apple 的文档,但除了一些模糊地提到“服务请求”之外,我找不到它。
谢谢!
最佳答案
当蓝牙 LE 设备发布广告时,它的广告数据包中包含某些数据。这可能会溢出到扫描设备可以请求的所谓的扩展查询响应 (EIR) 数据中。
要使用服务请求,必须包含 key 0x15(标记为“128 位服务请求 UUID 列表,参见 here”)和 ANCS UUID 7905F431-B5CE-4E99-A40F-4B1E122D00D0。
我已经能够让它在嵌入式平台和 iOS 上工作,但还没有在 OSX 上尝试过。但是,您应该可以使用上面提到的 key 请求系统添加广告数据:
CBCentralManager *manager = [[CBCentralManager alloc] initWithDelegate:self
queue:nil];
[manager scanForPeripheralsWithServices:nil
options:@{
CBCentralManagerScanOptionSolicitedServiceUUIDsKey:@[
[CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"]]}];
这会传递一个包含该键的字典,该字典与 ANCS UUID 的单个 CBUUID 对象的数组配对。
关于ios - 如何通过 IOBluetooth/CoreBluetooth 使用服务请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23469135/