iCloud Drive: چیست، ذخیره‌سازی ابری Apple و چگونه کار می‌کند

نویسنده: IT Sectr منتشر شده: 2026-07-11 زمان مطالعه: 6 دقیقه

iCloud Drive یک ذخیره‌سازی فایل ابری Apple است که در iOS، macOS و iPadOS برای همگام‌سازی اسناد بین دستگاه‌های کاربر تعبیه شده است. به گفته Apple, 2024، iCloud Drive از CloudKit به عنوان backend برای ذخیره‌سازی فایل‌ها و همگام‌سازی خودکار استفاده می‌کند: تغییرات اعمال شده در iPhone بلافاصله در Mac و iPad بدون اقدام کاربر منعکس می‌شود. توسعه‌دهندگان می‌توانند iCloud Drive را از طریق NSDocumentPickerViewController و API Ubiquity در برنامه‌ها ادغام کنند.

نکات اصلی

  • iCloud Drive — ذخیره‌سازی ابری Apple برای همگام‌سازی فایل بین دستگاه‌ها
  • CloudKit — backend iCloud که ذخیره‌سازی و همگام‌سازی داده را فراهم می‌کند
  • Ubiquity container — دایرکتوری ویژه برای ذخیره فایل‌های همگام‌سازی شده برنامه
  • NSDocumentPickerViewController — کنترلر سیستمی برای واردات و صادرات فایل‌های iCloud
  • تعارضات نسخه به طور خودکار از طریق NSFileVersion با ایجاد کپی‌های متعارض حل می‌شوند

iCloud Drive در iOS چیست؟

iCloud Drive یک سرویس فایل ابری Apple است که یک ذخیره‌سازی یکپارچه اسناد برای تمام دستگاه‌های کاربر که با یک Apple ID مجاز شده‌اند فراهم می‌کند. این سرویس در سال ۲۰۱۴ همراه با iOS 8 و OS X Yosemite به عنوان جایگزین iCloud Documents راه‌اندازی شد.

iCloud Drive با سایر ذخیره‌سازی‌های ابری (Google Drive, Dropbox) با ادغام عمیق با سیستم عامل متفاوت است: فایل‌ها مستقیماً در Finder در macOS و در برنامه Files در iOS بدون نیاز به نصب برنامه اضافی نمایش داده می‌شوند. سیستم به طور خودکار محتوا را در پس‌زمینه با سوئیچ بین Wi-Fi و شبکه سلولی همگام‌سازی می‌کند.

به گفته Apple Platform Overview, 2024، iCloud Drive از نسخه‌بندی فایل تا ۳۰ روز، اشتراک‌گذاری پوشه‌ها از طریق iCloud Sharing و ادغام با جستجوی سیستمی Spotlight پشتیبانی می‌کند. توسعه‌دهندگان از طریق API NSFileCoordinator و Ubiquity containers به ذخیره‌سازی دسترسی پیدا می‌کنند.

معماری iCloud Drive و Ubiquity

Ubiquity — اصطلاح Apple به معنای توانایی داده برای «حضور در همه‌جا» (از انگلیسی ubiquitous). در زمینه iCloud Drive این مکانیزمی است که به فایل‌ها اجازه می‌دهد به طور خودکار بین تمام دستگاه‌های کاربر از طریق backend ابری CloudKit همگام‌سازی شوند.

جزءتوضیحنقش
Ubiquity containerدایرکتوری ویژه برنامهفایل‌ها را برای همگام‌سازی ذخیره می‌کند
CloudKitسرویس backend اپلذخیره‌سازی و همگام‌سازی را فراهم می‌کند
NSMetadataQueryپرس‌وجوی سیستمیوضعیت فایل‌های Ubiquity را ردیابی می‌کند
NSFileVersionمدیریت نسخهتعارضات تغییرات را حل می‌کند

Ubiquity container دایرکتوری داخل Sandbox برنامه است که برای همگام‌سازی علامت‌گذاری شده است. فایل‌های قرار داده شده در این دایرکتوری به طور خودکار به iCloud Drive آپلود شده و به دستگاه‌های دیگر منتشر می‌شوند. دسترسی به کانتینر از طریق Capabilities در Xcode پیکربندی می‌شود.

سیستم وضعیت هر فایل را از طریق NSMetadataQuery ردیابی می‌کند: فایل می‌تواند محلی (دانلود شده روی دستگاه)، از راه دور (فقط در ابر) یا در حال دانلود باشد. توسعه‌دهنده می‌تواند به صورت برنامه‌نویسی دانلود فایل را درخواست کند یا قبل از باز کردن، در دسترس بودن آن را بررسی کند.

ادغام iCloud Drive در برنامه

ادغام iCloud Drive با افزودن capability iCloud در Xcode و فعال کردن سرویس iCloud Documents آغاز می‌شود. پس از آن برنامه به Ubiquity container — دایرکتوری ویژه‌ای که مسیر آن از طریق 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 یک UI سیستمی برای انتخاب و واردات فایل‌ها از iCloud Drive فراهم می‌کند. کاربر یک مرورگر فایل استاندارد با پشتیبانی از جستجو، مرتب‌سازی و انتخاب چندگانه می‌بیند. پس از انتخاب فایل، برنامه URL آن را دریافت کرده و می‌تواند از طریق NSFileCoordinator با آن کار کند.

قانون مهم: هنگام کار با فایل‌های iCloud Drive باید از NSFileCoordinator برای خواندن و نوشتن استفاده کرد. این تضمین می‌کند که فایل در طول عملیات توسط فرآیند دیگری (مثلاً همگام‌سازی) تغییر نکند. عدم رعایت هماهنگی می‌تواند منجر به خرابی داده شود.

حل تعارضات و NSFileVersion

تعارضات نسخه زمانی رخ می‌دهد که یک فایل به طور همزمان روی دو دستگاه قبل از اتمام همگام‌سازی تغییر کند. iOS به طور خودکار چنین موقعیت‌هایی را از طریق NSFileVersion تشخیص داده و نسخه‌های متعارضی ایجاد می‌کند که کاربر یا برنامه باید آنها را حل کنند.

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 تاریخچه تغییرات فایل را تا ۳۰ روز ذخیره می‌کند. هر نسخه شامل URL، تاریخ ایجاد و شناسه دستگاهی است که نسخه را ایجاد کرده است. هنگامی که دو دستگاه تغییرات را با شناسه پایه یکسان ارسال می‌کنند، سیستم به طور خودکار نسخه‌ها را به عنوان متعارض علامت‌گذاری می‌کند.

استراتژی‌های حل: برنامه می‌تواند تغییرات را به طور خودکار ادغام کند (برای فرمت‌های پشتیبانی شده)، انتخاب نسخه را به کاربر نشان دهد یا از استراتژی «آخرین نویسنده» (last-writer-wins) استفاده کند. Apple برای داده‌های متنی و ساختاریافته ادغام خودکار و برای فرمت‌های باینری نمایش نسخه‌های متعارض به کاربر را توصیه می‌کند.

محدودیت‌های ذخیره‌سازی و بهینه‌سازی

ذخیره‌سازی رایگان iCloud 5 گیگابایت است که بین تمام سرویس‌های کاربر توزیع می‌شود: پشتیبان‌گیری، عکس‌ها، ایمیل و iCloud Drive. تعرفه‌های پولی از ۵۰ گیگابایت شروع شده و تا ۱۲ ترابایت می‌رسد. برای برنامه‌هایی با تبادل فایل فشرده، در نظر گرفتن این محدودیت‌ها حیاتی است.

بهینه‌سازی ذخیره‌سازی: iOS مکانیزم تخلیه فایل (eviction) را فراهم می‌کند — وقتی فضای محلی تمام می‌شود، سیستم می‌تواند کپی‌های کش شده فایل‌های iCloud Drive را حذف کرده و فقط فراداده را باقی بگذارد. هنگام تلاش برای باز کردن چنین فایلی، سیستم به طور خودکار آن را از ابر دانلود می‌کند. توسعه‌دهنده می‌تواند این فرآیند را از طریق NSFileCoordinator کنترل کرده و وضعیت فایل را از طریق NSMetadataUbiquitousItemDownloadingStatusKey بررسی کند.

