Photo Editing Extension: ما هي وإمكانيات الإضافة لنظام iOS

المؤلف: IT Sectr نُشر: 2026-06-15 وقت القراءة: 9 دق

Photo Editing Extension هي آلية iOS تسمح للتطبيقات الخارجية بإضافة أدوات تحرير مباشرة في تطبيق الصور الأساسي. وخلافًا للمحررات الكاملة، لا تقوم الإضافة بتحميل الصورة إلى تطبيق منفصل — يقوم المستخدم بتطبيق المرشحات وتصحيح الألوان وإضافة التأثيرات دون مغادرة الواجهة القياسية. وفقًا لوثائق مطوري Apple (2025)، يوفر PhotoKit أكثر من 40 API للعمل مع موارد الصور، بما في ذلك PHAdjustmentData و PHContentEditingController.

النقاط الرئيسية

  • Photo Editing Extension تدمج أدوات التحرير في تطبيق الصور الأساسي في iOS دون التبديل بين البرامج
  • تعتمد البنية على بروتوكول PHContentEditingController، الذي يدير عرض الواجهة والحصول على الصورة الأصلية
  • تستخدم الإضافة التحرير غير المدمر — تحفظ جميع التغييرات كـ AdjustmentData، ويبقى الأصل دون مساس
  • للعمل مع الصورة، تتلقى الإضافة PHContentEditingInput مع ملف الصورة الكامل والبيانات الوصفية
  • PhotoKit يوفر الوصول إلى موارد الصور عبر PHAsset و PHAssetResource و PHImageManager

ما هو Photo Editing Extension في iOS

Photo Editing Extension هي نوع من إضافات التطبيقات في iOS تقوم بدمج أدوات معالجة الصور في الواجهة القياسية لتطبيق الصور. يفتح المستخدم صورةً، يضغط على زر تحرير ويختار الإضافة المطلوبة من قائمة الإضافات المثبتة. بعد التحرير، يتم حفظ النتيجة في المكتبة، ويبقى الملف الأصلي متاحًا للاستعادة.

تحل هذه البنية مشكلة رئيسية في تجربة المستخدم: لا حاجة للتبديل بين التطبيقات أو تصدير واستيراد الصور أو تتبع الإصدارات. وفقًا لمؤتمر WWDC 2025، تعمل جميع الإضافات في عملية معزولة بصندوق الرمل الخاص بها ووقت تنفيذ محدود — تصلي إلى 30 ثانية لكل عملية تحرير.

لا تملك الإضافة وصولًا إلى الملفات العشوائية في ذاكرة الجهاز — فقط إلى الصورة التي قام المستخدم بتمريرها صراحةً من خلال واجهة الاختيار. يضمن ذلك أمان بيانات المستخدم عند استخدام أدوات الطرف الثالث.

PhotoKit: البنية والمكونات الرئيسية

PhotoKit هو إطار عمل Apple للعمل مع مكتبة الوسائط المتعددة للجهاز، ظهر في iOS 8. يوفر وصولًا برمجيًا إلى موارد الصور، بما في ذلك الصور والفيديو والألبومات والبيانات الوصفية. بالنسبة لإضافات التحرير، يعمل PhotoKit كطبقة وسيطة بين التخزين وواجهة التعديل.

PHAsset و PHAssetResource

PHAsset يمثل كائنًا وسائطيًا فرديًا في المكتبة — صورة أو فيديو. من خلال PHAsset، يمكن الحصول على البيانات الوصفية: تاريخ الالتقاط، نوع الملف، الموقع على الخريطة واتجاه الكاميرا. يوفر PHAssetResource وصولًا إلى الموارد الأساسية — على سبيل المثال، إلى ملف الصورة الأصلي بتنسيق RAW أو HEIC.

بالنسبة لإضافة التحرير، يعد PHContentEditingInput أمرًا بالغ الأهمية — كائن يحتوي على ملف الصورة (أو الفيديو) الكامل المتاح للقراءة والمعالجة. تتلقى الإضافة هذا الكائن عند التنشيط وتستخدمه كمادة أصلية.

PHImageManager والتخزين المؤقت

PHImageManager يدير تحميل وتخزين الصور مؤقتًا. بالنسبة لإضافة التحرير، لا يتم استخدامه مباشرةً — تتلقى الإضافة الملف الكامل عبر PHContentEditingInput. ومع ذلك، يسمح PHImageRequestOptions بتكوين معلمات الطلب: الحجم، نوع التسليم (متزامن أو غير متزامن) وتنسيق النتيجة.

وفقًا لشركة Apple، يقوم PHImageManager بتخزين الصور المصغرة تلقائيًا في الذاكرة المؤقتة (RAM)، مما يسرع عرض المعاينة المتكرر. لإضافات التحرير، يوصى باستخدام PHImageRequestOptionsDeliveryModeHighQualityFormat للحصول على أفضل جودة صورة.

swift
let options = PHImageRequestOptions()
options.deliveryMode = .highQualityFormat
options.isSynchronous = true

PHImageManager.default().requestImage(
    for: asset,
    targetSize: .init(width: 1024, height: 1024),
    contentMode: .aspectFill,
    options: options
) { image, _ in
    // use image for display
}

إنشاء إضافة: PHContentEditingController

تقوم كل Photo Editing Extension بتطبيق بروتوكول PHContentEditingController — عنصر التحكم المركزي في الإضافة. يحدد البروتوكول طرقًا لعرض الواجهة واستقبال بيانات الإدخال وحفظ النتيجة.

الطرق الرئيسية في البروتوكول

beginContentEditing(with:) يتم استدعاؤه عند بدء جلسة التحرير. تتلقى الإضافة PHContentEditingInput ويجب أن تعرض الواجهة مع الصورة الأصلية. finishContentEditing(completionHandler:) ينهي التحرير — تعيد الإضافة PHContentEditingOutput مع الملف المعدل و AdjustmentData. cancelContentEditing() يلغي التغييرات دون حفظ.

فارق دقيق: في لحظة استدعاء beginContentEditing، تحصل الإضافة على وصول فقط إلى نسخة واحدة من الصورة — تلك التي طلبها المستخدم. لا يمكن الوصول إلى صورة أخرى أو ألبوم. هذا قيد صندوق الرمل الذي فرضته Apple للأمان.

swift
class PhotoEditingViewController: UIViewController {

    override func beginContentEditing(
        with input: PHContentEditingInput
    ) {
        guard let url = input.fullSizeImageURL else { return }
        let image = CIImage(contentsOf: url)
        displayImage.image = UIImage(ciImage: image)
    }
}

بنية الفصل

PHContentEditingController يفصل واجهة التحرير عن منطق الحفظ. تقوم عملية iOS الرئيسية باستدعاء beginContentEditing، تعرض الإضافة واجهة المستخدم الخاصة بها، يقوم المستخدم بإجراء التغييرات، ثم يقوم finishContentEditing بإنشاء ملف جديد. توصي Apple بتنفيذ جميع المعالجات المستهلكة للموارد — مرشحات CIFilter، معالجات Core Image — في خيط خلفي، وليس في الخيط الرئيسي، لتجنب حجب الواجهة.

التحرير غير المدمر عبر AdjustmentData

PHAdjustmentData هو الآلية الرئيسية التي تمكن التحرير غير المدمر في Photo Editing Extension. هو كائن يحتوي على معلومات حول التغييرات المطبقة بتنسيق تعسفي. تقوم الإضافة بتسلسل معلمات المرشحات والأقنعة والإعدادات في AdjustmentData وتحفظها مع الصورة المعدلة.

عند إعادة فتح الصورة، تقرأ الإضافة AdjustmentData، تستعيد حالة الواجهة السابقة وتسمح للمستخدم بمواصلة التحرير من نفس النقطة. إذا لم تكن الإضافة مثبتة، تظهر الصورة بآخر نسخة محفوظة، ويتم تخزين الأصل بشكل منفصل.

وفقًا لوثائق Apple، يخزن PHAdjustmentData formatIdentifier و formatVersion — سلسل لتحديد تنسيق البيانات. عند تحديث الإضافة، يجب التحقق من الإصدار ومعالجة التنسيقات القديمة بشكل صحيح.

swift
let adjustmentData = PHAdjustmentData(
    formatIdentifier: "com.example.photoediting",
    formatVersion: "1.0",
    data: NSKeyedArchiver.archivedData(
        withRootObject: params,
        requiringSecureCoding: true
    )
)
output.adjustmentData = adjustmentData

في لحظة finishContentEditing، تكتب الإضافة AdjustmentData في كائن PHContentEditingOutput مع ملف الصورة المعدل. ثم تقوم النظام بحفظ كلا المكونين: النسخة للعرض والبيانات الوصفية لاستعادة جلسة التحرير.

