Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak Mvvmcross.plugin.ble rukojeť asynchronní volání ble odlišně od pluginu.ble


Jak Mvvmcross.plugin.ble rukojeť asynchronní volání ble odlišně od pluginu.ble


Mvvmcross.plugin.ble a plugin.ble oba zpracovávají asynchronní volání BLE, ale liší se svým přístupem ke správě těchto hovorů a integrace s rámcem MVVMCross.

mvvmcross.plugin.ble

1. Injekce závislosti: mvvmcross.plugin.ble používá pro správu instancí `ibluetoothle` a` iadapter` injekční systém MVVMCross. Ty jsou registrovány jako líné inicializované singletony, což jim umožňuje, aby byly vyřešeny a vstřikovány do modelů pohledu nebo jiných komponent podle potřeby [1].

2. Registrace služby: Plugin registruje tyto služby tak, aby je lze snadno přistupovat v celé aplikaci. To zjednodušuje proces získání adaptéru Bluetooth nebo správy operací Bluetooth v aplikaci [1].

3. Manipulace s výjimkou: Zatímco mvvmcross.plugin.ble explicitně nezpracovává asynchronní výjimky odlišně, doporučuje se obklopit BLE volání s bloky pokusů kvůli potenciálu pro výjimky, zejména na Android [1].

4. Integrace s MVVMCross: Plugin je navržen tak, aby bez problémů pracoval s MVVMCross, což umožňuje snadnou integraci do aplikací založených na MVVMCrossu. To zahrnuje podporu funkcí, jako je obnova stavu a režimy pozadí na iOS [1].

plugin.ble

1. Přímý přístup: plugin.ble poskytuje přímý přístup k funkčnosti Bluetooth bez nutnosti injekce závislosti. Uživatelé mají jednoduše přístup k instanci `crossbluetoothle.current` a správu operací Bluetooth [2].

2. Operace async: plugin.ble podporuje asynchronní operace, jako je připojení k zařízením, charakteristika čtení/psaní a oznámení o manipulaci. Vyžaduje však pečlivé řízení těchto asynchronistických hovorů, aby se zabránilo problémům, jako jsou chyby GATT na Androidu [2].

3. Manipulace s výjimkou: plugin.ble zdůrazňuje důležitost okolních asynchrových volání s bloky pokusů, aby zvládla výjimky, které se mohou objevit během operací. To je zásadní kvůli nepředvídatelné povaze interakcí BLE [2].

4. Obecné osvědčené postupy: Plugin podporuje osvědčené postupy, jako je vyhýbání se souběžným operacím BLE při skenování, zastavení skenování, jakmile je nalezeno požadované zařízení, a nikoli charakteristické dokládání mezi připojeními k ukládání do mezipaměti nebo servisní instance [2].

Klíčové rozdíly

- Injekce závislosti: mvvmcross.plugin.ble používá injekci závislosti, která zjednodušuje správu služeb v aplikacích MVVMCross, zatímco plugin.ble to nevyžaduje.
- Integrace: mvvmcross.plugin.ble je speciálně navržena pro aplikace MVVMCross, poskytuje integraci s jeho funkcemi, zatímco plugin.ble je všestrannější a lze jej použít v jakémkoli projektu Xamarin nebo MAUI.
- Async Call Management: Oba pluginy vyžadují pečlivé správu asynchronistických hovorů, ale mvvmcross.plugin.ble spoléhá na správu služeb MVVMCross, což potenciálně zjednoduší zpracování chyb ve strukturovaném rámci.

Stručně řečeno, zatímco oba pluginy zpracovávají asynchronní volání BLE podobně, pokud jde o vyžadování pečlivé správy a zpracování výjimek, mvvmcross.plugin.ble se pečlivěji integruje s rámcem MVVMCross, čímž využívá jeho závislosti a vlastnosti správy služeb.

Citace:
[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=SFGULSKEOEEE
[5] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/
[6] https://github.com/xabre/xamarin-luetooth-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-connect-to-ble-devic