我们可以使用 Core-Bluetooth 模拟“不可连接”的外围设备吗

Posted

技术标签:

【中文标题】我们可以使用 Core-Bluetooth 模拟“不可连接”的外围设备吗【英文标题】:Can we simulate "non-connectable" peripheral using Core-Bluetooth 【发布时间】:2014-10-11 18:40:21 【问题描述】:

我希望我的应用发送“不可连接”广告?

当我看到startAdvertsing 方法时,它说只支持CBAdvertisementDataLocalNameKeyCBAdvertisementDataServiceUUIDsKey

这是否意味着CBAdvertisementDataIsConnectable 不能设置为NO,以模拟iBeacon

如果有其他方法可以模拟“不可连接”的外围设备,请告诉我。

advertisementData - 包含您要宣传的数据的可选字典。 advertisementData 字典的可能键在CBCentralManagerDelegate 协议参考中有详细说明。也就是说,外设管理器对象仅支持其中两个键:CBAdvertisementDataLocalNameKeyCBAdvertisementDataServiceUUIDsKey

【问题讨论】:

您可以使用 CoreLocation 框架将 ios 设备配置为充当 iBeacon 【参考方案1】:

我认为“可连接”一词可能会引起一些担忧。 “连接”是关于中心(即客户端)查询您的服务公开的特征(即属性)的。

据记录,您提到的特定密钥不受支持(目前),但我不明白为什么它的可用性对您来说是必要的。

如果您没有任何与您的服务相关联的特征,那么将没有任何东西可以连接。正确的?事实上,如果您从广告中跳过 CBAdvertisementDataServiceUUIDsKey 键,那么外围设备将看起来没有服务,因此没有要查询的特征(通过连接)。

【讨论】:

其实不是这样的。蓝牙规范中定义了几种类型的广告包。 ADV_NONCONN_IND 是一个“不可连接的无向广告”数据包,我认为这就是问题所在。 是的 - 当时它不受支持(在 ios 核心蓝牙框架中)。我最近没碰过它,但如果支持你可以添加一个代码示例

以上是关于我们可以使用 Core-Bluetooth 模拟“不可连接”的外围设备吗的主要内容,如果未能解决你的问题,请参考以下文章

如果在我们正在测试的方法中使用新关键字声明实例,我们可以模拟它吗?

我们可以在模拟器中测试 Face ID 吗?

我们可以在 iPhone 模拟器中使用 UI 自动化工具吗?

我们可以在 Delphi 中模拟 gMSA 帐户吗?

我们可以用 boost.asio 创建未命名的套接字来模拟匿名管道吗?

单元测试——使用模拟对象做交互测试