Bluetooth en react-native


Mi proyecto requiere recibir y enviar señal bluetooth, y soy bastante nuevo en react-native, así que ¿qué componente puedo usar en react-native para la funcionalidad relacionada con bluetooth?

Author: Leo Chen, 2015-08-27

3 answers

Actualización (con descargo de responsabilidad):

Desde que di la respuesta original, las cosas han cambiado. En mi empresa (Polidea) desde que nos dimos cuenta de que no hay una biblioteca muy buena para React Native para BT, desarrollamos y de código abierto (licencia permisiva) nuestra propia solución. Se basa en dos bibliotecas nativas de Android e iOS basadas en RX y escribimos un envoltorio nativo de React común a su alrededor para que pueda usar la misma interfaz Javascript/RN pero bajo el capó nativo de iOS / Android los detalles se manejan en código nativo.

La biblioteca está aquí: https://github.com/Polidea/react-native-ble-plx

Descargo de responsabilidad: Soy Ingeniero de Software Principal y ex CTO @Polidea - la compañía que creó la biblioteca.

Respuesta original:

No creo que haya un componente incorporado para el acceso bluetooth en RN.

Si desea usar Bluetooth, debe escribir su propio componente API Obj-C (como se describe en https://facebook.github.io/react-native/docs/native-modules-ios.html#content ) o usar algunos componentes de terceros que se adapten a sus necesidades cuando alguien ya lo hizo. Hay un par de los disponibles (búsqueda rápida en Google):

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

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

No estoy seguro de si funcionan bien, pero puede usarlos como punto de partida si necesita otros funcionalidad.

 40
Author: Jarek Potiuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-03 09:56:16

He creado un marco Bluetooth/ WIFI multiplataforma que le permite navegar y anunciar de una manera similar a la conectividad Multipeer de Apple y las conexiones Cercanas de Google. Funciona entre Android e iOS para que pueda enviar mensajes desde un dispositivo iOS a un dispositivo Android y viceversa. Aquí hay una muestra de la biblioteca que se puede encontrar en 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)
    );
  },
}
 6
Author: Alex Harrison,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-12 13:26:19

Echa un vistazo a este paquete, un verdadero ahorro de vida para mí y funciona tanto en iOS como en Android. React Native BLE Manager puede realizar todo tipo de actividades bluetooth con él: escanear, conectar, enviar, habilitar, deshabilitar, desconectar, etc. ¡Deberías echarle un vistazo!

 4
Author: Daniel Barde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-17 10:24:06