Mvvmcross.plugin.ble e plugin.ble gestiscono entrambe le chiamate BLE asincrone, ma differiscono nel loro approccio alla gestione di queste chiamate e all'integrazione con il framework MVVMCRoss.
mvvmcross.plugin.ble
1. Iniezione di dipendenza: mvvmcross.plugin.ble utilizza il sistema di iniezione di dipendenza di MVVMCRoss per gestire le istanze di `ibluetoothle` e` iadapter`. Questi sono registrati come singoli i pigri iniziali, consentendo loro di essere risolti e iniettati in modelli di visualizzazione o altri componenti secondo necessità [1].
2. Registrazione del servizio: il plug -in registra questi servizi in modo che possano essere facilmente accessibili durante l'applicazione. Ciò semplifica il processo di ottenere un adattatore Bluetooth o gestire le operazioni Bluetooth all'interno dell'app [1].
3. Gestione delle eccezioni: mentre mvvmcross.plugin.ble non gestisce esplicitamente le eccezioni asincrone in modo diverso, si consiglia di circondare le chiamate ble con blocchi di cattura a causa del potenziale per le eccezioni, in particolare su Android [1].
4. Integrazione con MVVMCROSS: il plug-in è progettato per funzionare perfettamente con MVVMCRoss, consentendo una facile integrazione nelle applicazioni basate su MVVMCRoss. Ciò include il supporto per funzionalità come il restauro dello stato e le modalità di fondo su iOS [1].
plugin.ble
1. Accesso diretto: plugin.ble fornisce accesso diretto alla funzionalità Bluetooth senza la necessità di iniezione di dipendenza. Gli utenti possono semplicemente accedere all'istanza `CrossBluetoothle.Current` per gestire le operazioni Bluetooth [2].
2. Operazioni asincroni: Plugin.ble supporta operazioni asincroni come la connessione a dispositivi, le caratteristiche di lettura/scrittura e le notifiche di gestione. Tuttavia, richiede un'attenta gestione di queste chiamate asincroni per evitare problemi come gli errori GATT su Android [2].
3. Gestione delle eccezioni: plugin.ble sottolinea l'importanza delle chiamate di asincroni circostanti con blocchi di cattura per gestire le eccezioni che possono verificarsi durante le operazioni. Ciò è cruciale a causa della natura imprevedibile delle interazioni BLE [2].
4. Best practice generale: il plug -in incoraggia le migliori pratiche come evitare operazioni ble simultanee durante la scansione, arrestare le scansioni una volta trovato il dispositivo desiderato e non la memorizzazione nella cache o istanze di servizio tra le connessioni [2].
differenze chiave
- Iniezione di dipendenza: mvvmcross.plugin.ble Utilizza l'iniezione di dipendenza, che semplifica la gestione del servizio nelle applicazioni MVVMCRoss, mentre Plugin.ble non lo richiede.
- Integrazione: mvvmcross.plugin.ble è specificamente progettato per applicazioni MVVMCRoss, fornendo integrazione con le sue caratteristiche, mentre Plugin.ble è più versatile e può essere utilizzato in qualsiasi progetto Xamarin o Maui.
- Gestione delle chiamate Async: entrambi i plugin richiedono un'attenta gestione delle chiamate asincroni, ma mvvmcross.plugin.ble si basa sulla gestione dei servizi di MVVMCRoss, semplificando potenzialmente la gestione degli errori in un framework strutturato.
In sintesi, mentre entrambi i plug -in gestiscono le chiamate BLE asincrone in modo simile in termini di un'attenta gestione di gestione e delle eccezioni, mvvmcross.plugin.ble si integra più strettamente con il framework MVVMCRoss, sfruttando le sue caratteristiche di iniezione di dipendenza e di gestione del servizio.
Citazioni:[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-to-connect-reconnect-to-ble-devic