mvvmcross.plugin.bleとplugin.bleはどちらも非同期ブルコールを処理しますが、これらの呼び出しを管理し、MVVMCrossフレームワークと統合するアプローチが異なります。
mvvmcross.plugin.ble
1。依存関係注射:mvvmcross.plugin.bleは、mvvmcrossの依存関係インジェクションシステムを使用して、「ibluetoothle」と「iadapter」のインスタンスを管理します。これらは、怠zyなイネ化されたシングルトンとして登録されており、必要に応じてビューモデルまたは他のコンポーネントに解決して注入することができます[1]。
2。サービス登録:プラグインはこれらのサービスを登録して、アプリケーション全体で簡単にアクセスできるようにします。これにより、Bluetoothアダプターを取得したり、アプリ内でBluetooth操作を管理するプロセスが簡素化されます[1]。
3.例外処理:MVVMCross.Plugin.bleは非同期の例外を明示的には異なる方法で明示的に処理しませんが、特にAndroid [1]で例外の可能性があるため、Try-CatchブロックでBLEコールを取り囲むことをお勧めします。
4. MVVMCrossとの統合:プラグインは、MVVMCrossとシームレスに動作するように設計されており、MVVMCrossベースのアプリケーションに簡単に統合できます。これには、IOS [1]の状態修復や背景モードなどの機能のサポートが含まれます。
Plugin.ble
1。直接アクセス:Plugin.bleは、依存関係噴射を必要とせずにBluetooth機能への直接アクセスを提供します。ユーザーは、 `crossbluetooth.current`インスタンスに単純にアクセスして、Bluetooth操作を管理できます[2]。
2。非同期操作:Plugin.Bleは、デバイスへの接続、読み取り/書き込み特性、および通知の取り扱いなどの非同期操作をサポートしています。ただし、AndroidのGATTエラーなどの問題を回避するために、これらの非同期呼び出しを慎重に管理する必要があります[2]。
3.例外処理:Plugin.bleは、操作中に発生する可能性のある例外を処理するために、トライキャッチブロックを使用した周囲の非同期コールの重要性を強調します。これは、BLE相互作用の予測不可能な性質のために重要です[2]。
4.一般的なベストプラクティス:プラグインは、スキャン中の同時の操作を回避し、目的のデバイスが見つかった後のスキャンを停止し、接続間のキャッシング特性やサービスインスタンスではなく、スキャンを停止するなどのベストプラクティスを奨励しています[2]。
###キーの違い
- 依存関係噴射:mvvmcross.plugin.bleは依存関係インジェクションを使用します。これにより、MVVMCrossアプリケーションのサービス管理が簡素化されますが、Plugin.bleはこれを必要としません。
- 統合:mvvmcross.plugin.bleは、mvvmcrossアプリケーション用に特別に設計されており、その機能と統合されますが、Plugin.bleはより汎用性が高く、XamarinまたはMAUIプロジェクトで使用できます。
-ASYNCコール管理:両方のプラグインには非同期コールを慎重に管理する必要がありますが、MVVMCross.Plugin.bleはMVVMCrossのサービス管理に依存しており、構造化されたフレームワークでのエラー処理を簡素化する可能性があります。
要約すると、両方のプラグインが慎重な管理と例外処理を必要とするという点で同様に非同期BLEコールを処理しますが、MVVMCross.Plugin.BleはMVVMCrossフレームワークとより密接に統合し、依存関係の注入とサービス管理機能を活用します。
引用:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://www.nuget.org/packages/plugin.ble/
[3] https://stackoverflow.com/questions/36522920
[4] https://www.youtube.com/watch?v=sfgulskeoee
[5] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/
[6] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[7] https://stackoverflow.com/questions/69735708/xamarin-plugin-ble-why-data-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/questions/2101489/using-plugin-ble-to-connect-reconnect-to-ble-devic