Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς το mvvmcross.plugin.ble λαβή ασύγχρονη ble καλεί διαφορετικά από το plugin.ble


Πώς το mvvmcross.plugin.ble λαβή ασύγχρονη ble καλεί διαφορετικά από το plugin.ble


Mvvmcross.plugin.ble και plugin.ble και οι δύο χειρίζονται ασύγχρονες κλήσεις BLE, αλλά διαφέρουν στην προσέγγισή τους στη διαχείριση αυτών των κλήσεων και να ενσωματωθούν στο πλαίσιο MVVMCross.

mvvmcross.plugin.ble

1. Εξάρτηση Εξάρτησης: Το MVVMCROSS.PLUGIN.BLE χρησιμοποιεί το σύστημα έγχυσης εξάρτησης του MVVMCROSS για τη διαχείριση των περιπτώσεων του «ibluetoothle» και του `IAdapter». Αυτά είναι εγγεγραμμένα ως τεμπέλης-εκτοξευμένα singletons, επιτρέποντάς τους να επιλυθούν και να εγχυθούν σε μοντέλα προβολής ή άλλα εξαρτήματα όπως απαιτείται [1].

2. Εγγραφή υπηρεσιών: Το plugin καταγράφει αυτές τις υπηρεσίες έτσι ώστε να μπορούν εύκολα να έχουν πρόσβαση σε όλη την εφαρμογή. Αυτό απλοποιεί τη διαδικασία λήψης ενός προσαρμογέα Bluetooth ή διαχείρισης λειτουργιών Bluetooth εντός της εφαρμογής [1].

3. Χειρισμός εξαίρεσης: Ενώ το MVVMCROSS.plugin.ble δεν χειρίζεται ρητά τις ασύγχρονες εξαιρέσεις διαφορετικά, συνιστάται να περιβάλλουν κλήσεις με μπλοκ δοκιμής λόγω των δυνατοτήτων εξαιρέσεων, ειδικά στο Android [1].

4. Ενσωμάτωση με MVVMCROSS: Το plugin έχει σχεδιαστεί για να λειτουργεί άψογα με το MVVMCross, επιτρέποντας την εύκολη ενσωμάτωση σε εφαρμογές που βασίζονται σε MVVMCross. Αυτό περιλαμβάνει υποστήριξη για χαρακτηριστικά όπως η κρατική αποκατάσταση και οι τρόποι παρασκηνίου στο iOS [1].

plugin.ble

1. Άμεση πρόσβαση: plugin.ble παρέχει άμεση πρόσβαση στη λειτουργικότητα Bluetooth χωρίς την ανάγκη για ένεση εξάρτησης. Οι χρήστες μπορούν απλά να έχουν πρόσβαση στην παρουσία `crossbluetoothle.current 'για τη διαχείριση λειτουργιών Bluetooth [2].

2. Λειτουργίες ASYNC: plugin.ble Υποστηρίζει ασύγχρονες λειτουργίες όπως η σύνδεση με τις συσκευές, τα χαρακτηριστικά ανάγνωσης/γραφής και οι ειδοποιήσεις χειρισμού. Ωστόσο, απαιτεί προσεκτική διαχείριση αυτών των κλήσεων ASYNC για την αποφυγή ζητημάτων όπως τα σφάλματα GATT στο Android [2].

3. Χειρισμός εξαίρεσης: Το plugin.ble δίνει έμφαση στη σημασία των περιβαλλόντων κλήσεων με δοκιμαστικές μπλοκ για την αντιμετώπιση εξαιρέσεων που μπορεί να εμφανιστούν κατά τη διάρκεια των εργασιών. Αυτό είναι κρίσιμο λόγω της απρόβλεπτης φύσης των αλληλεπιδράσεων BLE [2].

4. Γενικές βέλτιστες πρακτικές: Το plugin ενθαρρύνει τις βέλτιστες πρακτικές, όπως η αποφυγή των ταυτόχρονων λειτουργιών BLE κατά τη σάρωση, τη διακοπή σαρώσεων μόλις εντοπιστεί η επιθυμητή συσκευή και όχι τα χαρακτηριστικά προσωρινής αποθήκευσης ή οι περιπτώσεις εξυπηρέτησης μεταξύ των συνδέσεων [2].

βασικές διαφορές

- Ένεση εξάρτησης: Το MVVMCROSS.PLUGIN.BLE χρησιμοποιεί έγχυση εξάρτησης, η οποία απλοποιεί τη διαχείριση των υπηρεσιών σε εφαρμογές MVVMCROSS, ενώ το plugin.ble δεν απαιτεί αυτό.
- Ενσωμάτωση: Το MVVMCROSS.plugin.ble έχει σχεδιαστεί ειδικά για εφαρμογές MVVMCROSS, παρέχοντας ενσωμάτωση με τα χαρακτηριστικά του, ενώ το plugin.ble είναι πιο ευπροσάρμοστο και μπορεί να χρησιμοποιηθεί σε οποιοδήποτε έργο Xamarin ή Maui.
- Διαχείριση κλήσεων ASYNC: Και τα δύο πρόσθετα απαιτούν προσεκτική διαχείριση των κλήσεων ASYNC, αλλά το MVVMCROSS.PLUGIN.BLE βασίζεται στη διαχείριση των υπηρεσιών του MVVMCROSS, ενδεχομένως να απλοποιήσει το χειρισμό σφαλμάτων σε ένα δομημένο πλαίσιο.

Συνοπτικά, ενώ και τα δύο plugins χειρίζονται ασύγχρονα 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-to-connect-reconnect-to-devic