Τι σημαίνει "Ανανεώσιμο"
Οι περισσότεροι χρήστες iPhone γνωρίζουν ενστικτωδώς ότι τραβώντας προς τα κάτω την οθόνη ανανεώνεται το περιεχόμενο σε πολλές εφαρμογές — αυτή είναι η κλασική κίνηση pull-to-refresh, και αυτό εννοούμε με "ανανεώσιμο". Οι προηγούμενες εκδόσεις του Splync δεν υποστήριζαν αυτή τη λειτουργία. Ο μόνος τρόπος για να ανανεώσετε την οθόνη ήταν να κλείσετε και να ανοίξετε ξανά την εφαρμογή. Αυτό δεν ήταν πολύ προβληματικό, καθώς η εφαρμογή σας κρατά συνδεδεμένους από την έκδοση Splync v1.3, αλλά δεν ήταν και ιδανικό. Δεδομένου ότι το Splync στοχεύει να είναι ο ευκολότερος τρόπος παρακολούθησης κοινών εξόδων, η ανανέωση της οθόνης πρέπει να είναι τελείως αβίαστη. Για αυτό εισάγαμε το pull-to-refresh στην έκδοση v1.10, κάνοντας το Splync πλήρως ανανεώσιμο.
Δύο τρόποι που το Splync ανανεώνει τα δεδομένα σας (Πλήρης Επαναφόρτωση / Ενημέρωση Προβολής)
Στην αρχική οθόνη — όπου βλέπετε τη φωτογραφία προφίλ σας, τη λίστα φίλων και τη λίστα έργων — το pull-to-refresh πραγματοποιεί πλήρη επαναφόρτωση. Ανακτά ξανά όλα τα δεδομένα του λογαριασμού, παρόμοια με την αποσύνδεση και επανασύνδεση. Εξαιτίας αυτού, η ανανέωση μπορεί να διαρκέσει περίπου ένα δευτερόλεπτο ενώ εμφανίζεται το μήνυμα φόρτωσης. Σε μια οθόνη έργου, όπου εμφανίζεται η λίστα εξόδων σας, η ίδια κίνηση προς τα κάτω ενεργοποιεί μια ελαφρύτερη ενημέρωση προβολής. Μόνο τα δεδομένα που σχετίζονται με το έργο ανανεώνονται, όπως αλλαγές κατηγοριών και ενημερώσεις εξόδων. Δεν χρειάζεται να περιμένετε ένα ολόκληρο δευτερόλεπτο μόνο για να δείτε αν κάποιος πρόσθεσε ένα νέο έξοδο. Επίσης σημειώστε: το Splync δεν ανακτά αυτόματα δεδομένα έργου από το διακομιστή στο παρασκήνιο. Η εφαρμογή ελέγχει για ενημερώσεις μόνο όταν κάνετε αλλαγές, όταν ανοίγετε ένα έξοδο για να δείτε τις λεπτομέρειές του ή όταν ανανεώνετε χειροκίνητα τη σελίδα έργου.
Γιατί όχι συγχρονισμός σε πραγματικό χρόνο
Ορισμένοι χρήστες μπορεί να περιμένουν ενημερώσεις έργου να εμφανίζονται άμεσα όταν ένας φίλος προσθέτει ένα νέο έξοδο. Ο συγχρονισμός σε πραγματικό χρόνο ακούγεται βολικός, αλλά συνοδεύεται από σημαντικά συμβιβασμούς. Οι συνεχείς ενημερώσεις στο παρασκήνιο απαιτούν περισσότερη μπαταρία, περισσότερα δεδομένα κινητής τηλεφωνίας και μια πιο περίπλοκη σύνδεση διακομιστή που μπορεί να επιβραδύνει την εφαρμογή για όλους. Η προσέγγιση κατά παραγγελία του Splync διατηρεί την εμπειρία ελαφριά και άμεση και αποτρέπει την ξαφνική αλλαγή της οθόνης ενώ εξετάζετε τον προϋπολογισμό σας. Υπάρχουν επίσης ζητήματα ασφαλείας. Η διατήρηση μιας συνεχούς σύνδεσης με τον διακομιστή αυξάνει το παράθυρο έκθεσης για μη εξουσιοδοτημένη πρόσβαση και απαιτεί πρόσθετη λογική αυθεντικοποίησης να λειτουργεί στο παρασκήνιο. Ανανεώνοντας μόνο όταν ενεργείτε, το Splync ελαχιστοποιεί την περιττή δικτυακή δραστηριότητα και διατηρεί την πρόσβαση στα δεδομένα πιο προβλέψιμη και ελεγχόμενη.
Πίσω από τον κώδικα του .refreshable
Στην αρχή, νόμιζα ότι αυτή η ενημέρωση θα ήταν απλή. Στη Swift, τη γλώσσα που χρησιμοποιείται για την ανάπτυξη iOS, μπορείτε να ενεργοποιήσετε το pull-to-refresh απλά προσθέτοντας τον τροποποιητή .refreshable σε ένα ScrollView ή List. Ωστόσο, δεν λειτουργούσε όπως περίμενα. Μετά από εις βάθος διερεύνηση του ζητήματος, κατάλαβα την αιτία. Ήθελα να προσθέσω το pull-to-refresh σε όλη την πάνω οθόνη, που περιλαμβάνει τη λίστα φίλων και τη λίστα έργων. Αλλά στον αρχικό σχεδιασμό, και τα δύο στοιχεία ήταν επίσης με δυνατότητα κύλισης. Ως αποτέλεσμα, το .refreshable δεν ήξερε σε ποια περιοχή κύλισης ανήκε και η κίνηση δεν ανιχνευόταν συνεπώς. Για να το διορθώσω, αναδόμησα τη λίστα φίλων και τη λίστα έργων ώστε να μην είναι πλέον με δυνατότητα κύλισης από μόνα τους. Αυτό είναι ασφαλές επειδή η ανώτατου επιπέδου προβολή κυλά όταν το περιεχόμενο υπερβαίνει το ύψος της οθόνης. Αφού απλοποίησα τη δομή και εξασφάλισα ότι υπήρχε μόνο ένα δοχείο κύλισης, το .refreshable τελικά λειτούργησε όπως προοριζόταν. Πρόσθεσα επίσης ένα τυπικό κουμπί ανανέωσης ώστε οι χρήστες να μπορούν απλά να πατήσουν για ανανέωση.
Δεν λειτουργεί για σας το τράβηγμα; Τραβήξτε λίγο περισσότερο
Στις περισσότερες εφαρμογές iOS, το pull-to-refresh δεν ενεργοποιείται τη στιγμή που αρχίζετε να σύρετε. Το SwiftUI έχει ένα ενσωματωμένο όριο κίνησης: το σύστημα περιμένει μέχρι να σύρετε προς τα κάτω μια συγκεκριμένη απόσταση πριν ενεργοποιήσει την ανανέωση. Αυτό αποτρέπει τυχαίες ενημερώσεις όταν απλά αρχίζετε να σκρολάρετε από την κορυφή της οθόνης. Το Splync ακολουθεί αυτή τη στάνταρ συμπεριφορά. Μπορεί να παρατηρήσετε ότι ένα μικρό τράβηγμα δεν ανανεώνει το περιεχόμενο, αλλά ένα ελαφρώς μεγαλύτερο — αρκετά για να εμφανιστεί ο δείκτης ανανέωσης — θα ενεργοποιήσει την ενημέρωση. Αυτή η σχεδίαση διατηρεί τις αλληλεπιδράσεις σκόπιμες. Αποφεύγει ανεπιθύμητες ανανεώσεις, ειδικά σε οθόνες όπου οι χρήστες συχνά σκρολάρουν σε μεγάλες λίστες εξόδων ή έργων. Μόλις "υπερκαλύψετε" λίγο το πάνω όριο και εμφανιστεί ο δείκτης, η ανανέωση θα αρχίσει μόλις αφήσετε το δάχτυλό σας. Είναι μια μικρή λεπτομέρεια, αλλά συμβάλλει σε μια πιο ομαλή και προβλέψιμη εμπειρία. Για να το διευκρινίσω: δεν πρόκειται για το να τραβήξετε για περισσότερο χρόνο ή να εφαρμόσετε περισσότερη πίεση. Αυτό που έχει σημασία είναι να τραβήξετε μεγαλύτερη απόσταση.
Μια μικρή λειτουργία, προσεκτικά κατασκευασμένη
Η λειτουργία pull-to-refresh μπορεί να φαίνεται σαν μια μικρή αλληλεπίδραση, αλλά η κατασκευή της περιλάμβανε επιλογές σχεδίασης, τεχνική αναδιάρθρωση και έναν εκπληκτικό αριθμό παραμέτρων στα παρασκήνια. Η έκδοση Splync v1.10 κάνει την ανανέωση των δεδομένων σας να αισθάνεται φυσική, σκόπιμη και προβλέψιμη — ακριβώς όπως πρέπει να είναι η ευκολότερη εφαρμογή κοινής χρήσης προϋπολογισμού. Ελπίζω αυτή η ενημέρωση να σας προσφέρει μια πιο ομαλή εμπειρία και μια ματιά στην προσοχή που δίνεται σε κάθε λεπτομέρεια. Σας ευχαριστώ που χρησιμοποιείτε το Splync.