Mvvmcross.plugin.ble та plugin.ble обидва обробляють асинхронні дзвінки, але вони відрізняються своїм підходом до управління цими дзвінками та інтеграції з рамкою MVVMcross.
mvvmcross.plugin.ble
1. Введення залежності: mvvmcross.plugin.ble використовує систему впорскування залежності Mvvmcross для управління екземпляром `ibluetoothle` та` iAdapter`. Вони зареєстровані як ліниві ініціалізовані одиночки, що дозволяє їх вирішити та вводити в оглядові моделі або інші компоненти за потребою [1].
2. Реєстрація служби: плагін реєструє ці послуги, щоб їх можна було легко отримати доступ у всій програмі. Це спрощує процес отримання адаптера Bluetooth або управління операціями Bluetooth в додатку [1].
3. Поводження з винятками: Хоча mvvmcross.plugin.ble не чітко обробляє асинхронні винятки по-різному, рекомендується оточити дзвінки з випробуваними блоками через потенціал для винятків, особливо на Android [1].
4. Інтеграція з MVVMCross: плагін призначений для безперешкодного роботи з MVVMCross, що дозволяє легко інтегрувати в додатки на основі MVVMcross. Сюди входить підтримка таких функцій, як відновлення стану та фонові режими на iOS [1].
плагін.ble
1. Прямий доступ: плагін.ble забезпечує прямий доступ до функціональності Bluetooth без необхідності введення залежності. Користувачі можуть просто отримати доступ до екземпляра `crossbluetoothle.current` для управління операціями Bluetooth [2].
2. Операції з асинхронізацією: плагін. BLEBLE підтримує асинхронні операції, такі як підключення до пристроїв, характеристики читання/письма та обробка сповіщень. Однак це вимагає ретельного управління цими викликами асинхронії, щоб уникнути таких проблем, як помилки GATT на Android [2].
3. Поводження з винятками: плагін. БЛАСНО підкреслює важливість навколишніх викликів асинхронізації з блоками Try-Catch для обробки винятків, які можуть статися під час операцій. Це має вирішальне значення через непередбачуваний характер взаємодій BLE [2].
.
Ключові відмінності
- Введення залежності: mvvmcross.plugin.ble використовує введення залежності, яка спрощує управління послугами в програмах mvvmcross, в той час як plugin.ble цього не вимагає.
- Інтеграція: mvvmcross.plugin.ble спеціально розроблений для додатків mvvmcross, забезпечуючи інтеграцію з його функціями, тоді як Plugin.ble є більш універсальним і може бути використаний у будь -якому проекті Xamarin або Maui.
- Управління викликами ASYNC: Обидва плагіни потребують ретельного управління викликами ASYNC, але 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=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-connect-reconnect-to-ble-devic