React Native 广播并发现附近的设备

React Native broadcast and discover nearby devices

首先:这更像是一个逻辑问题,而不是特定于代码的问题。

我正在尝试创建一个类似于 iOS AirDrop view 的视图,用户可以在其中看到其他用户。这意味着,每个用户都需要 broadcast/advertise 他们的自定义用户名,扫描该区域的所有其他附近用户都可以看到。

我尝试使用 react-native-ble-plx,因为我读到 on the Apple developer forum iPhone 可以充当 BLE(蓝牙低功耗)外围设备。 (另外,我读到较新的 Android 设备也支持此功能)

我试过以下方法:

import ble, { BleManager, Characteristic } from 'react-native-ble-plx';
// ...
const bleManager = new BleManager();
bleManager.startDeviceScan(null, null, async (e, d) => {
    if (e) console.log(`BT Error: ${JSON.stringify(e)}`);
    if (d && d.id && d.isConnectable) {
        console.log(`Connecting to: ${d.id} ('${d.name}')...`);
        const device = await d.connect();

        const services = await device.services();
        console.log('services: ', services.join(', '));
        const characteristic = await device.writeCharacteristicWithResponseForService(BLE_SERVICE_UUID, BLE_SERVICE_UUID, '123');
        console.log(`Characteristics: ${JSON.stringify(characteristic)}`);
    }
});

但是我还没有找到一种方法来广播其他人可以读取的值,这是否可以通过 BLE 实现?

我也研究过信标(特别是 react-native-beacons-manager),但我不确定这是否是我想要的,因为 Android/iOS phone 不是 'beacon'..

所以我的问题是:是否有 technologies/libraries 允许广播其他人可以看到的消息(我的自定义用户名)?理想情况下,我想在它们之间进行通信,例如交换令牌,但这不是必需的。

非常感谢任何帮助或指出正确的方向,谢谢!

经过漫长的调试之夜,我设法让它工作了。

可以使用 Google 附近的消息 API,并将其设置为仅使用 .BLE。

我在这里为此创建了一个开源的 React Native 模块:https://github.com/mrousavy/react-native-google-nearby-messages