我一直在使用 react-native-ble-advertiser 尝试在手机之间发送字符串数据(广播 uuid),我已经设法获得这些共享兼容性
我想知道我是否错过了 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,
})
有人有这个包的经验或者知道传输字符串的更好方法吗?开放发布包中的本机代码。
谢谢。
联系了软件包开发者,这是 iOS 和 Apple 阻止调整 CoreBluetooth 制造商数据的已知问题(软件包需要此才能正确扫描)
“不幸的是,苹果一直在寻找方法来打破广告商。几个月前,他们开始阻止使用使手机对 Android 可见的制造商数据,但我们尚未找到解决方法。”
我将继续自行解决此问题,并在获得解决方案或更新包时进行更新:)
更新 1(临时修复):您可以在包中的 BLEAdvertiserModule 中将过滤器设置为 null。允许 Android 查找 iOS 制造商代码。请参阅我的 github 问题解决方案此处
更新 2:合并 PR,因此您现在可以直接使用 npm 中的软件包进行手机到手机扫描:)
/example/app/entry.js
中有一些评论展示如何设置 Android 到 iPhone 扫描:)