ios - 如何通过 IOBluetooth/CoreBluetooth 使用服务请求?

标签 ios macos core-bluetooth iobluetooth ancs

我想要做的是在我的 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/

相关文章:

macos - 操作系统 X 10.10。 Yosemite Clang 和 GCC 版本

iOS网络应用程序: Use back swipe gesture to go back

objective-c - DrawRect 添加文字阴影

ios - UITableView 中的 UIScrollView 中的 ContentOffset 问题

ios - 我uitableview的(cell=nil)总是不调用?

android - Pushbullet API thread_id 到conversation_iden 用于短信?

javascript - 如何在优胜美地中使用 javascript 自动化打开一个新的 Chrome 窗口?

ios - Multipeer Connectivity - 可以连接到服务的设备数量?

iOS Core 蓝牙无断开连接通知

ios - 如何将私有(private)可解析地址作为 iOS 外围设备处理