在 Android 上检测 iOS BLE 广告 - React Native BLE Advertiser

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

我一直在使用 react-native-ble-advertiser 尝试在手机之间发送字符串数据(广播 uuid),我已经设法获得这些共享兼容性

  1. iOS 至 iOS 2 路
  2. Android 至 Android 2 路
  3. Android 至 iOS 1-way

我想知道我是否错过了 BLE 的某些内容,因为当我尝试在 iOS 上做广告时,我收到警告

The advertisement key 'Manufacturer Data' is not allowed in CoreBluetooth
,但是正如我所说,我可以检测 iOS 到 iOS。 有没有办法在Android上检测iOS?

下面是我的配置,取自上面 github 链接上的示例。
扫描和广播是同时完成的,尽管我在没有扫描的情况下进行了测试,但仍然存在问题。

const MANUF_DATA = [1, 0];
BLEAdvertiser.setCompanyId(0x4C);
BLEAdvertiser.broadcast(hash_uuid, MANUF_DATA, {
    advertiseMode: BLEAdvertiser.ADVERTISE_MODE_BALANCED,
    txPowerLevel: BLEAdvertiser.ADVERTISE_TX_POWER_MEDIUM,
    ...
})

BLEAdvertiser.scan(MANUF_DATA, {
    scanMode: BLEAdvertiser.SCAN_MODE_LOW_LATENCY,
})

有人有这个包的经验或者知道传输字符串的更好方法吗?开放发布包中的本机代码。

谢谢。

react-native bluetooth-lowenergy
1个回答
1
投票

联系了软件包开发者,这是 iOS 和 Apple 阻止调整 CoreBluetooth 制造商数据的已知问题(软件包需要此才能正确扫描)

“不幸的是,苹果一直在寻找方法来打破广告商。几个月前,他们开始阻止使用使手机对 Android 可见的制造商数据,但我们尚未找到解决方法。”

我将继续自行解决此问题,并在获得解决方案或更新包时进行更新:)

更新 1(临时修复):您可以在包中的 BLEAdvertiserModule 中将过滤器设置为 null。允许 Android 查找 iOS 制造商代码。请参阅我的 github 问题解决方案此处

更新 2:合并 PR,因此您现在可以直接使用 npm 中的软件包进行手机到手机扫描:)

/example/app/entry.js
中有一些评论展示如何设置 Android 到 iPhone 扫描:)

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