Bluetooth 本机蓝牙

Bluetooth 本机蓝牙,bluetooth,react-native,Bluetooth,React Native,我的项目需要接收和发送蓝牙信号,我对react-native非常陌生,因此我可以在react-native中使用哪个组件来实现蓝牙相关功能?更新(带免责声明): 自从我给出最初的答案后,情况发生了变化。在我的公司()中,由于我们意识到没有很好的React Native for BT库,我们开发了完全开源(许可证)的解决方案。它基于两个基于RX的Android和iOS本机库,我们在其周围编写了一个通用的React本机包装器,这样您就可以使用相同的Javascript/RN接口,但在后台,本机iOS

我的项目需要接收和发送蓝牙信号,我对react-native非常陌生,因此我可以在react-native中使用哪个组件来实现蓝牙相关功能?

更新(带免责声明)

自从我给出最初的答案后,情况发生了变化。在我的公司()中,由于我们意识到没有很好的React Native for BT库,我们开发了完全开源(许可证)的解决方案。它基于两个基于RX的Android和iOS本机库,我们在其周围编写了一个通用的React本机包装器,这样您就可以使用相同的Javascript/RN接口,但在后台,本机iOS/Android的细节是在本机代码中处理的

图书馆在这里:

免责声明:我是首席软件工程师,曾任CTO@Polidea——创建该库的公司

原始答案:

我认为RN中没有用于蓝牙访问的内置组件

如果您想使用蓝牙,您需要编写自己的Obj-C API组件(如中所述),或者使用一些第三方组件来满足您的需要,而其他人已经这样做了。有两种(快速谷歌搜索):


不确定它们是否工作正常,但如果您需要其他功能,您可以将它们作为起点。

我创建了一个跨平台蓝牙/WIFI框架,允许您以类似于苹果多中心连接和谷歌附近连接的方式浏览和登广告。它在Android和iOS之间工作,因此您可以从iOS设备向Android设备发送消息,反之亦然。这是图书馆的一个样本,可以在


看看这个软件包,对我来说是一个真正的生活保护程序,可以在iOS和Android上使用。
您可以使用它执行各种蓝牙活动:扫描、连接、发送、启用、禁用、断开等。您应该检查它

你最终找到解决方案了吗?嘿,chapinkapa,不幸的是我没有用RN解决它,我用phonegap代替了那个项目。明白了,我现在正试图用swift写一个桥。祝你好运!我们已经为BLE创建了一个模块:我可以证明
react native BLE plx
设计得非常好,易于学习!干得好。@Jarek Potiuk-你的库支持传统的BT设备(非BLE)吗?@pmont我也有同样的问题。根据这个Github问题,它不支持也不会支持不可扩展的设备:正确。据我所知,没有蓝牙经典版的计划:)您的库集成出现以下错误:无法解析io。underdark:underdark:1+
import {
  NativeModules,
  NativeAppEventEmitter,
} from 'react-native';
import React from 'react';

var NativeManager = NativeModules.NetworkManager

module.exports = {
  // kind can be one of "WIFI", "BT", and "WIFI-BT"
  browse(kind) {
    NativeManager.browse(kind)
  },
  // kind can be one of "WIFI", "BT", and "WIFI-BT"
  advertise(kind) {
    NativeManager.advertise(kind)
  },
  stopAdvertising() {
    NativeManager.stopAdvertising()
  },
  stopBrowsing() {
    NativeManager.stopBrowsing()
  },
  disconnectFromPeer(peerId) {
    NativeManager.disconnectFromPeer(peerId)
  },
  inviteUser(peerId) {
    NativeManager.inviteUser(peerId)
  },
  sendMessage(message, peerId) {
    NativeManager.sendMessage(message, peerId)
  },
  acceptInvitation(peerId) {
    NativeManager.acceptInvitation(peerId)
  },
  getNearbyPeers(callback) {
    NativeManager.getNearbyPeers((peers) => {
      callback(peers)
    })
  },
  getConnectedPeers(callback) {
    NativeManager.getConnectedPeers((peers) => {
      callback(peers)
    })
  },
  /*listener callbacks
  peer contains .id (string), type(string), connected(bool), message(string), display name(string)
  */
  addPeerDetectedListener(callback) {
    NativeAppEventEmitter.addListener(
    'detectedUser',
    (peer) =>  callback(peer)
    );
  },
  addPeerLostListener(callback) {
    NativeAppEventEmitter.addListener(
    'lostUser',
    (peer) => callback(peer)
    );
  },
  addReceivedMessageListener(callback) {
    NativeAppEventEmitter.addListener(
      'messageReceived',
      (peer) => callback(peer)
    );
  },
  addInviteListener(callback) {
    NativeAppEventEmitter.addListener(
      'receivedInvitation',
      (peer) => callback(peer)
    );
  },
  addConnectedListener(callback) {
    NativeAppEventEmitter.addListener(
      'connectedToUser',
      (peer) => callback(peer)
    );
  },
}