التكامل مع تطبيق الصور

تظهر Photo Editing Extension تلقائيًا في قائمة تطبيق الصور بعد تثبيت التطبيق الحاوي لها. يفتح المستخدم صورةً، يختار تحرير، وفي الصف السفلي للأدوات تظهر جميع إضافات التحرير المثبتة — النظامية والخارجية على حد سواء.

تسجيل الإضافة

تتم تسجيل الإضافة عبر Info.plist للتطبيق الرئيسي بمفتاح NSExtensionActivationRule، الذي يحدد أنواع المحتوى التي تنشط الإضافة. لمحرر الصور، يتطلب ActivationRule عادةً image — لن تظهر الإضافة للفيديو أو الصور الحية.

توصي Apple بتحديد أنواع التنشيط المحددة لتجنب إثقال قائمة التحرير. إذا كانت الإضافة تدعم JPEG و HEIC فقط، فمن الأفضل تقييد التنشيط بهذه التنسيقات.

xml
<!-- Info.plist -->
<key>NSExtension</key>
<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.photo-editing</string>
    <key>NSExtensionActivationRule</key>
    <string>SUBQUERY (extensionItems,
        @count <= 1)</string>
</dict>

التفاعل مع المستخدم

بعد اختيار الإضافة، يقوم iOS بإنشاء عملية منفصلة مع UIViewController مخصص يظهر فوق واجهة الصور. يرى المستخدم صورته وأدوات الإضافة وزري إلغاء/تم. لا يمكن للإضافة تغيير التنقل خارج متحكمها أو الوصول إلى أجزاء أخرى من النظام.

وفقًا لإرشادات واجهة المستخدم من Apple، يجب أن تكون واجهة الإضافة بسيطة ووظيفية — بدون إعلانات أو روابط دخيلة أو عناصر تنقل غير ضرورية. يوصى باستخدام UIScrollView لعرض لوحة الأدوات لتجنب ازدحام الشاشة.

الأسئلة الشائعة

كيف تحصل Photo Editing Extension على الوصول إلى الصورة؟

تتلقى الإضافة PHContentEditingInput مع رابط ملف الصورة الكامل عبر طريقة beginContentEditing(with:). يتم منح الوصول فقط إلى صورة واحدة مختارة — دون حقوق وصول إلى موارد المكتبة الأخرى.

هل يمكن للإضافة تعديل الصورة الأصلية؟

لا، لا يتم تعديل الأصل أبدًا. تقوم الإضافة بإنشاء نسخة جديدة عبر PHContentEditingOutput، ويخزن AdjustmentData معلمات التغييرات لإمكانية العودة إلى الحالة الأصلية.

ما أنواع الملفات التي تدعمها Photo Editing Extension؟

تعمل الإضافة مع جميع التنسيقات التي يدعمها PhotoKit: JPEG، HEIC، RAW، PNG، TIFF و Live Photos. تتم تحديد القيود عبر NSExtensionActivationRule في Info.plist للإضافة.

كم من الوقت يتوفر للتحرير؟

يخصص iOS ما يصل إلى 30 ثانية لعملية finishContentEditing. عند تجاوز الحد، تنتهي الإضافة قسريًا ولا تتم حفظ التغييرات. لا يقوم المعالجة الخلفية بـ CIFilter بتمديد هذا الوقت.

هل يمكن استخدام Core Image و Metal في الإضافة؟

نعم، Core Image (CIFilter) و Metal (للتظليلات المخصصة) مدعومان بالكامل. توصي Apple بتحميل الحسابات الثقيلة على الخيوط الخلفية عبر Grand Central Dispatch.

الملخص

  • Photo Editing Extension هي أداة تحرير قابلة للتضمين في تطبيق الصور تعمل دون التبديل بين التطبيقات
  • تستخدم البنية PHContentEditingController لإدارة جلسة التحرير واستقبال بيانات الإدخال
  • PhotoKit يوفر PHAsset، PHImageManager و PHContentEditingInput للوصول إلى موارد الوسائط في الجهاز
  • PHAdjustmentData يمكن التحرير غير المدمر — تسلسل معلمات التغيير مع إمكانية التراجع
  • تعمل الإضافة في صندوق رمل بحد زمني قدره 30 ثانية ووصول فقط إلى صورة واحدة في الجلسة
  • يتم دعم Core Image، Metal وجميع تنسيقات PhotoKit: JPEG، HEIC، RAW، PNG، TIFF و Live Photos

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا