Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak Mvvmcross.plugin.ble obsługuje asynchroniczne wywołania BLE inaczej niż wtyczka


Jak Mvvmcross.plugin.ble obsługuje asynchroniczne wywołania BLE inaczej niż wtyczka


Mvvmcross.plugin.ble i wtyczka. Zarówno obsługują asynchroniczne wywołania BLE, ale różnią się podejściem do zarządzania tymi połączeniami i integracji z frameworkiem MVVMCROSS.

Mvvmcross.plugin.ble

1. Wtrysk zależności: Mvvmcross.plugin.ble używa systemu wtrysku zależności MVVMCROSS do zarządzania instancjami „ibluetoothle” i „iadapter”. Są one zarejestrowane jako leniwe singletony, umożliwiając ich rozwiązanie i wstrzyknięcie do modeli lub innych komponentów w razie potrzeby [1].

2. Rejestracja usług: wtyczka rejestruje te usługi, aby można było je łatwo uzyskać w całej aplikacji. Upraszcza to proces uzyskiwania adaptera Bluetooth lub zarządzania operacjami Bluetooth w aplikacji [1].

3. Obsługa wyjątków: podczas gdy mvvmcross.plugin.ble nie obsługuje wyraźnie asynchronicznych wyjątków inaczej, zaleca się otaczanie połączeń BLE z blokami próbnymi ze względu na potencjał wyjątków, szczególnie na Androida [1].

4. Integracja z MVVMCROSS: Wtyczka została zaprojektowana do bezproblemowo z MVVMCROSS, umożliwiając łatwą integrację z aplikacjami opartymi na MVVMCROSS. Obejmuje to obsługę funkcji takich jak przywracanie stanu i tryby tła na iOS [1].

Plugin.ble

1. Dostęp bezpośredni: wtyczka. Ble zapewnia bezpośredni dostęp do funkcji Bluetooth bez potrzeby wtrysku zależności. Użytkownicy mogą po prostu uzyskać dostęp do instancji „crossbluetoothle.current` w celu zarządzania operacjami Bluetooth [2].

2. Operacje async: Plugin.ble obsługuje operacje asynchroniczne, takie jak łączenie się z urządzeniami, cechy czytania/pisania i powiadomienia o obsłudze. Wymaga to jednak starannego zarządzania tymi wywołaniami asynchronicznymi, aby uniknąć problemów takich jak błędy GATT na Androidzie [2].

3. Obsługa wyjątków: wtyczka. Ble podkreśla znaczenie otaczających połączeń asynchronicznych z blokami próbnymi, aby obsłużyć wyjątki, które mogą wystąpić podczas operacji. Ma to kluczowe znaczenie ze względu na nieprzewidywalną naturę interakcji BLE [2].

4. Ogólne najlepsze praktyki: wtyczka zachęca do najlepszych praktyk, takich jak unikanie współbieżnych operacji BLE podczas skanowania, zatrzymanie skanowania po znalezieniu żądanego urządzenia, a nie buforowanie charakterystyki lub instancji serwisowych między połączeniami [2].

Kluczowe różnice

- Wtrysk zależności: mvvmcross.plugin.ble wykorzystuje wtrysk zależności, który upraszcza zarządzanie usługami w aplikacjach MVVMCROSS, podczas gdy wtyczka.ble nie wymaga tego.
- Integracja: mvvmcross.plugin.ble jest specjalnie zaprojektowany do aplikacji MVVMCROSS, zapewniając integrację z jej funkcjami, podczas gdy wtyczka. Ble jest bardziej wszechstronna i może być używana w dowolnym projekcie Xamarin lub Maui.
- Zarządzanie wywołaniami asynchodawcy: Obie wtyczki wymagają starannego zarządzania połączeniami asynchodowymi, ale MVVMCROSS.PLUGIN.BLE polega na zarządzaniu usługami MVVMCross, potencjalnie upraszczając obsługę błędów w strukturze.

Podsumowując, podczas gdy oba wtyczki obsługują asynchroniczne wywołania BLE podobnie pod względem wymagania starannego zarządzania i obsługi wyjątków, MVVMCROSS.PLUGIN.BLE bardziej integruje się z ramą MVVMCROSS, wykorzystując funkcje wstrzyknięcia zależności i zarządzania usługami.

Cytaty:
[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=sfgulSeoee
[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