Mvvmcross.plugin.ble zajišťuje bezpečnost vlákna pro operace Bluetooth Low Energy (BLE) především pečlivým zacházením s asynchronními operacemi a dodržováním pokynů specifických pro platformu. Zde je podrobný přehled o tom, jak dosahuje bezpečnosti vlákna:
1.. Sekvenční provádění příkazů BLE **
Mvvmcross.plugin.ble zdůrazňuje význam provádění příkazů BLE postupně, zejména na Android. To znamená čekat na dokončení jedné operace před zahájením další. Tento přístup pomáhá předcházet chybám GATT, ke kterým může dojít, když jsou příkazy prováděny souběžně bez řádné synchronizace [1].2. využití hlavního vlákna **
Pro určité operace, jako je psaní charakteristik, je zásadní provádět tyto akce z hlavního vlákna. To je zvláště důležité na Androidu, kde to může vést k GattwriteError [1]. Zajištění, že takové operace jsou prováděny na hlavním vláknu, se plugin vyhýbá potenciálním problémům se závitem.3..
Po odpojení zařízení se všechny služby a charakteristické instance stanou neplatnými. Chcete -li udržovat bezpečnost vlákna, MVVMCross.plugin.ble doporučuje proti ukládání do mezipaměti tyto instance mezi relacemi připojení. Místo toho doporučuje použít k získání platných instancí pokaždé, když je navázáno připojení [1].4. manipulace s chybami **
Plugin podporuje okolní asynchronní volání BLE API s bloky Try-Catch. Tato praxe pomáhá zachytit výjimky, které se mohou objevit během operací BLE, což může být běžné kvůli povaze komunikace Bluetooth. Správné zpracování chyb zajišťuje, že aplikace zůstává stabilní, i když čelí neočekávaným problémům [1].5. Úvahy specifické pro platformu **
Mvvmcross.plugin.ble je navržen tak, aby pracoval na více platformách, včetně Android, iOS a MacOS. Zohledňuje omezení specifická pro platformu a osvědčené postupy, jako je zabránění skenování při provádění dalších operací BLE, aby se minimalizovalo odtok baterie a zlepšilo celkový výkon [1].6. Použití líných inicializovaných singletonů **
V souvislosti s MVVMCross registruje plugin `iBluetoothle` a` iadapter` jako líné inicializované singletony. Tento přístup umožňuje snadné injekci a řešení těchto služeb a zajišťuje, že jsou řádně inicializovány a spravovány v rámci životního cyklu aplikace [1] [10].Dodržováním těchto pokynů a osvědčených postupů MVVMCross.plugin.ble pomáhá vývojářům zajistit bezpečnost a spolehlivost vláken v jejich aplikacích s podporou BLE. Pro vývojáře je však zásadní porozumět základní technologii BLE a její omezení efektivně využívat plugin a vyhnout se běžným úskalím [11].
Citace:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-should-iulity-for-lluetooth-low-e
[3] https://community.particle.io/t/working-around-ble-connect-deviceaddress-is-a-blocking-call/68453
[4] https://www.nuget.org/packages/mvvmcross.plugin.ble/2.2.0-pre5
[5] https://stackoverflow.com/questions/38327176/xamarin-forms-plugins-ble-mvvmcross-plugins-ble
[6] https://github.com/xabre/xamarin-luetooth-le/issues/524
[7] https://stackoverflow.com/questions/38922639/how-imachieve-maximum-thread-safety-with-a-reread-write-ble-batt-charakteris
[8] https://github.com/xabre/xamarin-luetooth-le/issues/356
[9] https://devzone.nordicsiemi.com/f/nordic-q-a/88005/does-ncs-ble-api-hread-safe
[10] https://github.com/mrozema/xamarin-luetooth-le
[11] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/