Το iCloud Drive είναι μια αποθήκευση αρχείων cloud της Apple, ενσωματωμένη σε iOS, macOS και iPadOS για συγχρονισμό εγγράφων μεταξύ των συσκευών του χρήστη. Σύμφωνα με τα δεδομένα Apple, 2024, το iCloud Drive χρησιμοποιεί το CloudKit ως backend για αποθήκευση αρχείων και αυτόματο συγχρονισμό: οι αλλαγές που γίνονται στο iPhone αντικατοπτρίζονται άμεσα σε Mac και iPad χωρίς ενέργειες από τον χρήστη. Οι προγραμματιστές μπορούν να ενσωματώσουν το iCloud Drive σε εφαρμογές μέσω NSDocumentPickerViewController και του API Ubiquity.
Κύρια
iCloud Drive είναι μια υπηρεσία αρχείων cloud της Apple που παρέχει ενοποιημένη αποθήκευση εγγράφων για όλες τις συσκευές του χρήστη που είναι εξουσιοδοτημένες με το ίδιο Apple ID. Η υπηρεσία ξεκίνησε το 2014 μαζί με iOS 8 και OS X Yosemite ως αντικατάσταση του iCloud Documents.
Το iCloud Drive διαφέρει από άλλες αποθηκεύσεις cloud (Google Drive, Dropbox) λόγω της βαθιάς ενσωμάτωσης με το λειτουργικό σύστημα: τα αρχεία εμφανίζονται απευθείας στο Finder σε macOS και στην εφαρμογή Αρχεία σε iOS, χωρίς να απαιτείται εγκατάσταση πρόσθετης εφαρμογής. Το σύστημα συγχρονίζει αυτόματα το περιεχόμενο στο παρασκήνιο, εναλλάσσοντας μεταξύ Wi-Fi και κινητού δικτύου.
Σύμφωνα με το Apple Platform Overview, 2024, το iCloud Drive υποστηρίζει έλεγχο εκδόσεων αρχείων έως 30 ημέρες, κοινή χρήση φακέλων μέσω iCloud Sharing και ενσωμάτωση με την αναζήτηση συστήματος Spotlight. Οι προγραμματιστές αποκτούν πρόσβαση στην αποθήκευση μέσω του API NSFileCoordinator και Ubiquity containers.
Ubiquity — όρος της Apple που υποδηλώνει την ικανότητα των δεδομένων να “είναι παντού” (από το αγγλικό ubiquitous). Στο πλαίσιο του iCloud Drive, είναι ένας μηχανισμός που επιτρέπει στα αρχεία να συγχρονίζονται αυτόματα μεταξύ όλων των συσκευών του χρήστη μέσω του backend cloud CloudKit.
| Στοιχείο | Περιγραφή | Ρόλος |
|---|---|---|
| Ubiquity container | Ειδικός κατάλογος εφαρμογής | Αποθηκεύει αρχεία για συγχρονισμό |
| CloudKit | Υπηρεσία backend Apple | Παρέχει αποθήκευση και συγχρονισμό |
| NSMetadataQuery | Ερώτημα συστήματος | Παρακολουθεί την κατάσταση αρχείων Ubiquity |
| NSFileVersion | Διαχείριση εκδόσεων | Επιλύει συγκρούσεις αλλαγών |
Ubiquity container είναι ένας κατάλογος μέσα στο Sandbox της εφαρμογής που έχει επισημανθεί για συγχρονισμό. Τα αρχεία που τοποθετούνται σε αυτόν τον κατάλογο ανεβαίνουν αυτόματα στο iCloud Drive και διανέμονται σε άλλες συσκευές. Η πρόσβαση στο κοντέινερ διαμορφώνεται μέσω Capabilities στο Xcode.
Το σύστημα παρακολουθεί την κατάσταση κάθε αρχείου μέσω NSMetadataQuery: το αρχείο μπορεί να είναι τοπικό (μεταφορτωμένο στη συσκευή), απομακρυσμένο (μόνο στο cloud) ή υπό λήψη. Ο προγραμματιστής μπορεί να ζητήσει προγραμματιστικά τη λήψη του αρχείου ή να ελέγξει τη διαθεσιμότητά του πριν το άνοιγμα.
Η ενσωμάτωση του iCloud Drive ξεκινά με την προσθήκη iCloud capability στο Xcode και την ενεργοποίηση της υπηρεσίας iCloud Documents. Στη συνέχεια, η εφαρμογή αποκτά πρόσβαση στο Ubiquity container — έναν ειδικό κατάλογο του οποίου η διαδρομή επιστρέφεται μέσω FileManager.
import UIKit
class DocumentManager {
func ubiquityURL() -> URL? {
return FileManager.default
.url(forUbiquityContainer: nil)
}
func saveToICloud(data: Data, filename: String) {
guard let containerURL = ubiquityURL() else { return }
let fileURL = containerURL
.appendingPathComponent(filename)
do {
try data.write(to: fileURL)
Logger.storage.info(
"Saved \(filename) to iCloud Drive"
)
} catch {
Logger.storage.error(
"Save failed: \(error.localizedDescription)"
)
}
}
func listICloudFiles() {
let query = NSMetadataQuery()
query.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope]
query.start()
}
}
NSDocumentPickerViewController παρέχει ένα UI συστήματος για επιλογή και εισαγωγή αρχείων από το iCloud Drive. Ο χρήστης βλέπει έναν τυπικό περιηγητή αρχείων με υποστήριξη αναζήτησης, ταξινόμησης και πολλαπλής επιλογής. Μετά την επιλογή του αρχείου, η εφαρμογή λαμβάνει το URL του και μπορεί να εργαστεί με αυτό μέσω NSFileCoordinator.
Σημαντικός κανόνας: κατά την εργασία με αρχεία iCloud Drive, πρέπει να χρησιμοποιείται το NSFileCoordinator για ανάγνωση και εγγραφή. Αυτό εγγυάται ότι το αρχείο δεν θα τροποποιηθεί από άλλη διεργασία (π.χ. συγχρονισμό) κατά τη διάρκεια της λειτουργίας. Η παραμέληση του συντονισμού μπορεί να οδηγήσει σε καταστροφή δεδομένων.
Συγκρούσεις εκδόσεων προκύπτουν όταν ένα αρχείο τροποποιείται ταυτόχρονα σε δύο συσκευές πριν από την ολοκλήρωση του συγχρονισμού. Το iOS ανιχνεύει αυτόματα τέτοιες καταστάσεις μέσω NSFileVersion και δημιουργεί αντικρουόμενες εκδόσεις που πρέπει να επιλύσει ο χρήστης ή η εφαρμογή.
func resolveConflicts(for fileURL: URL) {
let conflictVersions = NSFileVersion
.unresolvedConflictVersionsOfItem(at: fileURL) ?? []
for version in conflictVersions {
do {
let conflictData = try Data(contentsOf: version.url)
let resolved = mergeData(
original: try Data(contentsOf: fileURL),
conflict: conflictData
)
try resolved.write(to: fileURL)
version.remove()
} catch {
Logger.sync.error(
"Conflict resolution failed: \(error)"
)
}
}
}
Το NSFileVersion αποθηκεύει το ιστορικό αλλαγών του αρχείου έως 30 ημέρες. Κάθε έκδοση περιέχει URL, ημερομηνία δημιουργίας και αναγνωριστικό της συσκευής που δημιούργησε την έκδοση. Το σύστημα επισημαίνει αυτόματα τις εκδόσεις ως αντικρουόμενες όταν δύο συσκευές στέλνουν αλλαγές με το ίδιο βασικό αναγνωριστικό.
Στρατηγικές επίλυσης: η εφαρμογή μπορεί να συγχωνεύσει αυτόματα τις αλλαγές (για υποστηριζόμενες μορφές), να εμφανίσει στον χρήστη επιλογή έκδοσης ή να χρησιμοποιήσει τη στρατηγική “τελευταίος συγγραφέας” (last-writer-wins). Η Apple συνιστά για δεδομένα κειμένου και δομημένα δεδομένα αυτόματη συγχώνευση, και για δυαδικές μορφές — εμφάνιση των αντικρουόμενων εκδόσεων στον χρήστη.
Δωρεάν αποθήκευση iCloud είναι 5 GB, κατανεμημένα μεταξύ όλων των υπηρεσιών του χρήστη: αντίγραφα ασφαλείας, φωτογραφίες, email και iCloud Drive. Τα πληρωμένα προγράμματα ξεκινούν από 50 GB και φτάνουν έως 12 TB. Για εφαρμογές με εντατική ανταλλαγή αρχείων, είναι κρίσιμο να λαμβάνονται υπόψη αυτά τα όρια.
Βελτιστοποίηση αποθήκευσης: το iOS παρέχει μηχανισμό εκκένωσης αρχείων (eviction) — όταν τελειώνει ο τοπικός χώρος, το σύστημα μπορεί να διαγράψει τα αποθηκευμένα σε κρυφή μνήμη αντίγραφα αρχείων iCloud Drive, αφήνοντας μόνο μεταδεδομένα. Κατά την προσπάθεια ανοίγματος ενός τέτοιου αρχείου, το σύστημα το κατεβάζει αυτόματα από το cloud. Ο προγραμματιστής μπορεί να ελέγξει αυτή τη διαδικασία μέσω NSFileCoordinator και να ελέγξει την κατάσταση του αρχείου μέσω NSMetadataUbiquitousItemDownloadingStatusKey.
Σύμφωνα με το WWDC 2022, η Apple συνιστά τις ακόλουθες πρακτικές για βελτιστοποίηση του iCloud Drive: αποθηκεύστε στο Ubiquity container μόνο έγγραφα χρήστη, όχι την κρυφή μνήμη της εφαρμογής; χρησιμοποιήστε ασύγχρονη λήψη με ένδειξη προόδου; παρέχετε πληροφορίες στον χρήστη σχετικά με το μέγεθος των αρχείων πριν από τη λήψη; υλοποιήστε υποστήριξη συνέχισης για μεγάλα αρχεία.
Βασική απόχρωση: η διαγραφή ενός αρχείου από το Ubiquity container οδηγεί στη διαγραφή του από όλες τις συσκευές του χρήστη. Για προσωρινά αρχεία, χρησιμοποιήστε τον τοπικό κατάλογο Documents, όχι το Ubiquity container. Λάβετε επίσης υπόψη ότι ο συγχρονισμός δεν είναι στιγμιαίος — η καθυστέρηση μπορεί να κυμαίνεται από μερικά δευτερόλεπτα έως λεπτά ανάλογα με το μέγεθος του αρχείου και το δίκτυο.
Συχνές ερωτήσεις
iCloud Drive είναι μια αποθήκευση αρχείων cloud της Apple που συγχρονίζει έγγραφα μεταξύ iPhone, iPad, Mac και PC. Είναι ενσωματωμένο στο Finder και την εφαρμογή Αρχεία, επιτρέποντας την εργασία με έγγραφα χωρίς πρόσθετες εφαρμογές.
Ο συγχρονισμός λειτουργεί μέσω CloudKit: τα αρχεία από το Ubiquity container της εφαρμογής ανεβαίνουν αυτόματα στο cloud και διανέμονται σε άλλες συσκευές του χρήστη. Το σύστημα χρησιμοποιεί NSMetadataQuery για παρακολούθηση κατάστασης και NSFileCoordinator για ασφαλή πρόσβαση.
Προσθέστε iCloud capability στο Xcode, ενεργοποιήστε την υπηρεσία iCloud Documents και χρησιμοποιήστε το FileManager.url(forUbiquityContainer:) για να λάβετε τη διαδρομή προς τον συγχρονισμένο κατάλογο. Για επιλογή αρχείων, χρησιμοποιήστε το NSDocumentPickerViewController.
Το iOS δημιουργεί αντικρουόμενες εκδόσεις μέσω NSFileVersion. Ο προγραμματιστής μπορεί να συγχωνεύσει αυτόματα τις αλλαγές ή να εμφανίσει την επιλογή στον χρήστη. Το σύστημα αποθηκεύει εκδόσεις έως 30 ημέρες και επισημαίνει αυτόματα συγκρούσεις όταν γίνονται ταυτόχρονες αλλαγές από διαφορετικές συσκευές.
Δωρεάν παρέχονται 5 GB για όλες τις υπηρεσίες iCloud. Πληρωμένα προγράμματα: 50 GB, 200 GB, 2 TB, 6 TB και 12 TB. Για μεγάλα αρχεία, υλοποιήστε υποστήριξη συνέχισης και ελέγξτε τον διαθέσιμο χώρο πριν από την εγγραφή.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης