Background Modes — είναι ένα σύνολο δηλώσιμων δυνατοτήτων iOS που επιτρέπουν στην εφαρμογή να συνεχίσει την εκτέλεση κώδικα μετά τη μετάβαση σε λειτουργία παρασκηνίου. Κάθε λειτουργία αντιστοιχεί σε έναν συγκεκριμένο τύπο εργασίας: ήχος, γεωτοποθεσία, VoIP, Bluetooth, fetch και processing. Σύμφωνα με την Apple, 2026, η λανθασμένη χρήση των Background Modes είναι μία από τις συχνές αιτίες απόρριψης εφαρμογών κατά την αναθεώρηση στο App Store.
Κύρια σημεία
Background Modes — είναι capability του έργου Xcode που δηλώνουν την πρόθεση της εφαρμογής να εκτελεί συγκεκριμένους τύπους λειτουργιών παρασκηνίου. Σε αντίθεση με το Android, όπου η εφαρμογή μπορεί να εκκινήσει οποιοδήποτε Service στο παρασκήνιο, το iOS απαιτεί ρητή αναφορά της λειτουργίας στο Info.plist. Κάθε λειτουργία έχει αυστηρούς κανόνες χρήσης και ελέγχεται από την Apple κατά την αναθεώρηση.
Όταν η εφαρμογή μεταβαίνει στο παρασκήνιο, το iOS την αναστέλλει μετά από 3–5 δευτερόλεπτα. Εάν η εφαρμογή δηλώνει Background Mode και χρησιμοποιεί ενεργά το αντίστοιχο API (π.χ. AVAudioSession για ήχο), το σύστημα τη μεταφέρει σε ειδική λειτουργία εκτέλεσης. Η εφαρμογή παραμένει στη μνήμη RAM και μπορεί να εκτελεί κώδικα που περιορίζεται από τον τύπο λειτουργίας.
Το iOS υποστηρίζει τα ακόλουθα Background Modes: Audio, Location, VoIP, Bluetooth LE, Background Fetch, Background Processing, External Accessory Communication, Push to Talk (PTT) και HealthKit. Κάθε λειτουργία απαιτεί αιτιολόγηση στην περιγραφή της εφαρμογής.
| Λειτουργία | Κλειδί Info.plist | Σκοπός | Έκδοση iOS |
|---|---|---|---|
| Audio | audio | Ήχος παρασκηνίου, AirPlay | 4.0+ |
| Location | location | Παρακολούθηση τοποθεσίας | 4.0+ |
| VoIP | voip | Ειδοποιήσεις Push VoIP | 4.0+ |
| BLE | bluetooth-central | Εργασία με συσκευές BLE | 7.0+ |
| Fetch | fetch | Περιοδική λήψη δεδομένων | 7.0+ |
| Processing | processing | Μακροχρόνιες εργασίες παρασκηνίου | 13.0+ |
| Push to Talk | push-to-talk | Φωνητικό push-to-talk | 16.0+ |
Audio Background Mode — η πιο διαδεδομένη λειτουργία, που χρησιμοποιείται από μουσικές συσκευές αναπαραγωγής, εφαρμογές podcast και υπηρεσίες ήχου. Η εφαρμογή μπορεί να συνεχίσει την αναπαραγωγή ήχου, να ελέγχεται μέσω Control Center και να εμφανίζεται στην οθόνη Lock Screen. Για ενεργοποίηση, αρκεί να ρυθμίσετε το AVAudioSession με την κατηγορία .playback.
Για λειτουργία ήχου στο παρασκήνιο, πρέπει να ρυθμίσετε το AVAudioSession και να το ενεργοποιήσετε. Η κατηγορία .playback ενημερώνει το σύστημα ότι η εφαρμογή αναπαράγει ήχο και πρέπει να παραμείνει ενεργή στο παρασκήνιο. Χωρίς αυτή τη ρύθμιση, ο ήχος θα σταματήσει εντός 5–10 δευτερολέπτων μετά την ελαχιστοποίηση της εφαρμογής.
import AVFoundation
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playback,
mode: .default,
options: []
)
try session.setActive(true)
} catch {
print("Σφάλμα συνεδρίας ήχου: \(error)")
}
}
Για ενοποίηση με το Control Center και την οθόνη Lock Screen, πρέπει να ρυθμίσετε το MPRemoteCommandCenter. Αυτό επεξεργάζεται τις εντολές Play, Pause, Next και Previous Track. Επίσης, πρέπει να ενημερώσετε το MPNowPlayingInfoProperty για εμφάνιση μεταδεδομένων: τίτλος τραγουδιού, καλλιτέχνης, εξώφυλλο και πρόοδος αναπαραγωγής.
Από το iOS 14, το Background Mode ήχου υποστηρίζει επίσης Picture in Picture για βίντεο. Η εφαρμογή μπορεί να συνεχίσει να εμφανίζει βίντεο σε ένα πλωτό παράθυρο κατά την ελαχιστοποίηση. Για ενεργοποίηση, χρησιμοποιήστε το AVPictureInPictureController με AVPlayerLayer. Η λειτουργία λειτουργεί μόνο εάν η εφαρμογή αναπαράγει ηχητικό κομμάτι.
Location Background Mode επιτρέπει στην εφαρμογή να λαμβάνει ενημερώσεις γεωτοποθεσίας στο παρασκήνιο. Χρησιμοποιείται σε πλοηγούς, ιχνηλάτες fitness, εφαρμογές παράδοσης και κοινωνικά δίκτυα. Χωρίς αυτή τη λειτουργία, η εφαρμογή λαμβάνει τοποθεσία μόνο μία φορά κατά τη μετάβαση στο παρασκήνιο, μετά την οποία σταματούν οι ενημερώσεις.
Το CLLocationManager υποστηρίζει διάφορες στρατηγικές παρακολούθησης: σημαντικές αλλαγές (significant-change location), τυπική παρακολούθηση (standard location) και παρακολούθηση περιοχής (region monitoring). Για εργασία παρασκηνίου με μέγιστη ακρίβεια, χρησιμοποιήστε allowsBackgroundLocationUpdates = true και pausesLocationUpdatesAutomatically = false.
Η συνεχής παρακολούθηση τοποθεσίας στο παρασκήνιο είναι ένα από τα πιο ενεργοβόρα σενάρια. Το iOS προσαρμόζει αυτόματα τη συχνότητα ενημέρωσης ανάλογα με την ταχύτητα κίνησης: στο περπάτημα κάθε 10–30 δευτερόλεπτα, στην οδήγηση κάθε 1–5 δευτερόλεπτα. Για πλοήγηση, χρησιμοποιήστε desiredAccuracy = kCLLocationAccuracyBestForNavigation.
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()
Η λειτουργία significant-change location λειτουργεί χωρίς Location Background Mode — το σύστημα αφυπνίζει την εφαρμογή μόνο σε σημαντική αλλαγή συντεταγμένων (συνήθως 500 m ή περισσότερο). Δεν απαιτεί συνεχή ενεργοποίηση GPS, εξοικονομώντας μπαταρία. Κατάλληλο για εφαρμογές καιρού που ενημερώνουν δεδομένα όταν ο χρήστης μετακινείται.
Bluetooth LE Background Mode επιτρέπει στην εφαρμογή να αλληλεπιδρά με συσκευές BLE στο παρασκήνιο. Χρησιμοποιείται από βραχιόλια fitness, ιατρικούς αισθητήρες, συσκευές Smart Home και πλοήγηση Beacon. Η λειτουργία χωρίζεται σε δύο υποτύπους: bluetooth-central (η εφαρμογή συνδέεται με συσκευές) και bluetooth-peripheral (η εφαρμογή λειτουργεί ως συσκευή).
Η εφαρμογή σε ρόλο Central μπορεί να σαρώνει και να συνδέεται με συσκευές BLE στο παρασκήνιο. Για αυτό, πρέπει να καθορίσετε το bluetooth-central στα Background Modes και να καλέσετε CBCentralManager.scanForPeripherals με την επιλογή CBCentralManagerScanOptionAllowDuplicatesKey. Στο παρασκήνιο, η σάρωση λειτουργεί με μειωμένη συχνότητα — το σύστημα μπορεί να καθυστερήσει την ανίχνευση για εξοικονόμηση ενέργειας.
Η εφαρμογή σε ρόλο Peripheral μπορεί να διαφημίζει υπηρεσίες και να απαντά σε αιτήματα άλλων συσκευών. Η λειτουργία bluetooth-peripheral επιτρέπει στην εφαρμογή να παραμένει ορατή για άλλες συσκευές BLE ακόμα και στο παρασκήνιο. Χρησιμοποιείται σε εφαρμογές HealthKit και λύσεις IoT.
Η παρακολούθηση iBeacon λειτουργεί στο παρασκήνιο χωρίς πρόσθετες άδειες — το σύστημα παρακολουθεί μόνο του την είσοδο και έξοδο από την περιοχή Beacon. Αλλά για σάρωση περιεχομένου Beacon (proximity UUID, major, minor) απαιτείται άδεια Bluetooth και bluetooth-central Background Mode. Χρησιμοποιήστε CLLocationManager με CLBeaconRegion για παρακολούθηση.
VoIP Background Mode προορίζεται για εφαρμογές φωνητικής επικοινωνίας (Skype, Zoom, WhatsApp). Η λειτουργία επιτρέπει στην εφαρμογή να παραμένει συνδεδεμένη στον διακομιστή για λήψη εισερχόμενων κλήσεων. Από το iOS 8, για VoIP χρησιμοποιείται το PushKit — ένα πλαίσιο που επεξεργάζεται ειδοποιήσεις Push από τον διακομιστή VoIP χωρίς τη συμμετοχή APNs.
Το PushKit είναι ο μοναδικός μηχανισμός που εγγυάται την παράδοση ειδοποίησης VoIP στη συσκευή. Κατά τη λήψη ειδοποίησης PushKit, το σύστημα αφυπνίζει την εφαρμογή, ακόμα κι αν αυτή είχε τερματιστεί. Η εφαρμογή πρέπει να συνδεθεί στον διακομιστή εντός 30 δευτερολέπτων και να εμφανίσει μια τοπική ειδοποίηση για την εισερχόμενη κλήση.
import PushKit
class VoIPHandler: NSObject, PKPushRegistryDelegate {
func pushRegistry(
_ registry: PKPushRegistry,
didReceiveIncomingPushWith payload: PKPushPayload,
for type: PKPushType,
completion: @escaping () -> Void
) {
let caller = payload.dictionaryPayload["caller"] as! String
reportIncomingCall(from: caller)
completion()
}
}
Το PushKit δεν μπορεί να χρησιμοποιηθεί για συνηθισμένες ειδοποιήσεις — μόνο για VoIP, επικοινωνίες watchOS και παρόχους αρχείων. Η Apple το ελέγχει κατά την αναθεώρηση. Σε περίπτωση μη εξουσιοδοτημένης χρήσης, η εφαρμογή απορρίπτεται. Από το iOS 13, το PushKit μόνο παραδίδει την ειδοποίηση — η κλήση CXProvider (CallKit) για εμφάνιση οθόνης κλήσης είναι υποχρεωτική.
Background Fetch και Background Processing — λειτουργίες για ενημέρωση περιεχομένου στο παρασκήνιο και εκτέλεση μακροχρόνιων εργασιών. Fetch — σύντομες περιοδικές ενημερώσεις (έως 30 δευτ.), Processing — μακροχρόνιες εργασίες (έως 10 λεπτά) με συνθήκες (Wi-Fi, φόρτιση). Το Processing είναι διαθέσιμο μόνο από iOS 13+.
Η λειτουργία Fetch επιτρέπει στο σύστημα να αφυπνίζει περιοδικά την εφαρμογή για λήψη νέου περιεχομένου. Το σύστημα αναλύει τη συμπεριφορά του χρήστη και επιλέγει τον βέλτιστο χρόνο. Η εφαρμογή πρέπει να καλέσει τον completion handler εντός 30 δευτερολέπτων. Το Fetch είναι κατάλληλο για εφαρμογές ειδήσεων, ροές κοινωνικών δικτύων και καιρού.
Το BGProcessingTask προορίζεται για εργασίες που μπορούν να εκτελεστούν χωρίς συμμετοχή χρήστη: εκκαθάριση προσωρινής μνήμης, συγχρονισμός μεγάλης βάσης δεδομένων, επεξεργασία αρχείων πολυμέσων. Το σύστημα εκτελεί την εργασία μόνο υπό ευνοϊκές συνθήκες — η συσκευή φορτίζεται, συνδεδεμένη σε Wi-Fi, όχι σε λειτουργία Low Power. Διαθέσιμο έως 10 λεπτά.
Για BGProcessingTask πρέπει να καθορίσετε requiresExternalPower και requiresNetworkConnectivity. Το σύστημα μπορεί να καθυστερήσει την εκτέλεση για αόριστο χρόνο εάν δεν πληρούνται οι συνθήκες. Σε αντίθεση με το BGAppRefreshTask, το οποίο πρέπει να εκτελείται τουλάχιστον μία φορά την ημέρα, το Processing μπορεί να μην εκτελεστεί για εβδομάδες εάν η συσκευή φορτίζεται σπάνια.
Η Apple ελέγχει αυστηρά τη χρήση Background Modes κατά την αναθεώρηση εφαρμογών. Βασικός κανόνας: κάθε ενεργοποιημένη λειτουργία πρέπει να δικαιολογείται από τη λειτουργικότητα της εφαρμογής. Εάν μια εφαρμογή δηλώνει Location Mode αλλά δεν χρησιμοποιεί γεωτοποθεσία, θα απορριφθεί με αίτημα αφαίρεσης του capability.
Οι συχνότερες παραβιάσεις: Location Mode χωρίς προφανή ανάγκη (η εφαρμογή ζητά πρόσβαση για εμφάνιση διαφημίσεων), Audio Mode χωρίς αναπαραγωγή ήχου στο παρασκήνιο, VoIP χωρίς PushKit, BLE Mode χωρίς συσκευές Bluetooth. Η Apple μπορεί να απορρίψει την εφαρμογή ακόμα και στο στάδιο ενημέρωσης εάν η λειτουργία δεν χρησιμοποιείται πλέον.
Κατά την υποβολή για αναθεώρηση, δώστε στο Notes συγκεκριμένη αιτιολόγηση για κάθε λειτουργία. Για παράδειγμα, “Το Location Background Mode χρησιμοποιείται για παρακολούθηση της διαδρομής του χρήστη στη λειτουργία fitness”. Χωρίς εξήγηση, ο αξιολογητής μπορεί να απορρίψει την εφαρμογή. Για εμπιστευτικές λειτουργίες (VoIP), η Apple μπορεί να ζητήσει δοκιμαστικό λογαριασμό.
Χρησιμοποιήστε το ελάχιστο απαραίτητο σύνολο λειτουργιών. Εάν η εφαρμογή χρειάζεται λήψη δεδομένων στο παρασκήνιο μία φορά την ώρα — μην ενεργοποιείτε το Location Mode, χρησιμοποιήστε Fetch ή BGAppRefreshTask. Οι περιττές λειτουργίες όχι μόνο οδηγούν σε απόρριψη, αλλά δημιουργούν και αρνητική εντύπωση: ο χρήστης βλέπει στις ρυθμίσεις ότι η εφαρμογή χρησιμοποιεί γεωτοποθεσία στο παρασκήνιο.
Συχνές Ερωτήσεις
Δεν υπάρχει όριο στον αριθμό, αλλά κάθε λειτουργία πρέπει να δικαιολογείται από τη λειτουργικότητα της εφαρμογής. Η ενεργοποίηση όλων των λειτουργιών χωρίς ανάγκη είναι εγγυημένη αιτία απόρριψης κατά την αναθεώρηση. Πρακτικό όριο είναι 2–3 λειτουργίες ανά εφαρμογή, διαφορετικά ο χρήστης θα δει πολλαπλά αιτήματα αδειών.
Χρησιμοποιήστε το UIApplication.shared.applicationState — η εφαρμογή μπορεί να ελέγξει εάν βρίσκεται στο παρασκήνιο (state == .background). Μπορείτε επίσης να παρακολουθείτε τις ειδοποιήσεις UIApplication.didEnterBackgroundNotification και willEnterForegroundNotification για αλλαγή συμπεριφοράς.
Audio — αναπαραγωγή ήχου μέσω ηχείου ή ακουστικών. AirPlay — μετάδοση ήχου και βίντεο σε Apple TV και άλλες συσκευές AirPlay. Στην πράξη, το Audio Mode καλύπτει και τα δύο σενάρια, καθώς το AirPlay χρησιμοποιεί τη συνεδρία ήχου. Ξεχωριστή λειτουργία AirPlay δεν απαιτείται από iOS 7+.
Ναι, για αυτό χρησιμοποιήστε requestWhenInUseAuthorization() αντί για requestAlwaysAuthorization(). Η εφαρμογή θα λαμβάνει τοποθεσία μόνο στο προσκήνιο. Εάν χρειάζεται βραχυπρόθεσμη παρακολούθηση στο παρασκήνιο — καλέστε startUpdatingLocation() και σταματήστε στο willResignActive.
Κάθε λειτουργία αυξάνει την κατανάλωση ενέργειας. Location Mode — το πιο δαπανηρό, μπορεί να μειώσει τον χρόνο λειτουργίας κατά 30–50% σε συνεχή παρακολούθηση. Audio Mode — μέτριο (15–20%). Fetch και Processing — ελάχιστο (2–5%). BLE Mode — χαμηλό (5–10%) χάρη στην ενεργειακή απόδοση του Bluetooth LE.
Περίληψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης