Rich Notification: ما هو، المحتوى الوسائط وإنشاء الإشعارات

المؤلف: IT Sectr نُشر: 2026-03-20 وقت القراءة: 8 دق

Rich Notification هو تنسيق محسّن للإشعارات الفورية في iOS يتضمن المرفقات الوسائط والأزرار التفاعلية والواجهات المخصصة لتحسين تجربة المستخدم. على عكس الإشعارات النصية القياسية، يمكن لـ Rich Notification عرض الصور والفيديو والصوت مباشرة في الشعار أو على شاشة القفل. وفقًا لـ Apple Developer Documentation, 2026، يدعم UNNotificationAttachment ما يصل إلى 10 ملفات في إشعار واحد ويقوم بتغيير حجمها تلقائيًا للعرض الأمثل على جميع الأجهزة.

أهم النقاط

  • المرفقات الوسائط — يدعم Rich Notification الصور (JPEG، PNG، GIF) والفيديو (MP4، MOV حتى 30 ثانية) والصوت (MP3، AAC، WAV) عبر UNNotificationAttachment.
  • التفاعلية — تتم إضافة الأزرار وإدخال النص عبر UNNotificationAction وUNTextInputNotificationAction، المرتبطة بفئات الإشعارات.
  • Service Extension — مكون إلزامي لتحميل الوسائط: يقوم بتنزيل المرفق من عنوان URL في الحمولة ويضيفه إلى المحتوى.
  • Content Extension — ينشئ واجهة إشعار مخصصة بالكامل مع واجهة مستخدم مخصصة ورسوم متحركة ومعالجة الإيماءات.
  • الحدود — الحد الأقصى لحجم المرفق 10 ميغابايت، وحد ذاكرة الامتداد 50 ميغابايت، ووقت المعالجة يصل إلى 30 ثانية.

ما هو Rich Notification

Rich Notification هو إشعار فوري في iOS لا يحتوي على نص فقط، بل يشمل أيضًا المرفقات الوسائط والعناصر التفاعلية وواجهة مخصصة. يعكس مصطلح «rich» (الغني) القدرة على تضمين الصور والفيديو والصوت وأزرار الإجراءات وإدخال النص في الإشعار، مما يحول التنبيه البسيط إلى عنصر تفاعلي متكامل.

تطور الإشعارات في iOS

قدمت Apple دعم Rich Notification في iOS 10 مع إطار UserNotifications. قبل ذلك، كانت الإشعارات الفورية تحتوي فقط على نص وصوت وشارة. قدم iOS 10 UNNotificationServiceExtension وUNNotificationContentExtension، مما فتح إمكانية تعديل المحتوى وإنشاء واجهات مخصصة. أضافت الإصدارات الأحدث دعم SwiftUI في Content Extension والصور المتحركة GIF وتحسين تغيير حجم الوسائط.

المزايا مقارنة بالإشعارات القياسية

يعمل Rich Notification على زيادة تفاعل المستخدم بشكل كبير. تظهر دراسات Apple أن الإشعارات التي تحتوي على صور تحصل على تفاعلات أكثر بنسبة 30–40% مقارنة بالإشعارات النصية فقط. تسمح صورة المنتج أو معاينة الفيديو أو زر الرد السريع للمستخدم باتخاذ قرار مباشرة من الإشعار دون فتح التطبيق. وهذا يختصر المسار إلى الإجراء المستهدف ويحسن تجربة المستخدم.

أنواع المرفقات الوسائط وتنسيقاتها

UNNotificationAttachment يدعم ثلاث فئات من الوسائط: الصور والفيديو والصوت. لكل نوع حدوده الخاصة من حيث التنسيق والحجم والمدة. يقوم النظام تلقائيًا بتغيير حجم الصور لتناسب حجم الإشعار ويحدد مدة الفيديو بـ 30 ثانية لتحسين الأداء.

نوع الوسائطالتنسيقات المدعومةالحد الأقصى للحجم
الصورJPEG، PNG، GIF، TIFF10 ميغابايت لكل ملف
الفيديوMPEG، MP4، MOV10 ميغابايت، حتى 30 ثانية
الصوتMP3، AAC، WAV، CAF10 ميغابايت

الصور والصور المتحركة GIF

يتم قص الصور وتغيير حجمها تلقائيًا بواسطة النظام لعرضها في طرق عرض الإشعارات المضغوطة والموسعة. الصور المتحركة GIF مدعومة بدءًا من iOS 12 ويتم تشغيلها تلقائيًا عند عرض الإشعار. الحجم الموصى به للصورة هو 1024 × 1024 بكسل، مما يضمن عرضًا واضحًا على جميع الأجهزة بما في ذلك iPad بشاشته الكبيرة.

مرفقات الفيديو والصوت

يتم تشغيل الفيديو في Rich Notification بدون صوت افتراضيًا — يمكن للمستخدم تشغيل الصوت عبر زر المشغل. المدة القصوى للفيديو هي 30 ثانية، وبعدها يتوقف التشغيل. يمكن استخدام مرفقات الصوت للرسائل الصوتية أو معاينات الصوت ويتم تشغيلها عند النقر على الإشعار في العرض الموسع.

الأزرار التفاعلية والإجراءات

الإجراءات التفاعلية تسمح للمستخدم بتنفيذ العمليات مباشرة من الإشعار دون فتح التطبيق. يتم تسجيل الإجراءات عبر UNNotificationCategory وUNNotificationAction عند تشغيل التطبيق. يمكن أن يكون كل إجراء في الخلفية (بدون فتح التطبيق) أو في المقدمة (يفتح التطبيق لإكمال العملية).

UNNotificationAction وUNTextInputNotificationAction

يمثل UNNotificationAction زرًا بعنوان ومعدِّلات اختيارية مثل requiresAuthentication (يتطلب Face ID/Touch ID) أو destructive (يظهر باللون الأحمر). UNTextInputNotificationAction يوسع هذه الإمكانية بإضافة حقل إدخال نص — مثالي للردود السريعة على الرسائل أو التعليقات. تظهر الإجراءات عند الضغط المطول على الإشعار أو التمرير لأسفل.

تسجيل الفئات والإجراءات

تربط فئات الإشعارات نوع المحتوى بمجموعة من الإجراءات المتاحة. عملية التسجيل تتم في AppDelegate عند تشغيل التطبيق عبر UNUserNotificationCenter.current().setNotificationCategories. يتم تحديد الفئة على الخادم في حقل category في حمولة JSON، ويطبق النظام تلقائيًا مجموعة الإجراءات المقابلة على الإشعار.

معالجة النقر على الإجراءات

عندما ينقر المستخدم على زر أو يرسل نصًا، يقوم النظام باستدعاء المفوض UNUserNotificationCenterDelegate بطريقة didReceive response. UNNotificationResponse يحتوي على معرف الإجراء والنص المُدخل (لـ UNTextInputNotificationAction). بناءً على هذه المعلومات، ينفذ التطبيق منطق الأعمال المقابل: يرسل رسالة أو يؤكد إجراءً أو يفتح شاشة معينة.

تنفيذ Rich Notification في Swift

دعنا نستعرض دورة إنشاء Rich Notification الكاملة: من تسجيل الفئات في AppDelegate إلى المعالجة في Service Extension والعرض. AppDelegate يسجل الفئة بالأزرار، ويرسل الخادم إشعارًا بعنوان URL للصورة، ويقوم Service Extension بتنزيل الوسائط، ويعرض Content Extension واجهة مخصصة بالأزرار.

swift
// AppDelegate — تسجيل الفئات والإجراءات
func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
    [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

    let replyAction = UNTextInputNotificationAction(
        identifier: "reply",
        title: "رد",
        options: [.authenticationRequired])

    let likeAction = UNNotificationAction(
        identifier: "like",
        title: "إعجاب",
        options: [])

    let category = UNNotificationCategory(
        identifier: "social_post",
        actions: [replyAction, likeAction],
        intentIdentifiers: [],
        options: [])

    UNUserNotificationCenter.current()
        .setNotificationCategories([category])
    return true
}

Service Extension لتحميل الصور

بعد استلام إشعار فوري بالفئة «social_post» وعنوان URL للصورة في حقل مخصص، يتم تنشيط Service Extension. يقوم الامتداد بتنزيل الصورة من الشبكة، وينشئ UNNotificationAttachment بمعرف فريد ويضيفه إلى المحتوى. من المهم التحقق من حجم الملف الذي تم تنزيله — إذا تجاوز 10 ميغابايت، لن يتم إنشاء المرفق وسيعرض النظام الإشعار بدون وسائط.

swift
class NotificationService: UNNotificationServiceExtension {

    override func didReceive(
        _ request: UNNotificationRequest,
        withContentHandler contentHandler:
        @escaping (UNNotificationContent) -> Void
    ) {
        let content = (request.content.mutableCopy()
            as! UNMutableNotificationContent)
        guard let urlString = content.userInfo["media-url"]
            as? String,
            let url = URL(string: urlString)
        else { contentHandler(request.content); return }

        URLSession.shared.downloadTask(with: url) {
            location, _, _ in
            guard let location = location else {
                contentHandler(content); return }
            let attachment = try! UNNotificationAttachment(
                identifier: "media", url: location,
                options: [UNNotificationAttachmentOptionsTypeHintKey:
                    "jpg"])
            content.attachments = [attachment]
            contentHandler(content)
        }.resume()
    }
}

اختبار Rich Notification

لاختبار Rich Notification بدون خادم، استخدم محاكي iOS وأرسل الإشعارات عبر الطرفية باستخدام xcrun simctl push. في الحمولة، تأكد من تحديد mutable-content: 1 لتفعيل Service Extension والفئة لعرض الإجراءات. يقوم الأمر بتشغيل إشعار من ملف JSON مباشرة على المحاكي المحدد، مما يسمح بالتكرار السريع دون إعداد بنية تحتية للخادم.

Content Extension والواجهة المخصصة

UNNotificationContentExtension يسمح باستبدال واجهة الإشعار القياسية بالكامل بعرض UIKit أو SwiftUI مخصص. يتم تنشيط الامتداد عندما يوسع المستخدم الإشعار (الضغط بقوة أو التمرير لأسفل) ويمكن أن يحتوي على أزرار ومنزلقات ورسوم متحركة وأي مكونات واجهة مستخدم أخرى. يتكيف حجم الواجهة مع المحتوى باستخدام Auto Layout.

Storyboard وSwiftUI في Content Extension

يعتمد Content Extension على storyboard مع وحدة تحكم عرض ترث من UIViewController. SwiftUI View يتم دمجها عبر UIHostingController بدءًا من iOS 16، مما يسمح باستخدام أساليب حديثة لبناء الواجهة. للتوافق مع iOS 14–15، يُوصى باستخدام UIKit مع ملفات xib. تستقبل الواجهة المحتوى المعدل من Service Extension عبر UNNotificationContent.

معالجة إجراءات المستخدم

ينفذ Content Extension بروتوكول UNNotificationContentExtension بطريقة didReceive response. UNNotificationResponse يحتوي على معلومات حول الزر المضغوط أو النص المُدخل. يمكن للامتداد تحديث الواجهة دون إغلاق الإشعار أو استدعاء معالج الإكمال لإغلاقه. يتيح ذلك إنشاء سيناريوهات تفاعل سريع، مثل «إعجاب» مع ردود فعل بصرية مباشرة في الإشعار.

توصيات التصميم

توصي Apple بجعل Content Extension موجزًا ووظيفيًا، وتجنب العناصر الزائدة. الحد الأقصى لارتفاع الإشعار الموسع حوالي 400 نقطة، وبعدها يتم تمرير المحتوى. استخدم خطوط النظام والمسافات للتوافق مع الإشعارات الأخرى. اختبر على أحجام شاشات مختلفة للتأكد من عرض الواجهة بشكل صحيح على كل من iPhone وiPad.

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

ما هو الحد الأقصى لحجم الصورة في Rich Notification؟

الحد الأقصى لحجم المرفق الوسائط الواحد هو 10 ميغابايت. عند تجاوز الحد، لا يتم إنشاء UNNotificationAttachment ويتم عرض الإشعار بدون وسائط. يُوصى بتحسين الصور إلى 1–3 ميغابايت للتحميل السريع في Service Extension.

هل تعمل Rich Notifications على جميع موديلات iPhone؟

Rich Notifications مدعومة على جميع الأجهزة التي تعمل بـ iOS 10 والإصدارات الأحدث، بما في ذلك iPhone 5s والأحدث. Content Extension بواجهة مخصصة متاح من iOS 12. SwiftUI في Content Extension — من iOS 16. في الإصدارات الأقدم، يتم عرض الإشعار بالشكل القياسي.

هل يمكن استخدام GIF في Rich Notification؟

نعم، الصور المتحركة GIF مدعومة بدءًا من iOS 12. يتم تحميل GIF عبر UNNotificationAttachment كصورة عادية ويتم تشغيلها تلقائيًا عند عرض الإشعار. حجم GIF محدود بنفس 10 ميغابايت مثل التنسيقات الأخرى.

كم عدد الأزرار التي يمكن إضافتها إلى الإشعار؟

الحد الأقصى 4 إجراءات لكل إشعار عند تسجيل فئة. إذا تم تحديد أكثر، يعرض النظام أول 4 ويتجاهل الباقي. يُوصى باستخدام 2–3 أزرار لتجربة مستخدم مثلى — الكثير من الخيارات يثقل الواجهة.

هل يلزم وجود خادم لإرسال Rich Notifications؟

نعم، يجب على الخادم إرسال الإشعارات عبر APNS (خدمة الإشعارات الفورية من Apple) بحمولة JSON تحتوي على عنوان URL لملف الوسائط في حقل مخصص وعلامة mutable-content: 1. يحدد الخادم أيضًا الفئة لتفعيل Content Extension والإجراءات.

الملخص

  • Rich Notification — إشعار فوري في iOS مع مرفقات وسائط وأزرار تفاعلية وواجهة مستخدم مخصصة تزيد من تفاعل المستخدم.
  • الوسائط المدعومة — صور JPEG/PNG/GIF، فيديو MP4/MOV (حتى 30 ثانية)، صوت MP3/AAC/WAV بحد أقصى 10 ميغابايت لكل ملف.
  • Service Extension يقوم بتنزيل الوسائط من عنوان URL في الحمولة ويضيف UNNotificationAttachment إلى محتوى الإشعار.
  • الإجراءات التفاعلية — حتى 4 أزرار لكل فئة، بما في ذلك إدخال النص عبر UNTextInputNotificationAction.
  • Content Extension يستبدل الواجهة القياسية بعرض UIKit/SwiftUI مخصص بعناصر متنوعة.
  • Content Extension ينفذ بروتوكول UNNotificationContentExtension بطريقة didReceive لمعالجة النقرات وتحديث واجهة المستخدم في الوقت الفعلي.
  • Rich Notification يتطلب تكوينًا على جميع المستويات: الخادم (APNS) وService Extension (تحميل الوسائط) وAppDelegate (تسجيل الفئات).

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

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

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

اقرأ أيضًا