反应原生蓝牙

Leo*_*hen 36 bluetooth react-native

我的项目需要接收和发送蓝牙信号,而且我对于本机反应非常新,那么我可以在反应原生中使用哪些组件用于蓝牙相关功能?

Jar*_*iuk 59

更新(免责声明):

自从我给出原始答案后,情况发生了变化.在我的公司(Polidea),因为我们意识到没有非常好的React Native for BT库我们开发并完全开源(许可许可)我们自己的解决方案.它基于两个基于RX的Android和iOS本机库,我们围绕它编写了一个通用的React Native包装器,以便您可以使用相同的Javascript/RN接口,但在本机代码下处理原生iOS/Android细节.

该库位于:https://github.com/Polidea/react-native-ble-plx

免责声明:我是首席软件工程师和前CTO @Polidea--创建该库的公司.

原始答案:

我不认为RN中有蓝牙访问的内置组件.

如果您想使用蓝牙,您需要编写自己的Obj-C API组件(如https://facebook.github.io/react-native/docs/native-modules-ios.html#content中所述)或使用一些适合您需要的第三方组件,而有人已经做过.有几个可用(快速谷歌搜索):

https://github.com/frostney/react-native-bluetooth-state

https://github.com/frostney/react-native-ibeacon

不确定它们是否运行良好,但如果您需要其他功能,可以将它们作为起点.

  • 我们为BLE创建了一个模块:https://github.com/innoveit/react-native-ble-manager (4认同)

Ale*_*son 6

我创建了一个跨平台的蓝牙/ WIFI框架,允许您以类似于Apple的Multipeer Connectivity和Google的Nearby Connections的方式浏览和宣传.它适用于Android和iOS,因此您可以将消息从iOS设备发送到Android设备,反之亦然.以下是该库的示例,可在https://github.com/alexkendall/RCTUnderdark找到

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)
    );
  },
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*rde 6

检查这个包,为我提供真正的生活保护,适用于iOS和Android. React Native BLE Manager你可以用它执行各种蓝牙活动:扫描,连接,发送,启用,禁用,断开连接等.你应该检查一下!