Mvvmcross.plugin.ble và plugin.ble Cả hai xử lý các cuộc gọi BLE không đồng bộ, nhưng chúng khác nhau trong cách tiếp cận của chúng để quản lý các cuộc gọi này và tích hợp với khung MVVMcross.
mvvmcross.plugin.ble
1. Tiêm phụ thuộc: MVVMCROSS.Plugin.Ble sử dụng hệ thống tiêm phụ thuộc của MVVMCROSS để quản lý các trường hợp của `ibluetoothle` và` iad CHƯƠNG`. Chúng được đăng ký dưới dạng singletons được khởi xướng lười biếng, cho phép chúng được giải quyết và đưa vào các mô hình xem hoặc các thành phần khác khi cần thiết [1].
2. Đăng ký dịch vụ: Plugin đăng ký các dịch vụ này để chúng có thể dễ dàng truy cập trong toàn bộ ứng dụng. Điều này đơn giản hóa quá trình có được bộ điều hợp Bluetooth hoặc quản lý các hoạt động Bluetooth trong ứng dụng [1].
3. Xử lý ngoại lệ: Mặc dù mvvmcross.plugin.ble không xử lý rõ ràng các ngoại lệ không đồng bộ khác nhau, nên bao quanh các cuộc gọi BLE với các khối thử thử do tiềm năng cho các ngoại lệ, đặc biệt là trên Android [1].
4. Tích hợp với MVVMCROSS: Plugin được thiết kế để hoạt động liền mạch với MVVMcross, cho phép tích hợp dễ dàng vào các ứng dụng dựa trên MVVMCROSS. Điều này bao gồm hỗ trợ cho các tính năng như phục hồi trạng thái và chế độ nền trên iOS [1].
Plugin.ble
1. Truy cập trực tiếp: Plugin.Ble cung cấp quyền truy cập trực tiếp vào chức năng Bluetooth mà không cần phải tiêm phụ thuộc. Người dùng có thể chỉ cần truy cập phiên bản `Crossbluetoothle.Current` để quản lý các hoạt động Bluetooth [2].
2. Hoạt động Async: Plugin.Ble hỗ trợ các hoạt động không đồng bộ như kết nối với các thiết bị, đặc điểm đọc/viết và thông báo xử lý. Tuy nhiên, nó đòi hỏi phải quản lý cẩn thận các cuộc gọi async này để tránh các vấn đề như lỗi GATT trên Android [2].
3. Xử lý ngoại lệ: Plugin.Ble nhấn mạnh tầm quan trọng của các cuộc gọi ble xung quanh với các khối thử để xử lý các ngoại lệ có thể xảy ra trong các hoạt động. Điều này rất quan trọng do tính chất không thể đoán trước của các tương tác BLE [2].
4. Thực tiễn tốt nhất: Plugin khuyến khích các thực tiễn tốt nhất như tránh các hoạt động ble đồng thời trong khi quét, dừng quét sau khi tìm thấy thiết bị mong muốn và không lưu trữ các trường hợp đặc trưng hoặc dịch vụ giữa các kết nối [2].
Sự khác biệt chính
- Tiêm phụ thuộc: MVVMCROSS.Plugin.Ble sử dụng tiêm phụ thuộc, giúp đơn giản hóa việc quản lý dịch vụ trong các ứng dụng MVVMCROSS, trong khi plugin.ble không yêu cầu điều này.
- Tích hợp: MVVMCROSS.Plugin.ble được thiết kế đặc biệt cho các ứng dụng MVVMCROSS, cung cấp tích hợp với các tính năng của nó, trong khi plugin.ble linh hoạt hơn và có thể được sử dụng trong bất kỳ dự án Xamarin hoặc Maui nào.
- Quản lý cuộc gọi Async: Cả hai plugin đều yêu cầu quản lý cẩn thận các cuộc gọi ASYNC, nhưng mvvmcross.plugin.ble dựa vào quản lý dịch vụ của MVVMCROSS, có khả năng đơn giản hóa việc xử lý lỗi trong khung có cấu trúc.
Tóm lại, trong khi cả hai plugin xử lý các cuộc gọi BLE không đồng bộ tương tự về việc yêu cầu quản lý cẩn thận và xử lý ngoại lệ, mvvmcross.plugin.ble tích hợp chặt chẽ hơn với khung MVVMcross, tận dụng các tính năng quản lý dịch vụ và tiêm phụ thuộc.
Trích dẫn:[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
.
[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-to-connect-reconnect-to-ble-devic