【问题标题】:How do I read a peripheral's characteristic without pairing with the other device in Swift?如何在不与 Swift 中的其他设备配对的情况下读取外围设备的特征?
【发布时间】:2016-06-11 06:37:28
【问题描述】:

我的应用程序既可以用作中心,也可以用作外围设备。我有一个设备正在搜索另一个广播我的服务 UUID 的设备。这工作正常,直到我连接到外围设备。然后,两台设备上都会出现“蓝牙配对请求”,要求确认 6 位代码并与另一台设备配对。我不希望出现此通知,也不希望设备开始出现在“设置”->“蓝牙”中。

CBCentralManager.connectPeripheral(CBPeripheral, options: nil) 中,我认为可能有一个选项可以在options 字典中指定以防止警报,但只有three 并且它们都没有做我想要的。

是否可以在不连接的情况下读取外围设备的 RSSI 和特性?或者是否可以在不向用户显示配对通知的情况下连接到外围设备?

谢谢。

更新:

我已使用 TSI 来解决此问题。他将我带到了一个名为 BTLE Transfer 的 Apple 示例项目。他说配对不应该发生,并且它不会发生在示例项目中。我构建了项目并运行了它,它确实呈现了与我的应用程序完全相同的对请求。我不知道其他人是否关心或也在为此苦苦挣扎,但我会用新信息更新我的问题,如果我找到解决方案,我会回答。

更新 #2:

我相信这是 iOS 8.4 中的一个错误。我已向 Apple 提交了一份错误报告,概述了该错误的详细信息。

【问题讨论】:

  • 我遇到了完全相同的问题。几个月前它曾经工作得很好。然而现在你突然得到一个配对弹出窗口,当你选择“是”时,一切都会中断。选择“否”,你很好。不仅仅是 iOS,OSX El Capitan 也遇到了同样的问题。
  • 是的!终于有人遇到了这个。不过,一个不同之处在于,无论您按下哪个按钮,我都不会损坏任何东西。当不涉及运行 iOS 8.4 的设备时,该错误不会发生。有趣的是它也发生在 OS X 上。

标签: ios swift bluetooth cbcentralmanager cbperipheral


【解决方案1】:

我正在为我的应用程序开发 BLE 模块,但遇到了同样的问题,但经过大量研发后,我找到了解决方案。 (虽然杰克在 3 年多前问过这个问题,他可能已经找到了解决方案,但我发布了我的答案,以便其他有同样问题的人都能从中受益。)

是否可以读取外设的 RSSI 和特性,而无需 连接?

或者是否可以连接到外围设备而不显示 配对通知给用户?

是和否(视情况而定)

由于是您创建外围设备,因此您决定是否需要“蓝牙配对请求”。基本上,您可以设置特性(正在宣传)的属性和权限。您可以查看所有可用属性here 和权限here。因此,通过设置CBCharacteristicPropertyRead 属性和CBAttributePermissionsReadable 对特征的权限,我无需配对即可读取特征数据。你可以看看如何根据具体的属性和权限来配置特性here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多