web-dev-qa-db-fra.com

Bluetooth en réactif natif

Mon projet nécessite de recevoir et d'envoyer un signal Bluetooth, et je suis assez nouveau pour réagir en mode natif. Quel composant puis-je utiliser dans Réactif pour les fonctionnalités liées à Bluetooth?

36
Leo Chen

Mise à jour (avec exclusion de responsabilité) :

Depuis que j'ai donné la réponse initiale, les choses ont changé. Dans mon entreprise ( Polidea ) car nous nous sommes rendu compte qu’il n’existait pas de très bonne bibliothèque pour React), une solution native pour BT, nous avons développé et entièrement open-source (licence permissive) notre propre solution. Il est basé sur deux bibliothèques natives Android et iOS natives basées sur RX) et nous avons écrit un React natif autour de celui-ci pour que vous puissiez utiliser le même code Javascript/Une interface RN mais sous le capot Les spécificités natives iOS/Android sont gérées en code natif.

La bibliothèque est ici: https://github.com/Polidea/react-native-ble-plx

Clause de non-responsabilité: Je suis ingénieur principal en logiciel et ancien directeur de la technologie @Polidea - la société qui a créé la bibliothèque.

Réponse originale:

Je ne pense pas qu'il existe un composant intégré pour l'accès Bluetooth dans RN.

Si vous souhaitez utiliser Bluetooth, vous devez soit écrire votre propre composant API Obj-C (comme décrit à l’adresse suivante: https://facebook.github.io/react-native/docs/native-modules-ios.html #content ) ou d’utiliser des composants tiers qui répondent à vos besoins là où quelqu'un l’a déjà fait. Il y en a quelques-uns disponibles (recherche rapide sur Google):

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

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

Vous n'êtes pas sûr qu'ils fonctionnent bien, mais vous pouvez les utiliser comme point de départ si vous avez besoin d'autres fonctionnalités.

58
Jarek Potiuk

J'ai créé un cadre Bluetooth/WIFI multiplateforme qui vous permet de parcourir et de faire de la publicité d'une manière similaire à la connectivité Multipeer d'Apple et aux connexions à proximité de Google. Il fonctionne entre Android et iOS afin que vous puissiez envoyer des messages d’un périphérique iOS à un périphérique Android et inversement. Voici un exemple de la bibliothèque qui peut être trouvé à 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
Alex Harrison

Jetez un coup d'œil à ce paquet, qui me permet d'économiser de la vie réelle et fonctionne à la fois sur iOS et Android. React Native BLE Manager vous pouvez effectuer toutes sortes d’activités Bluetooth: numériser, connecter, envoyer, activer, désactiver, déconnecter, etc. Vous devriez le vérifier!

5
Daniel Barde