【问题标题】:React Native broadcast and discover nearby devicesReact Native 广播并发现附近的设备
【发布时间】:2020-09-12 06:33:27
【问题描述】:

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

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

我尝试过使用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 手机不是“信标”..

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

如果有任何帮助或指出正确的方向,我将不胜感激,谢谢!

【问题讨论】:

  • 你不能广播一个值。您需要实际连接到外围设备并从特征中读取值
  • @Paulw11 实际上它确实有效。有关详细信息,请参阅我的答案。 (我认为在底层 API 仍然会搜索对等点并连接到这些点,但它确实会广播配对代码。)

标签: android ios react-native bluetooth bluetooth-lowenergy


【解决方案1】:

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

可以使用 Google Nearby Messages API,并将其设置为仅使用 .BLE。

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

【讨论】:

  • 你如何在 iOS 设备上做到这一点?
  • 从 ios 到 android 的通信永远不会发生
  • 那是完全错误的。您可以毫无问题地从 iOS Android 进行通信。我开发的库使用适用于 iOS 和 Android 的 GNM API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多