iCloud Drive: nó là gì, lưu trữ đám mây Apple và cách hoạt động

Tác giả: IT Sectr Đã đăng: 2026-07-11 Thời gian đọc: 6 phút

iCloud Drive là bộ lưu trữ tệp đám mây của Apple được tích hợp trong iOS, macOS và iPadOS để đồng bộ hóa tài liệu giữa các thiết bị của người dùng. Theo Apple, 2024, iCloud Drive sử dụng CloudKit làm backend để lưu trữ tệp và đồng bộ hóa tự động: các thay đổi được thực hiện trên iPhone được phản ánh ngay lập tức trên Mac và iPad mà không cần người dùng thao tác. Nhà phát triển có thể tích hợp iCloud Drive vào ứng dụng thông qua NSDocumentPickerViewController và API Ubiquity.

Những điểm chính

  • iCloud Drive là bộ lưu trữ đám mây của Apple để đồng bộ hóa tệp giữa các thiết bị
  • CloudKit là backend của iCloud cung cấp lưu trữ dữ liệu và đồng bộ hóa
  • Bộ chứa Ubiquity là một thư mục đặc biệt để lưu trữ các tệp đã đồng bộ hóa của ứng dụng
  • NSDocumentPickerViewController là bộ điều khiển hệ thống để nhập và xuất tệp iCloud
  • Xung đột phiên bản được giải quyết tự động thông qua NSFileVersion bằng cách tạo các bản sao xung đột

iCloud Drive trong iOS là gì?

iCloud Drive là dịch vụ tệp đám mây của Apple cung cấp bộ lưu trữ tài liệu thống nhất cho tất cả các thiết bị của người dùng được ủy quyền với cùng một Apple ID. Dịch vụ này được ra mắt vào năm 2014 cùng với iOS 8 và OS X Yosemite để thay thế iCloud Documents.

iCloud Drive khác biệt so với các dịch vụ lưu trữ đám mây khác (Google Drive, Dropbox) nhờ sự tích hợp sâu với hệ điều hành: các tệp xuất hiện trực tiếp trong Finder trên macOS và trong ứng dụng Tệp trên iOS mà không cần cài đặt thêm ứng dụng. Hệ thống tự động đồng bộ hóa nội dung trong nền, chuyển đổi giữa mạng Wi-Fi và di động.

Theo Apple Platform Overview, 2024, iCloud Drive hỗ trợ quản lý phiên bản tệp lên đến 30 ngày, chia sẻ thư mục qua iCloud Sharing và tích hợp với tìm kiếm hệ thống Spotlight. Nhà phát triển truy cập bộ lưu trữ thông qua API NSFileCoordinator và các bộ chứa Ubiquity.

Kiến trúc iCloud Drive và Ubiquity

Ubiquity là một thuật ngữ của Apple chỉ khả năng dữ liệu có mặt “ở khắp mọi nơi.” Trong bối cảnh iCloud Drive, đây là cơ chế cho phép các tệp tự động đồng bộ hóa trên tất cả các thiết bị của người dùng thông qua backend đám mây CloudKit.

Thành phầnMô tảVai trò
Bộ chứa UbiquityThư mục đặc biệt của ứng dụngLưu trữ tệp để đồng bộ hóa
CloudKitDịch vụ backend của AppleCung cấp lưu trữ và đồng bộ hóa
NSMetadataQueryTruy vấn hệ thốngTheo dõi trạng thái tệp Ubiquity
NSFileVersionQuản lý phiên bảnGiải quyết xung đột thay đổi

Bộ chứa Ubiquity là một thư mục bên trong Sandbox của ứng dụng được đánh dấu để đồng bộ hóa. Các tệp được đặt trong thư mục này sẽ tự động được tải lên iCloud Drive và phân phối đến các thiết bị khác. Quyền truy cập vào bộ chứa được cấu hình thông qua Capabilities trong Xcode.

Hệ thống theo dõi trạng thái của từng tệp thông qua NSMetadataQuery: một tệp có thể ở trạng thái cục bộ (đã tải xuống thiết bị), từ xa (chỉ trên đám mây) hoặc đang tải xuống. Nhà phát triển có thể yêu cầu tải xuống tệp theo chương trình hoặc kiểm tra tính khả dụng của tệp trước khi mở.

Tích hợp iCloud Drive vào ứng dụng

Tích hợp iCloud Drive bắt đầu bằng việc thêm khả năng iCloud trong Xcode và kích hoạt dịch vụ iCloud Documents. Sau đó, ứng dụng có quyền truy cập vào bộ chứa Ubiquity, một thư mục đặc biệt có đường dẫn được trả về thông qua FileManager.

swift
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 cung cấp giao diện người dùng hệ thống để chọn và nhập tệp từ iCloud Drive. Người dùng thấy một trình duyệt tệp tiêu chuẩn với hỗ trợ tìm kiếm, sắp xếp và chọn nhiều tệp. Sau khi chọn tệp, ứng dụng nhận được URL của tệp và có thể làm việc với nó thông qua NSFileCoordinator.

Quy tắc quan trọng: khi làm việc với các tệp iCloud Drive, bạn phải sử dụng NSFileCoordinator để đọc và ghi. Điều này đảm bảo rằng tệp không bị sửa đổi bởi một quy trình khác (ví dụ: đồng bộ hóa) trong quá trình thao tác. Việc bỏ qua phối hợp có thể dẫn đến hỏng dữ liệu.

Giải quyết xung đột và NSFileVersion

Xung đột phiên bản xảy ra khi một tệp được sửa đổi trên hai thiết bị đồng thời trước khi đồng bộ hóa hoàn tất. iOS tự động phát hiện các tình huống như vậy thông qua NSFileVersion và tạo các phiên bản xung đột mà người dùng hoặc ứng dụng phải giải quyết.

