Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kako mvvmcross.plugin.ble ročaj asinhroni BLE kliče drugače kot Plugin.ble


Kako mvvmcross.plugin.ble ročaj asinhroni BLE kliče drugače kot Plugin.ble


Mvvmcross.plugin.ble in Plugin.ble oba obvladujeta asinhrone klice BLE, vendar se razlikujeta v svojem pristopu k upravljanju teh klicev in integriranju z MVVMcross okvirjem.

mvvmcross.plugin.ble

1. Vbrizgavanje odvisnosti: mvvmcross.plugin.ble uporablja sistem za vbrizgavanje odvisnosti mvvmcrossa za upravljanje primerkov `ibluetoothle` in` iadapter`. Ti so registrirani kot lenoinializirani singletoni, kar omogoča, da se po potrebi rešijo in vbrizgajo v modele ogledov ali druge komponente [1].

2. Registracija storitev: Vtičnik registrira te storitve, tako da jih je mogoče enostavno dostopati v celotni aplikaciji. To poenostavi postopek pridobivanja adapterja Bluetooth ali upravljanja operacij Bluetooth znotraj aplikacije [1].

3. Ravnanje izjem: Medtem ko mvvmcross.plugin.ble izrecno ne obravnava asinhronih izjem drugače, je priporočljivo, da obkrožimo klice z Ble s poskusnimi bloki zaradi možnosti za izjeme, zlasti na Androidu [1].

4. Integracija z MVVMcross: Vtičnik je zasnovan tako, da deluje brezhibno z MVVMcross, kar omogoča enostavno integracijo v aplikacije, ki temeljijo na MVVMcross. To vključuje podporo za funkcije, kot so obnovitev stanja in načini ozadja na iOS [1].

Plugin.ble

1. Neposredni dostop: Plugin.ble omogoča neposreden dostop do funkcionalnosti Bluetooth brez potrebe po vbrizgavanju odvisnosti. Uporabniki lahko preprosto dostopajo do primerka `crossbluetoothle.current` za upravljanje operacij Bluetooth [2].

2. Async Operations: Plugin.ble podpira asinhrone operacije, kot so povezovanje z napravami, značilnosti branja/pisanja in ravnanje z obvestili. Vendar pa zahteva natančno upravljanje teh asinkovih klicev, da se izognete težavam, kot so GATT napake na Androidu [2].

3. Ravnanje izjem: Plugin.ble poudarja pomen okoliških asintičnih klicev s poskusnimi bloki, da bi obvladali izjeme, ki se lahko pojavijo med operacijami. To je ključnega pomena zaradi nepredvidljive narave BLE interakcij [2].

4. Splošne najboljše prakse: vtičnik spodbuja najboljše prakse, kot so izogibanje sočasnim BLE operacijam med skeniranjem, zaustavitev skeniranja, ko najdemo želeno napravo, in ne predpomnilnika značilnosti ali storitev med povezavami [2].

Ključne razlike

- Vbrizgavanje odvisnosti: mvvmcross.plugin.ble uporablja vbrizgavanje odvisnosti, ki poenostavi upravljanje storitev v aplikacijah MVVMcross, medtem ko Plugin.ble tega ne zahteva.
- Integracija: mvvmcross.plugin.ble je zasnovan posebej za aplikacije MVVMcross, ki zagotavlja integracijo z njegovimi lastnostmi, medtem ko je Plugin.ble bolj vsestranski in se lahko uporablja pri katerem koli projektu Xamarin ali Maui.
- Async Call Management: Oba vtičnika zahtevata skrbno upravljanje klicev ASYNC, vendar se mvvmcross.plugin.ble opira na upravljanje storitev MVVMcross, kar lahko poenostavi ravnanje z napakami v strukturiranem okviru.

Če povzamemo, medtem ko oba vtičnika obravnavata asinhrone klice BLE podobno v smislu, da zahtevata natančno upravljanje in ravnanje z izjemami, se mvvmcross.plugin.ble tesneje integrira s okvirom MVVMcross, s čimer izkoristi svoje funkcije vbrizgavanja odvisnosti in upravljanja storitev.

Navedbe:
[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_no_good_crossplatform_bluetooth/
[6] https://github.com/xabre/xamarin-bluetooth-le/isissue/524
[7] https://stackoverflow.com/questions/69735708/xamarin-plugin-ble-hy-tata-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/Questions/2101489/using-plugin-ble-to-connect-reconnect-to-alb-devic