O uso do plugin.ble e mvvmcross.plugin.ble no mesmo projeto é tecnicamente possível, mas pode não ser a abordagem mais eficiente ou recomendada. Aqui está o porquê:
1. Objetivo e funcionalidade:
- Plugin.ble é um plug-in de plataforma cruzada projetada para acessar a funcionalidade Bluetooth Low Energy (BLE). É adequado para projetos que não exigem a arquitetura MVVM ou recursos adicionais fornecidos pelo MVVMCROSS.
- MVVMCROSS.PLUGIN.BLE, por outro lado, é projetado especificamente para projetos usando a estrutura MVVMCROSS. Ele integra a funcionalidade BLE na arquitetura MVVM, permitindo injeção de dependência e outros recursos de MVVMCross.
2. Dependência e sobreposição:
- MVVMCROSS.PLUGIN.BLE Na verdade, faz referência ao plugin.BLE internamente. Isso significa que, se você usar mvvmcross.plugin.ble, também está usando indiretamente o plugin.ble. No entanto, o uso de ambos explicitamente pode levar a complexidade desnecessária e a possíveis conflitos.
3. Uso e integração:
- Se o seu projeto for construído com mvvmcross, o uso de mvvmcross.plugin.ble é mais direto porque se integra bem ao padrão MVVM e permitirá injeção de dependência. Você pode resolver os serviços ibluetoothle e idapter usando o contêiner do IOC da MVVMCROSS.
- Se você preferir uma abordagem mais simples e não-MVVM, o plugin.ble pode ser suficiente. No entanto, se você decidir usar os dois, verifique se você gerencia suas instâncias e funcionalidades cuidadosamente para evitar conflitos.
4. Problemas em potencial:
- O uso de ambos os plugins pode levar à confusão no gerenciamento de instâncias e no manuseio de operações BLE. Você pode acabar com vários adaptadores ou serviços BLE em execução, o que pode causar comportamentos ou erros inesperados.
5. Recomendação:
- Se o seu projeto usar mvvmcross, fique com mvvmcross.plugin.ble para consistência e facilidade de integração.
- Se o seu projeto não usar mvvmcross, o plugin.ble é uma escolha mais simples.
- Evite usar os dois, a menos que você tenha um requisito específico que exige o uso combinado e verifique se você lida com a integração deles com cuidado.
Em resumo, embora seja tecnicamente possível usar os dois plugins no mesmo projeto, geralmente não é recomendado, a menos que você tenha um motivo convincente para fazê -lo. A escolha deve ser baseada na arquitetura do seu projeto e nas necessidades específicas.
Citações:[1] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-sha--i-utilize-for-bluetooth-low-e
[2] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[3] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[4] https://forum.ionicframework.com/t/both-ble-bleothle-plugins-seem-not-to-be-loaded-at-all/176776
[5] https://www.nuget.org/packages/mvvmcross.plugin.ble/2.2.0-pre5
[6] https://www.npmjs.com/package/cordova-plugin-bluetoothle
[7] https://github.com/mrozema/xamarin-bleetooth-le
[8] https://community.qlik.com/t5/qlikview-app-dev/multiple-versions-of-similar-data-for-tables-in-data-model/td-p/468796
[9] https://stackoverflow.com/questions/38327176/xamarin-forms-plugins-ble-mvvmcross-plugins-ble