Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon mvvmcross.plugin.ble 핸들 비동기식 BLE가 플러그인과 다르게 호출되는 방법


mvvmcross.plugin.ble 핸들 비동기식 BLE가 플러그인과 다르게 호출되는 방법


mvvmcross.plugin.ble 및 plugin.ble 모두 비동기식 통화를 처리하지만 이러한 통화를 관리하고 MVMCross 프레임 워크와 통합하는 데 대한 접근 방식이 다릅니다.

mvvmcross.plugin.ble

1. 종속성 주입 : mvvmcross.plugin.ble은 mvvmcross의 종속성 주입 시스템을 사용하여 'ibluetoothle'및 'iadapter'인스턴스를 관리합니다. 이들은 게으른 이니셜 화 싱글 톤으로 등록되어 필요에 따라보기 모델 또는 기타 구성 요소에 해결 및 주입 될 수 있습니다 [1].

2. 서비스 등록 : 플러그인은 이러한 서비스를 등록하여 응용 프로그램 전체에 쉽게 액세스 할 수 있습니다. 이는 앱 내에서 블루투스 어댑터를 얻거나 블루투스 작업을 관리하는 프로세스를 단순화합니다 [1].

3. 예외 처리 : mvvmcross.plugin.ble은 비동기 예외를 명시 적으로 처리하지는 않지만, 특히 Android [1]에 대한 예외의 가능성으로 인해 Try-Catch 블록으로 BLE 통화를 둘러싸는 것이 좋습니다.

4. MVVMCross와의 통합 : 플러그인은 MVVMCross와 완벽하게 작동하도록 설계되어 MVVMCross 기반 애플리케이션에 쉽게 통합 할 수 있습니다. 여기에는 iOS의 상태 복원 및 배경 모드와 같은 기능에 대한 지원이 포함됩니다 [1].

plugin.ble

1. 직접 액세스 : Plugin.ble은 종속성 주입없이 Bluetooth 기능에 직접 액세스 할 수 있습니다. 사용자는 단순히`CrossBluetoothle.current` 인스턴스에 액세스하여 Bluetooth 작업을 관리 할 수 ​​있습니다 [2].

2. 비동기 작업 : 플러그인은 장치에 연결, 읽기/쓰기 특성 및 처리 알림과 같은 비동기 작업을 지원합니다. 그러나 Android [2]의 GATT 오류와 같은 문제를 피하기 위해 이러한 비동기 호출을 신중하게 관리해야합니다.

3. 예외 처리 : 플러그인 .ble은 작업 중에 발생할 수있는 예외를 처리하기 위해 Try-Catch 블록이있는 주변 비동기 BLE 통화의 중요성을 강조합니다. 이것은 BLE 상호 작용의 예측할 수없는 특성으로 인해 중요합니다 [2].

4. 일반 모범 사례 : 플러그인은 스캔하는 동안 동시 BLE 작업을 피하고 원하는 장치가 발견되면 스캔을 중지하고 연결 사이의 특성 또는 서비스 인스턴스를 캐싱하지 않는 것과 같은 모범 사례를 장려합니다 [2].

주요 차이점

- 종속성 주입 : mvvmcross.plugin.ble의 종속성 주입을 사용하여 mvvmcross 응용 프로그램의 서비스 관리를 단순화하는 반면 플러그인은이를 필요로하지 않습니다.
- 통합 : mvvmcross.plugin.ble은 MVVMCross 애플리케이션을 위해 특별히 설계되었으며 기능과 통합을 제공하는 반면 플러그인은 다재다능하며 모든 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-ble-ble-connect-reconnect-to-ble-devic