به گفته WWDC 2022، Apple شیوه‌های زیر را برای بهینه‌سازی iCloud Drive توصیه می‌کند: فقط اسناد کاربر را در Ubiquity container ذخیره کنید، نه کش برنامه؛ از دانلود ناهمگام با نشانگر پیشرفت استفاده کنید؛ اطلاعاتی درباره اندازه فایل‌ها قبل از دانلود به کاربر ارائه دهید؛ پشتیبانی از ادامه دانلود برای فایل‌های بزرگ را پیاده‌سازی کنید.

نکته کلیدی: حذف فایل از Ubiquity container منجر به حذف آن از تمام دستگاه‌های کاربر می‌شود. برای فایل‌های موقت از دایرکتوری محلی Documents استفاده کنید، نه Ubiquity container. همچنین در نظر داشته باشید که همگام‌سازی آنی نیست — تاخیر بسته به اندازه فایل و شبکه می‌تواند از چند ثانیه تا چند دقیقه متغیر باشد.

سوالات متداول

iCloud Drive چیست؟

iCloud Drive یک ذخیره‌سازی فایل ابری Apple است که اسناد را بین iPhone، iPad، Mac و PC همگام‌سازی می‌کند. این سرویس با Finder و برنامه Files ادغام شده و امکان کار با اسناد را بدون برنامه‌های اضافی فراهم می‌کند.

iCloud Drive چگونه فایل‌ها را همگام‌سازی می‌کند؟

همگام‌سازی از طریق CloudKit کار می‌کند: فایل‌های Ubiquity container برنامه به طور خودکار به ابر آپلود شده و به دستگاه‌های دیگر کاربر منتشر می‌شوند. سیستم از NSMetadataQuery برای ردیابی وضعیت و NSFileCoordinator برای دسترسی امن استفاده می‌کند.

چگونه iCloud Drive را در برنامه ادغام کنیم؟

capability iCloud را در Xcode اضافه کنید، سرویس iCloud Documents را فعال کنید و از FileManager.url(forUbiquityContainer:) برای دریافت مسیر دایرکتوری همگام‌سازی شده استفاده کنید. برای انتخاب فایل‌ها از NSDocumentPickerViewController استفاده کنید.

در صورت تعارض نسخه در iCloud Drive چه کنیم؟

iOS از طریق NSFileVersion نسخه‌های متعارض ایجاد می‌کند. توسعه‌دهنده می‌تواند تغییرات را به طور خودکار ادغام کند یا انتخاب را به کاربر نشان دهد. سیستم نسخه‌ها را تا ۳۰ روز ذخیره کرده و در صورت تغییرات همزمان از دستگاه‌های مختلف، تعارضات را به طور خودکار علامت‌گذاری می‌کند.

محدودیت‌های iCloud Drive چیست؟

رایگان ۵ گیگابایت برای تمام سرویس‌های iCloud ارائه می‌شود. تعرفه‌های پولی: ۵۰ گیگابایت، ۲۰۰ گیگابایت، ۲ ترابایت، ۶ ترابایت و ۱۲ ترابایت. برای فایل‌های بزرگ، پشتیبانی از ادامه دانلود را پیاده‌سازی کرده و فضای موجود را قبل از نوشتن بررسی کنید.

خلاصه

  • iCloud Drive — ذخیره‌سازی ابری Apple با همگام‌سازی خودکار بین دستگاه‌ها از طریق CloudKit
  • Ubiquity container — دایرکتوری ویژه برنامه برای ذخیره فایل‌های همگام‌سازی شده
  • NSMetadataQuery وضعیت دانلود و در دسترس بودن فایل‌های iCloud Drive را ردیابی می‌کند
  • NSFileCoordinator برای خواندن و نوشتن امن فایل‌های همگام‌سازی شده الزامی است
  • تعارضات نسخه به طور خودکار تشخیص داده شده و نیاز به حل از طریق NSFileVersion دارند
  • بهینه‌سازی شامل تخلیه فایل‌های استفاده نشده و دانلود ناهمگام با پیشرفت است
  • محدودیت رایگان ۵ گیگابایت — برای حجم‌های بیشتر نیاز به تعرفه پولی iCloud+ است

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید