同じ実装を使用して複数のアプリケーションを 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 にエラーは見つかりませんでした。メトロにもエラーはありません。エラーの原因について誰かアドバイスしてもらえますか?