Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como mvvmcross.plugin.ble lida com chamadas de ble assíncronas de maneira diferente do plugin.ble


Como mvvmcross.plugin.ble lida com chamadas de ble assíncronas de maneira diferente do plugin.ble


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