0

同じ実装を使用して複数のアプリケーションを BLE デバイスに接続するため、そのコードをモジュール内に移動しようとしています。ただし、アプリ内のフォルダー内で同じコードが機能すると、モジュール内でスキャンコードが機能しないという奇妙な問題が発生しています。

次のコードでテストしました。

import {
  BleError,
  BleManager,
  Device as BlxDevice,
  LogLevel,
} from 'react-native-ble-plx';
import { PermissionsAndroid } from 'react-native';

const manager = new BleManager();
manager.setLogLevel(LogLevel.Verbose);

export const tryScan = () => {
  console.log('In main app');
  PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
  );

  PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
  ),
    manager.startDeviceScan(
      null,
      { allowDuplicates: true },
      (error: BleError | null, scannedDevice: BlxDevice | null) => {
        console.log('Discovered device', scannedDevice);
        manager.stopDeviceScan();
      },
    );
};

モジュール内ではデバイスはまったく検出されませんが、アプリ内ではモジュールとしてではなく、期待どおりに動作します。

モジュールには、ピアの依存関係としてネイティブ ライブラリがあります。

  "peerDependencies": {
    "react-native": "^0.64.x",
    "react-native-ble-plx": "^2.x"
  },

アプリはこのようにモジュールをインクルードしています

  "dependencies": {
    "device-control": "file:../device-control",
  },

アプリの node_modules 内に正しいコードがあることを確認しました。

私の混乱に加えて、react-native-ble-plx を使用するアプリケーションでは、BLE の状態を で監視するために機能しmanager.onStateChangeます。

logcat にエラーは見つかりませんでした。メトロにもエラーはありません。エラーの原因について誰かアドバイスしてもらえますか?

4

0 に答える 0