Mvvmcross.plugin.ble e plugin. Ambos lidam com chamadas BLE assíncronas, mas diferem em sua abordagem para gerenciar essas chamadas e integrar -se à estrutura do MVVMCROSS.
mvvmcross.plugin.ble
1. Injeção de dependência: mvvmcross.plugin.ble usa o sistema de injeção de dependência da MVVMcross para gerenciar instâncias de 'ibluetoothle` e `iadapter`. Estes são registrados como singletons preguiçosos iniciados, permitindo que sejam resolvidos e injetados nos modelos de exibição ou outros componentes, conforme necessário [1].
2. Registro de serviço: o plug -in registra esses serviços para que eles possam ser facilmente acessados durante todo o aplicativo. Isso simplifica o processo de obtenção de um adaptador Bluetooth ou gerenciando operações Bluetooth no aplicativo [1].
3. Manuseio de exceção: enquanto mvvmcross.plugin.ble não lida explicitamente com exceções assíncronas de maneira diferente, é recomendável envolver chamadas BLE com blocos de tentativa devido ao potencial de exceções, especialmente no Android [1].
4. Integração com MVVMcross: O plug-in foi projetado para funcionar perfeitamente com o MVVMCROSS, permitindo fácil integração em aplicativos baseados em MVVMCross. Isso inclui suporte para recursos como restauração de estado e modos de segundo plano no iOS [1].
plugin.ble
1. Acesso direto: o plugin.ble fornece acesso direto à funcionalidade Bluetooth sem a necessidade de injeção de dependência. Os usuários podem simplesmente acessar a instância `CrossBlueTothle.Current` para gerenciar operações Bluetooth [2].
2. Operações assíncronas: o plugin.ble suporta operações assíncronas, como conectar -se a dispositivos, características de leitura/escrita e notificações de manuseio. No entanto, requer um gerenciamento cuidadoso dessas chamadas assíncronas para evitar problemas como erros de GATT no Android [2].
3. Manuseio de exceção: o plug-in.ble enfatiza a importância das chamadas assíncronas ao redor com blocos de tentativa de lidar com exceções que podem ocorrer durante as operações. Isso é crucial devido à natureza imprevisível das interações BLE [2].
4. Práticas recomendadas gerais: o plug -in incentiva as melhores práticas, como evitar operações simultâneas de BLE durante a varredura, interrompendo as varreduras assim que o dispositivo desejado for encontrado, e não as características de armazenamento em cache ou instâncias de serviço entre as conexões [2].
Diferenças -chave
- Injeção de dependência: mvvmcross.plugin.ble usa a injeção de dependência, que simplifica o gerenciamento de serviços em aplicativos MVVMCROSS, enquanto o plugin.ble não exige isso.
- Integração: mvvmcross.plugin.ble é projetado especificamente para aplicativos MVVMcross, fornecendo integração com seus recursos, enquanto o plugin.ble é mais versátil e pode ser usado em qualquer projeto Xamarin ou Maui.
- Gerenciamento de chamadas assíncronas: ambos os plugins exigem um gerenciamento cuidadoso de chamadas assíncronas, mas mvvmcross.plugin.ble depende do gerenciamento de serviços da MVVMcross, simplificando potencialmente o manuseio de erros em uma estrutura estruturada.
Em resumo, enquanto ambos os plugins lidam com chamadas BLE assíncronas de maneira semelhante em termos de exigir um gerenciamento cuidadoso e manuseio de exceções, MVVMcross.plugin.ble se integra mais firmemente à estrutura MVVMCROSS, alavancando seus recursos de injeção de dependência e gerenciamento de serviços.
Citações:[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-bruetooth-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-conect-reconnect-to-ble-devic