附近的Connections 2.0:广告客户重新启动,但Discoverer使用旧广告客户ID

时间:2017-10-06 07:22:31

标签: android bluetooth google-nearby

我发现了一个有趣的结果

  • 广告客户宣传其端点ID'wjys'
  • Discoverer请求连接到'wjys'
  • 广告客户重新启动(stopAllEndpoints,与GoogleApiClient断开连接)
  • 广告客户宣传其新的端点ID“PChU”
  • Discoverer再次发现广告商(id = PChU)
  • Discoverer使用旧ID(wjys)
  • 获取onConnectionInitiated
  • 两个设备都接受
  • 令人惊讶的是,即使Discoverer使用旧的广告商ID(wjys)发送和接收消息,这两个设备仍然可以进行通信。

这种行为是个错误吗?

1 个答案:

答案 0 :(得分:1)

这是一个错误。我已经在内部提交了一张票,以便修复它。如果您停止投放广告,则任何看过旧广告的人都不应该将其连接起来。如果您发现任何其他奇怪的边缘情况,请告诉我们! :)

要理解为什么会发生这种错误,以下是关于Connections如何工作的一小部分: 端点ID作为广告的一部分发送,它在Discoverer端形成一个id-mac地址对。当Discoverer被告知'requestConnection'时,它会尝试连接到与端点ID关联的Mac地址。如果设备已停止广告,则发现者将无法连接,但发现者将在内部重试几次以确保。如果广告商足够快地重新开始广告,则它再次变得可连接并且发现者的重试可能成功(因为蓝牙MAC地址永远不会旋转)。即使广告不同,也是如此。