Table of Contents
Η διάρκεια ζωής της μπαταρίας παραμένει ένας από τους πιο κρίσιμους παράγοντες στη χρηστικότητα της κινητής συσκευής, ειδικά για τους χρήστες που βασίζονται στις εφαρμογές iOS όλη την ημέρα. Καθώς οι εφαρμογές γίνονται πιο πλούσιες σε χαρακτηριστικά, η ζήτηση για συνεχή επεξεργασία, δραστηριότητα δικτύου και υψηλής ανάλυσης γραφικά αυξάνεται, οδηγώντας σε ταχύτερη αποστράγγιση μπαταρίας. Αυτό όχι μόνο αποτρέπει τους χρήστες, αλλά μπορεί επίσης να οδηγήσει σε χαμηλότερα ποσοστά κατακράτησης και αρνητικές κριτικές. Ευτυχώς, ένας συνδυασμός καλά καθιερωμένων βέλτιστων πρακτικών και σύγχρονων iOS APIs επιτρέπει στους προγραμματιστές να μειώσουν σημαντικά την κατανάλωση ενέργειας χωρίς να θέτουν σε κίνδυνο τις επιδόσεις των εφαρμογών. Αυτό το άρθρο διερευνά τις κύριες πηγές της διαρροής μπαταρίας σε εφαρμογές iOS και παρέχει στρατηγικές για βελτιστοποίηση της ζωής της μπαταρίας κατά τη διάρκεια της συνεχούς χρήσης.
Κατανόηση Κατανάλωσης Μπαταριών σε iOS εφαρμογές
Για να βελτιστοποιήσουν τη διάρκεια ζωής της μπαταρίας, οι προγραμματιστές πρέπει πρώτα να κατανοήσουν πώς οι εφαρμογές iOS καταναλώνουν ενέργεια. Σχεδόν κάθε λειτουργία σε μια συσκευή αντλεί ενέργεια από την μπαταρία, αλλά ορισμένες δραστηριότητες είναι πολύ πιο απαιτητικές από άλλες. Οι κύριες κατηγορίες κατανάλωσης της μπαταρίας περιλαμβάνουν:
- Εμφάνιση και Backlight: Η οθόνη είναι συχνά ο μεγαλύτερος καταναλωτής ενέργειας. Υψηλή φωτεινότητα, μεγάλη οθόνη-on φορές, και συχνές επαναλήψεις από κινούμενα σχέδια ή αναποτελεσματική UI ενημερώσεις όλες αύξηση της αποχέτευσης.
- Δίκτυο Δραστηριότητα: Τα μόντεμ και τα ⁇ διόφωνα Wi-Fi χρησιμοποιούν σημαντική ισχύ κατά τη μετάδοση ή λήψη δεδομένων.Συχνές, μικρές κλήσεις δικτύου είναι ιδιαίτερα αναποτελεσματικές επειδή το ⁇ πρέπει να τροφοδοτεί, να συνδέει και να τροφοδοτεί ξανά για κάθε συνεδρία.
- Εργασίες υποβάθρου: Οι εφαρμογές που συνεχίζουν να εκτελούν διεργασίες στο παρασκήνιο — όπως ενημερώσεις τοποθεσίας, ανάκτηση φόντου ή συνδέσεις VoIP ⁇ μπορούν να εμποδίσουν την είσοδο της συσκευής σε κατάσταση χαμηλής ισχύος.
- CPU και GPU Load: Πολύπλοκοι υπολογισμοί, βαριά απόδοση γραφικών, και υπερβολικόι βρόχοι διατηρούν τον επεξεργαστή ενεργό, ελκτική δύναμη ανάλογη με το φορτίο.
- Χρήση αισθητήρων: Συνεχής πρόσβαση σε αισθητήρες όπως GPS, επιταχυνσιόμετρο ή μικρόφωνο μπορεί να στραγγίσει γρήγορα την μπαταρία, ειδικά αν η εφαρμογή δεν διαχειρίζεται τους ρυθμούς δειγματοληψίας ή να χρησιμοποιήσει τα σωστά επίπεδα ακρίβειας.
Ο προσδιορισμός ποιο από αυτά τα συστατικά είναι ο κύριος ένοχος στην εφαρμογή σας απαιτεί προφίλ με εργαλεία όπως η καρτέλα Διαγνωστικών Ενέργειας του Xcode στα όργανα. Το αρχείο καταγραφής ενέργειας εμφανίζει λεπτομερείς αναλύσεις της χρήσης ΚΜΕ, της δραστηριότητας του δικτύου, και της χρήσης τοποθεσίας με την πάροδο του χρόνου, επιτρέποντας στοχευμένη βελτιστοποίηση.
Βασικές στρατηγικές για προγραμματιστές
Η αποτελεσματική βελτιστοποίηση της μπαταρίας περιλαμβάνει μια προσέγγιση με στρώσεις: χρήση ενεργειακά αποδοτικών API, μείωση περιττών εργασιών και σεβόμενες καταστάσεις ισχύος του συστήματος.
Ελαχιστοποίηση δραστηριότητας φόντου
Η εκτέλεση φόντου είναι μια μεγάλη διαρροή μπαταριών. Το iOS παρέχει αρκετούς μηχανισμούς για εργασία στο παρασκήνιο, αλλά ο καθένας θα πρέπει να χρησιμοποιείται συνετή. Η ανάκτηση υποβάθρου[[LFT:1] επιτρέπει στις εφαρμογές να κατεβάζουν μικρές ποσότητες δεδομένων περιοδικά, αλλά η συχνότητα είναι διαχειριζόμενη από το σύστημα. Ορίστε τις [[LFT:0]]] στο μεγαλύτερο αποδεκτό διάστημα (π.χ., [[LFT:1]] αν δεν απαιτούνται ενημερώσεις στο παρασκήνιο). Για εργασίες που απαιτούν πραγματικά ολοκλήρωση του υποβάθρου, χρησιμοποιήστε [[[LFT:2] Εργασίες στο πλαίσιο (BGTaskScheduler)[LT:3]] αντί να διατηρείτε ζωντανή την εφαρμογή. Αυτό το API αναβάλλει το έργο σε χρόνους όταν το σύστημα έχει επαρκή προϋπολογισμό ενέργειας, μειώνοντας την παρέμβαση με δραστηριότητα προσκηνίου που αντιμετωπίζει ο χρήστης.
Αν η εφαρμογή σας χρησιμοποιεί υπηρεσίες τοποθεσίας, επιλέξτε το κατάλληλο επίπεδο ακρίβειας. Αντί για συνεχείς ενημερώσεις GPS υψηλής ακρίβειας, χρησιμοποιήστε [[LFT:0]] παρακολούθηση περιοχής[ ή υπηρεσία τοποθεσίας σημαντικής αλλαγής[[LFT:3]] για την παρακολούθηση της τοποθεσίας χονδροειδής. Για παράδειγμα, μια εφαρμογή φυσικής κατάστασης που χρειάζεται μόνο να γνωρίζει πότε ένας χρήστης εισέρχεται ή αφήνει ένα πάρκο μπορεί να χρησιμοποιήσει την παρακολούθηση περιοχής, η οποία είναι πολύ πιο αποτελεσματική από τη συνεχή δημοσκόπηση GPS. Επίσης, εξετάστε το ενδεχόμενο καθορισμού της [[LFT:2] ιδιότητας του [[LFT:3]] σε [[LFT:4]] — αυτό λέει στο iOS να βελτιστοποιήσει την ισχύ για πεζούς ή ποδηλάτες.
Βελτιστοποίηση χρήσης δικτύου
Οι λειτουργίες του δικτύου είναι μια τεράστια διαρροή μπαταρίας, ειδικά πάνω από κυψελοειδή. Εφαρμογή αυτών των βέλτιστων πρακτικών:
- Αιτήματα δικτύου Batch: Αντί να κάνει πολλές μικρές κλήσεις API, συγκεντρωτικά δεδομένα σε λιγότερες, μεγαλύτερες αιτήσεις. Το ⁇ ξοδεύει λιγότερο χρόνο σε λειτουργία μεταφοράς υψηλής ισχύος όταν μπορεί να στείλει μια έκρηξη δεδομένων και στη συνέχεια να αδρανήσει.
- Χρησιμοποιήστε προοδευτικά downloads: Για μεγάλα περιουσιακά στοιχεία όπως εικόνες ή αρχεία βίντεο, κατεβάστε μόνο τα δεδομένα που χρειάζονται αμέσως. Χρησιμοποιήστε τα ranges (Αιτήματα εύρους HTTP) ή τα APIs που γνωρίζουν το μέγεθος.
- Ενεργοποιήσιμο HTTP / 2 ή QUIC: Αυτά τα πρωτόκολλα μειώνουν την εναέρια σύνδεση και επιτρέπουν πολυπλεγμένη ροή, μειώνοντας την κατανάλωση ενέργειας ανά αίτημα.
- Adopt NSURLSession accorable: Χρησιμοποιήστε συνεδρίες φόντου για μεταφορές που θα πρέπει να συνεχιστούν ακόμα και αν η εφαρμογή ανασταλεί. Για συνεδρίες σε πρώτο πλάνο, ρυθμίστε κατάλληλα και χρησιμοποιήστε για να αποφύγετε τις επαναστάσεις κατά τη διάρκεια κακής συνδεσιμότητας.
- Πιέστε τα ωφέλιμο φορτίο: Χρησιμοποιήστε συμπίεση gzip ή Brotli στην πλευρά του διακομιστή. Μικρότερα δεδομένα μειώνουν το χρόνο μετάδοσης και τη ραδιοδύναμη.
Σκεφτείτε τη χρήση ειδοποιήσεων push[[LFT:1]] αντί για δημοσκόπηση. Το Push είναι πιο ενεργειακά αποδοτικό, επειδή το σύστημα διατηρεί μια μόνο σταθερή σύνδεση για όλες τις εφαρμογές, και η εφαρμογή ξυπνά μόνο όταν νέα δεδομένα φθάνουν. Για μη κρίσιμες ενημερώσεις, χρησιμοποιήστε [[LFT:2]] την background push με απομακρυσμένες ειδοποιήσεις[[LFT:3]] (σιωπηλά πιέσεις) με φειδώ, καθώς καταναλώνουν ακόμα ισχύ για επεξεργασία.
Αποτελεσματική Εκτέλεση Κώδικα
Οι αναποτελεσματικοί αλγόριθμοι και η υπερβολική χρήση της ΚΜΕ είναι κρυμμένες αποχετεύσεις μπαταριών. Προφίλ του κώδικα σας με [[LFT:0]]]Χρονικό Προφίλ του Xcode[[LFT:1]] για τον εντοπισμό hotspots. Τα κοινά ζητήματα περιλαμβάνουν:
- Απαραίτητα polling loops:[[LFT:1]] Χρησιμοποιήστε χρονόμετρα μόνο όταν είναι αναπόφευκτο· προτιμάτε εκπρόσωπους να τηλεφωνούν ή να επαναλαμβάνουν ότι το σύστημα πυροδοτεί όταν αλλάζουν οι συνθήκες.
- Βαρύς υπολογισμός στο κύριο νήμα:[[LFT:1]] Εκφόρτωση εργασιών σε ουρές υποβάθρου (χρησιμοποιώντας [[LFT:7]] ή [[LFT:8]]) για να κρατήσει τον κύριο βρόχο ελεύθερο για ενημερώσεις UI.
- Τεμπέλης φόρτωση: Φόρτωση πόρων (εικόνες, μοντέλα δεδομένων, ελεγκτές προβολής) μόνο όταν απαιτείται παρά προφόρτωση των πάντων κατά την έναρξη της εφαρμογής.
- Μειώστε την κατασκευή αντικειμένων σε γενικές γραμμές: Επαναχρησιμοποιήστε αντικείμενα όπου είναι δυνατόν, ιδιαίτερα σε στενούς βρόχους (π.χ. κατά την επεξεργασία δεδομένων από αισθητήρες).
Για λειτουργίες υψηλής συχνότητας όπως το Core ML ή η εκτέλεση μεταλλικών σκίασης, οι συσκευές iOS έχουν ειδικό υλικό (Νεοαστική μηχανή, GPU) που είναι πολύ πιο αποδοτική από την CPU. Βεβαιωθείτε ότι χρησιμοποιείτε το καταλληλότερο API για το φόρτο εργασίας σας - για παράδειγμα, χρησιμοποιώντας [[LFT:0]] Έλεγχος συσκευών[[LFT:1]] ή [[LFT:2]]ARKit με επιτάχυνση υλικού είναι καλύτερη από τις προσαρμοσμένες λύσεις που βασίζονται στην CPU.
Αποτελεσματικά APIs
Το iOS προσφέρει διάφορα API που έχουν σχεδιαστεί ειδικά για χαμηλή κατανάλωση ενέργειας. Χρησιμοποιώντας αυτά μπορείτε να αποθηκεύσετε αυτόματα μπαταρία χωρίς προσαρμοσμένη βελτιστοποίηση:
- ΑΠΑΝΤΗΣΗ με διαμόρφωση φόντου: Όπως αναφέρθηκε, χειρίζεται μεταφορές σε μια ξεχωριστή διαδικασία που είναι λιγότερο έντονη από την δραστηριότητα του πρώτου σταδίου.
- AVCaptureSession ⁇ .photo output: Όταν χρησιμοποιείτε την κάμερα, επιλέξτε την προεπιλογή για ακίνητες εικόνες αντί για βίντεο — το βίντεο απαιτεί συνεχή ανάγνωση και επεξεργασία αισθητήρων, η οποία αποστραγγίζεται γρήγορα.
- Τοποθεσία Κορεσμού ⁇ αναβαλλόμενες ενημερώσεις: Όταν εκτελείται στο παρασκήνιο, οι ενημερώσεις τοποθεσίας μπορούν να αναβληθούν με τη χρήση . Αυτή η παρτίδα ενημερώνει σε λιγότερες αφυπνίσεις.
- Ενεργειακά ταμπλό: Χρησιμοποιήστε το ] για να προσαρμόσετε τη συμπεριφορά της εφαρμογής όταν ο χρήστης έχει ενεργοποιήσει τη λειτουργία χαμηλής ισχύος. Μειώστε κινούμενα σχέδια, χαμηλότερους ρυθμούς καρέ, απενεργοποιήστε μη απαραίτητο συγχρονισμό, ή μεταβείτε σε πόρους χαμηλότερης ποιότητας.
Βελτιστοποιήσεις υλικού μόχλευσης
Τα σύγχρονα iPhones περιλαμβάνουν υλικό διαχείρισης ισχύος όπως οι συνεπεξεργαστές κίνησης [[LFT:0]]M-σειρών [[LFT:1]]] και εξειδικευμένους κωδικοποιητές/αποκωδικοποιητές. Η επεξεργασία δεδομένων εκτός φορτίου σε αυτές τις μονάδες όποτε είναι δυνατόν. Για παράδειγμα, χρησιμοποιήστε [[LFT:12]] με την επιτάχυνση υλικού H.264/H.265 κωδικοποίηση αντί για κωδικοποίηση λογισμικού. Ομοίως, τα μοντέλα Core ML μπορούν να λειτουργήσουν στον Νευρικό Κινητήρα μέσω του τύπου συσκευής [[LFT:13]] για συμπέρασμα, ο οποίος χρησιμοποιεί ένα κλάσμα της ισχύος της GPU ή της CPU.
Επίσης, εξετάστε Μεταλλικά skaders απόδοσης για επεξεργασία εικόνας ⁇ τρέχουν στο GPU, το οποίο είναι πιο ενεργειακά αποδοτικό από την CPU για παράλληλο φόρτο εργασίας. Πάντα δοκιμάζονται σε φυσικές συσκευές, καθώς ο Προσομοιωτής δεν μοντελοποιεί τη συμπεριφορά ισχύος με ακρίβεια.
Συμβουλές και ρυθμίσεις που αντιμετωπίζουν τον χρήστη
Ενώ οι προγραμματιστές ελέγχουν μεγάλο μέρος της κατανάλωσης ενέργειας, οι χρήστες έχουν επίσης επιλογές για να επεκτείνουν τη διάρκεια ζωής της μπαταρίας κατά τη διάρκεια της χρήσης της εφαρμογής.
- Χαμηλότερη φωτεινότητα οθόνης: Ενθαρρύνετε τους χρήστες να μειώσουν χειροκίνητα τη φωτεινότητα ή να ενεργοποιήσουν την αυτόματη φρόνηση ( ⁇ υθμίσεις > Εμφάνιση & Φωτεινότητα).
- Ενεργή λειτουργία χαμηλής ισχύος: Προτείνετε την ενεργοποίηση της λειτουργίας χαμηλής ισχύος όταν αναμένουν συνεχή χρήση ( ⁇ υθμίσεις > Μπαταρία). Το σύστημα θα μειώσει αυτόματα τη δραστηριότητα και την απόδοση του φόντου.
- Μειώστε το ρυθμό ανανέωσης: Για συσκευές με οθόνη ProMotion (120Hz), οι χρήστες μπορούν να περιορίσουν το ρυθμό καρέ σε 60Hz σε ⁇ > Προσβασιμότητα > Κίνηση > Οριακή Ρυθμός Πλαίσιο. Οι εφαρμογές μπορούν επίσης να το σεβαστούν αυτό, απενεργοποιώντας κινούμενα σχέδια 120Hz όταν δεν χρειάζεται.
- Κλείσε περιττές εφαρμογές: Αν και το iOS χειρίζεται αποτελεσματικά το multitasking, οι εφαρμογές φόντου καταναλώνουν ακόμα κάποιους πόρους.
- Απενεργοποιήστε περιττές υπηρεσίες: Bluetooth, Wi-Fi, και υπηρεσίες τοποθεσίας μπορούν να απενεργοποιηθούν όταν δεν χρειάζεται. Για την τοποθεσία, οι χρήστες μπορούν να ορίσουν άδειες εφαρμογής για “Ενώ χρησιμοποιείτε” αντί για “Πάντα”.
Μπορείτε επίσης να προσθέσετε ] ανίχνευση λειτουργίας χαμηλής ισχύος[] στην εφαρμογή σας για να μειώσετε αυτόματα τη χρήση πόρων (π.χ. χαμηλότερη ποιότητα βίντεο, να σταματήσετε τον συγχρονισμό, να μειώσετε τη συχνότητα δημοσκόπησης).
Συμπέρασμα
Βελτιστοποίηση της ζωής της μπαταρίας σε εφαρμογές iOS δεν είναι μια μονόχρονη εργασία αλλά μια συνεχής διαδικασία που απαιτεί την κατανόηση της αλληλεπίδρασης μεταξύ υλικού, υπηρεσιών συστήματος και κώδικα εφαρμογών. Με την κατάρτιση προφίλ νωρίς, χρησιμοποιώντας αποδοτικά APIs, ελαχιστοποιώντας τις επιλογές υποβάθρου, και σεβόμενοι τις επιλογές διαχείρισης ισχύος των χρηστών, οι προγραμματιστές μπορούν να δημιουργήσουν εφαρμογές που παρέχουν εξαιρετικές εμπειρίες συνεχούς χρήσης χωρίς να στραγγίζουν την μπαταρία. Αυτές οι πρακτικές βελτιώνουν την ικανοποίηση των χρηστών, μειώνουν το τσουρν και βοηθούν τις συσκευές διαρκούν περισσότερο μεταξύ των φορτίων. Για περισσότερες λεπτομέρειες, ανατρέξτε στην επίσημη τεκμηρίωση της Apple Energy Diagnostics και την App Life Cycle], καθώς και την Batty State API].