Mvvmcross.plugin.ble и plugin.ble Оба обрабатывают асинхронные BLE -звонки, но они различаются по своему подходу к управлению этими вызовами и интеграцией с фреймворком MVVMcross.
mvvmcross.plugin.ble
1. Инъекция зависимости: mvvmcross.plugin.ble использует систему впрыска зависимостей MVVMcross для управления экземплярами `ibluetoothle` и` iadapter`. Они зарегистрированы как ленивые инициализированные синглетоны, что позволяет их разрешить и вводить в модели в представление или другие компоненты по мере необходимости [1].
2. Регистрация услуг: плагин регистрирует эти услуги, чтобы их можно было легко получить на протяжении всего приложения. Это упрощает процесс получения адаптера Bluetooth или управления операциями Bluetooth в приложении [1].
3. Обработка исключений: хотя mvvmcross.plugin.ble явно не обрабатывает асинхронные исключения по-разному, рекомендуется окружить блудные вызовы с помощью блоков с помощью CATCH из-за возможных исключений, особенно на Android [1].
4. Интеграция с MVVMcross: плагин предназначен для беспрепятственной работы с MVVMcross, что позволяет легко интегрировать в приложения на основе MVVMcross. Это включает в себя поддержку таких функций, как восстановление состояния и фоновые режимы на iOS [1].
plagin.ble
1. Прямой доступ: плагин. Пользователи могут просто получить доступ к экземпляру `crossbluetoothle.current` для управления операциями Bluetooth [2].
2. Асинхронные операции: плагин. Тем не менее, это требует тщательного управления этими асинхронными звонками, чтобы избежать таких проблем, как ошибки GATT на Android [2].
3. Обработка исключений: Plugin.ble подчеркивает важность окружающих асинхронных вызовов с помощью блоков Try-Catch для обработки исключений, которые могут возникнуть во время операций. Это важно из -за непредсказуемого характера взаимодействия BLE [2].
4. Общие лучшие практики: плагин поощряет лучшие практики, такие как избегание одновременных операций BLE во время сканирования, остановки сканирования после того, как можно найти желаемое устройство, а не кэширование характеристики или экземпляров обслуживания между соединениями [2].
Ключевые различия
- Инъекция зависимости: mvvmcross.plugin.ble использует инъекцию зависимостей, которая упрощает управление услугами в приложениях MVVMcross, в то время как плагин.ble не требует этого.
- Интеграция: mvvmcross.plugin.ble специально разработан для приложений MVVMcross, обеспечивая интеграцию с его функциями, тогда как плагин.
- Async Call Management: оба плагина требуют тщательного управления асинхронными вызовами, но mvvmcross.plugin.ble полагается на управление услугами MVVMcross, что потенциально упрощает обработку ошибок в структурированной структуре.
Таким образом, в то время как оба плагина обрабатывают асинхронные BLE -вызовы аналогично с точки зрения требования тщательного управления и обработки исключений, MVVMcross.plugin.ble более тесно интегрируется с структурой MVVMcross, используя свои функции впрыскивания зависимостей и управления услугами.
Цитаты:[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=SfgulSkeoeee
[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-wy-data-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/questions/2101489/using-plugin-ble-to-connect-reconnect-to-ble-devic