swift
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 lưu trữ lịch sử thay đổi của tệp lên đến 30 ngày. Mỗi phiên bản chứa URL, ngày tạo và mã định danh của thiết bị đã tạo phiên bản. Hệ thống tự động đánh dấu các phiên bản là xung đột khi hai thiết bị gửi các thay đổi với cùng một mã định danh cơ sở.

Chiến lược giải quyết: ứng dụng có thể tự động hợp nhất các thay đổi (đối với các định dạng được hỗ trợ), hiển thị cho người dùng lựa chọn phiên bản hoặc sử dụng chiến lược người ghi cuối cùng thắng (last-writer-wins). Apple khuyến nghị hợp nhất tự động cho dữ liệu văn bản và có cấu trúc, và hiển thị các phiên bản xung đột cho người dùng đối với các định dạng nhị phân.

Giới hạn lưu trữ và tối ưu hóa

Bộ nhớ miễn phí của iCloud là 5 GB, được phân bổ cho tất cả các dịch vụ của người dùng: sao lưu, ảnh, thư và iCloud Drive. Các gói trả phí bắt đầu từ 50 GB và lên đến 12 TB. Đối với các ứng dụng có trao đổi tệp thường xuyên, việc tính đến các giới hạn này là rất quan trọng.

Tối ưu hóa bộ nhớ: iOS cung cấp cơ chế loại bỏ tệp—khi dung lượng cục bộ cạn kiệt, hệ thống có thể xóa các bản sao được lưu trong bộ nhớ đệm của các tệp iCloud Drive, chỉ để lại siêu dữ liệu. Khi cố gắng mở tệp đó, hệ thống sẽ tự động tải xuống từ đám mây. Nhà phát triển có thể kiểm soát quá trình này thông qua NSFileCoordinator và kiểm tra trạng thái tệp thông qua NSMetadataUbiquitousItemDownloadingStatusKey.

Theo WWDC 2022, Apple khuyến nghị các phương pháp sau để tối ưu hóa iCloud Drive: chỉ lưu trữ tài liệu người dùng trong bộ chứa Ubiquity, không lưu bộ nhớ đệm của ứng dụng; sử dụng tải xuống không đồng bộ với chỉ báo tiến trình; cung cấp cho người dùng thông tin về kích thước tệp trước khi tải xuống; triển khai hỗ trợ tiếp tục cho các tệp lớn.

Sắc thái quan trọng: xóa tệp khỏi bộ chứa Ubiquity sẽ xóa tệp đó khỏi tất cả các thiết bị của người dùng. Đối với các tệp tạm thời, hãy sử dụng thư mục Documents cục bộ thay vì bộ chứa Ubiquity. Cũng lưu ý rằng đồng bộ hóa không diễn ra ngay lập tức—độ trễ có thể từ vài giây đến vài phút tùy thuộc vào kích thước tệp và mạng.

Câu hỏi thường gặp

iCloud Drive là gì?

iCloud Drive là bộ lưu trữ tệp đám mây của Apple đồng bộ hóa tài liệu giữa iPhone, iPad, Mac và PC. Nó được tích hợp trong Finder và ứng dụng Tệp, cho phép làm việc với tài liệu mà không cần ứng dụng bổ sung.

iCloud Drive đồng bộ hóa tệp như thế nào?

Đồng bộ hóa hoạt động thông qua CloudKit: các tệp từ bộ chứa Ubiquity của ứng dụng tự động được tải lên đám mây và phân phối đến các thiết bị khác của người dùng. Hệ thống sử dụng NSMetadataQuery để theo dõi trạng thái và NSFileCoordinator để truy cập an toàn.

Làm thế nào để tích hợp iCloud Drive vào ứng dụng?

Thêm khả năng iCloud trong Xcode, kích hoạt dịch vụ iCloud Documents và sử dụng FileManager.url(forUbiquityContainer:) để lấy đường dẫn đến thư mục đã đồng bộ hóa. Sử dụng NSDocumentPickerViewController để chọn tệp.

Phải làm gì khi xảy ra xung đột phiên bản trong iCloud Drive?

iOS tạo phiên bản xung đột thông qua NSFileVersion. Nhà phát triển có thể tự động hợp nhất các thay đổi hoặc hiển thị cho người dùng lựa chọn. Hệ thống lưu trữ các phiên bản lên đến 30 ngày và tự động đánh dấu xung đột khi có các thay đổi đồng thời từ các thiết bị khác nhau.

Các giới hạn của iCloud Drive là gì?

Bộ nhớ miễn phí là 5 GB trên tất cả các dịch vụ iCloud. Các gói trả phí: 50 GB, 200 GB, 2 TB, 6 TB và 12 TB. Đối với các tệp lớn, hãy triển khai hỗ trợ tiếp tục và kiểm tra dung lượng khả dụng trước khi ghi.

Tóm tắt

  • iCloud Drive là bộ lưu trữ đám mây của Apple với đồng bộ hóa tự động giữa các thiết bị qua CloudKit
  • Bộ chứa Ubiquity là thư mục ứng dụng đặc biệt để lưu trữ các tệp đã đồng bộ hóa
  • NSMetadataQuery theo dõi trạng thái tải xuống và tính khả dụng của các tệp iCloud Drive
  • NSFileCoordinator là bắt buộc để đọc và ghi an toàn các tệp đã đồng bộ hóa
  • Xung đột phiên bản được tự động phát hiện và yêu cầu giải quyết thông qua NSFileVersion
  • Tối ưu hóa bao gồm loại bỏ các tệp không sử dụng và tải xuống không đồng bộ với tiến trình
  • Giới hạn miễn phí là 5 GB—cho dung lượng lớn hơn cần gói iCloud+ trả phí

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm