如何解决Android在每次连接后旋转BLE Mac地址的问题?

问题描述 投票:0回答:1

我正在一个项目中,其中中央设备连接到宣传特定GATT服务的外围设备。中央设备与电话交换一些信息,此后不再需要连接并且设备断开连接。

我遇到的问题是,手机似乎在每次建立新连接后都会更改其MAC地址。因此,基本上,每次我连接到设备时,都会出现一个新设备。因此,我的中央节点尝试再次连接到新服务。这很烦人,因为我正在考虑使用MAC地址来知道我已经连接到该设备并且不需要再次进行信息交换。请注意,我知道MAC地址始终每30分钟旋转一次,这是我愿意处理的问题,每30分钟连接一次很好,但是连接的旋转会导致我的设备与手机链式连接,总是像新设备。

我曾考虑过解决此问题的一些想法:

  1. 从电话获取新的MAC地址并与中央设备共享。那有两个问题:
    1. 除非使用粗略反射,否则无法使用Android API访问MAC地址。
    2. 仅当单个中央设备在Range中时,它才有效,因为只有最后一个节点才知道要避免的新MAC地址。
  2. 带有随机ID的广告服务数据,我将每30分钟手动轮播一次。该数据可以在同一广告包中。这样一来,我可以在不损害隐私的情况下对设备进行识别。
    1. 但是,在具有非常严格的背景广告API的iOS上可能很难实现。 iOS实际上似乎没有相同的行为,因此可能可以为iOS实现完全不同的方法。
  3. 似乎无法禁用此“连接时旋转MAC”功能。

以前有没有人处理过这个问题?关于如何解决该问题的任何想法?

谢谢

android bluetooth-lowenergy android-bluetooth ios-bluetooth
1个回答
0
投票

如果您将设备与蓝牙配对,则Android设备将通过其IRK(身份解析密钥)发送。有了它,您将能够确定给定的蓝牙设备地址是否由特定的IRK生成。这样,您可以识别Android设备。如果您将iOS替换为Android,则其工作原理相同。

请参阅您的蓝牙协议栈文档如何处理IRK。

© www.soinside.com 2019 - 2024. All rights reserved.