Rich Notification: چیست، محتوای رسانه‌ای و ایجاد اعلان‌ها

نویسنده: IT Sectr منتشر شده: 2026-03-20 زمان مطالعه: 8 دقیقه

Rich Notification یک فرمت پیشرفته از اعلان‌های push 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 موجود در payload دانلود کرده و به محتوا اضافه می‌کند.
  • Content Extension — یک رابط اعلان کاملاً سفارشی با UI دلخواه، انیمیشن‌ها و مدیریت حرکات ایجاد می‌کند.
  • محدودیت‌ها — حداکثر اندازه پیوست 10 MB، محدودیت حافظه توسعه‌دهنده 50 MB، زمان پردازش تا 30 ثانیه.

Rich Notification چیست

Rich Notification یک اعلان push iOS است که نه تنها متن، بلکه پیوست‌های رسانه‌ای، عناصر تعاملی و رابط سفارشی‌سازی شده را شامل می‌شود. اصطلاح «غنی» (rich) نشان‌دهنده امکان گنجاندن تصاویر، ویدئو، صدا، دکمه‌های اقدام و ورود متن در اعلان است که یک هشدار ساده را به یک عنصر تعاملی کامل تبدیل می‌کند.

تکامل اعلان‌ها در iOS

Apple پشتیبانی از Rich Notification را در iOS 10 همراه با فریم‌ورک UserNotifications معرفی کرد. پیش از این، اعلان‌های push فقط می‌توانستند شامل متن، صدا و نشان badge باشند. iOS 10 UNNotificationServiceExtension و UNNotificationContentExtension را معرفی کرد که امکان تغییر محتوا و ایجاد رابط‌های سفارشی را فراهم کردند. در نسخه‌های بعدی، پشتیبانی از SwiftUI در Content Extension، GIF متحرک و مقیاس‌بندی بهبودیافته رسانه اضافه شد.

مزایا نسبت به اعلان‌های استاندارد

Rich Notification تعامل کاربران را به طور قابل توجهی افزایش می‌دهد. تحقیقات Apple نشان می‌دهد که اعلان‌های دارای تصویر 30–40% تعاملات بیشتری نسبت به اعلان‌های متنی دریافت می‌کنند. تصویر محصول، پیش‌نمایش ویدئو یا دکمه پاسخ سریع به کاربر امکان می‌دهد مستقیماً از اعلان تصمیم بگیرد بدون اینکه برنامه را باز کند. این مسیر را تا اقدام هدف کوتاه کرده و تجربه کاربری را بهبود می‌بخشد.

انواع پیوست‌های رسانه‌ای و فرمت‌های آن‌ها

UNNotificationAttachment از سه دسته رسانه پشتیبانی می‌کند: تصاویر، ویدئو و صدا. هر نوع محدودیت‌های خاص خود را از نظر فرمت، اندازه و مدت زمان دارد. سیستم به طور خودکار تصاویر را به اندازه اعلان مقیاس‌بندی کرده و مدت ویدئو را برای بهینه‌سازی عملکرد به 30 ثانیه محدود می‌کند.

نوع رسانهفرمت‌های پشتیبانی شدهحداکثر اندازه
تصاویرJPEG, PNG, GIF, TIFF10 MB به ازای هر فایل
ویدئوMPEG, MP4, MOV10 MB، تا 30 ثانیه
صداMP3, AAC, WAV, CAF10 MB

تصاویر و GIF متحرک

تصاویر به طور خودکار توسط سیستم برای نمایش در نمای جمع‌وجور و گسترده اعلان برش و مقیاس‌بندی می‌شوند. GIF متحرک از iOS 12 پشتیبانی شده و هنگام مشاهده اعلان به طور خودکار پخش می‌شود. اندازه توصیه شده تصویر 1024x1024 پیکسل است که نمایش واضحی را در همه دستگاه‌ها از جمله iPad با صفحه بزرگ تضمین می‌کند.

پیوست‌های ویدئو و صدا

ویدئو در Rich Notification به طور پیش‌فرض بدون صدا پخش می‌شود — کاربر می‌تواند از طریق دکمه پخش‌کننده صدا را فعال کند. حداکثر مدت ویدئو 30 ثانیه است و پس از آن پخش متوقف می‌شود. پیوست‌های صوتی می‌توانند برای پیام‌های صوتی یا پیش‌نمایش‌های صوتی استفاده شوند و با ضربه زدن روی اعلان در نمای گسترده پخش می‌شوند.

دکمه‌های تعاملی و اقدامات

اقدامات تعاملی به کاربر امکان می‌دهد بدون باز کردن برنامه، مستقیماً از اعلان عملیات انجام دهد. اقدامات از طریق UNNotificationCategory و UNNotificationAction هنگام راه‌اندازی برنامه ثبت می‌شوند. هر اقدام می‌تواند پس‌زمینه (بدون باز کردن برنامه) یا پیش‌زمینه (برنامه را برای تکمیل عملیات باز می‌کند) باشد.

UNNotificationAction و UNTextInputNotificationAction

UNNotificationAction دکمه‌ای با عنوان و اصلاح‌کننده‌های اختیاری مانند requiresAuthentication (نیاز به Face ID/Touch ID) یا destructive (با رنگ قرمز برجسته) است. UNTextInputNotificationAction این قابلیت را با افزودن فیلد ورود متن گسترش می‌دهد — ایده‌آل برای پاسخ سریع به پیام یا نظر. اقدامات با فشار طولانی روی اعلان یا کشیدن به پایین نمایش داده می‌شوند.

ثبت دسته‌بندی‌ها و اقدامات

دسته‌بندی‌های اعلان، نوع محتوا را به مجموعه اقدامات موجود متصل می‌کنند. فرآیند ثبت در AppDelegate هنگام راه‌اندازی برنامه از طریق UNUserNotificationCenter.current().setNotificationCategories انجام می‌شود. دسته‌بندی در فیلد category پیمایش JSON روی سرور مشخص می‌شود و سیستم به طور خودکار مجموعه اقدامات مربوطه را به اعلان اعمال می‌کند.

مدیریت کلیک روی اقدامات

وقتی کاربر دکمه‌ای را کلیک می‌کند یا متنی ارسال می‌کند، سیستم با متد didReceive response، نماینده UNUserNotificationCenterDelegate را فراخوانی می‌کند. 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 برای بارگیری تصویر

پس از دریافت اعلان push با دسته‌بندی «social_post» و URL تصویر در فیلد سفارشی، Service Extension فعال می‌شود. توسعه‌دهنده تصویر را از طریق شبکه بارگیری می‌کند، یک UNNotificationAttachment با شناسه یکتا ایجاد کرده و آن را به محتوا اضافه می‌کند. بررسی اندازه فایل بارگیری شده مهم است — اگر از 10 MB بیشتر شود، attachment ایجاد نمی‌شود و سیستم اعلان را بدون رسانه نمایش می‌دهد.

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 استفاده کرده و push را از طریق ترمینال با xcrun simctl push ارسال کنید. در payload حتماً mutable-content: 1 را برای فعال‌سازی Service Extension و category را برای نمایش اقدامات مشخص کنید. این دستور push را از فایل JSON مستقیماً به شبیه‌ساز انتخاب شده ارسال می‌کند که امکان تکرار سریع بدون راه‌اندازی زیرساخت سرور را فراهم می‌کند.

Content Extension و رابط سفارشی

UNNotificationContentExtension امکان جایگزینی کامل رابط استاندارد اعلان با نمای UIKit یا SwiftUI دلخواه را فراهم می‌کند. این توسعه‌دهنده زمانی فعال می‌شود که کاربر اعلان را گسترش می‌دهد (force touch یا کشیدن به پایین) و می‌تواند شامل دکمه‌ها، لغزنده‌ها، انیمیشن‌ها و هر مؤلفه UI دیگری باشد. اندازه رابط با استفاده از 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 شامل اطلاعاتی درباره دکمه کلیک شده یا متن وارد شده است. توسعه‌دهنده می‌تواند رابط را بدون بستن اعلان به‌روزرسانی کند یا برای بستن آن، completion handler را فراخوانی کند. این امکان ایجاد سناریوهای تعامل سریع مانند «پسندیدن» با بازخورد بصری مستقیم در اعلان را فراهم می‌کند.

توصیه‌های طراحی

Apple توصیه می‌کند Content Extension مختصر و کاربردی باشد و از عناصر اضافی خودداری کند. حداکثر ارتفاع اعلان گسترش یافته حدود 400 نقطه است و پس از آن محتوا اسکرول می‌شود. برای یکپارچگی با سایر اعلان‌ها از فونت‌ها و فاصله‌های سیستمی استفاده کنید. در اندازه‌های مختلف صفحه تست کنید تا مطمئن شوید رابط هم در iPhone و هم در iPad به درستی نمایش داده می‌شود.

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

حداکثر اندازه تصویر در Rich Notification چقدر است؟

حداکثر اندازه یک پیوست رسانه‌ای 10 MB است. در صورت تجاوز از حد مجاز، UNNotificationAttachment ایجاد نمی‌شود و اعلان بدون رسانه نمایش داده می‌شود. توصیه می‌شود تصاویر را برای بارگیری سریع در Service Extension به 1–3 MB بهینه کنید.

آیا Rich Notification در همه مدل‌های iPhone کار می‌کند؟

Rich Notification در همه دستگاه‌های دارای iOS 10 و بالاتر از جمله iPhone 5s و جدیدتر پشتیبانی می‌شود. Content Extension با UI سفارشی از iOS 12 در دسترس است. SwiftUI در Content Extension از iOS 16. در نسخه‌های قدیمی‌تر، اعلان به صورت استاندارد نمایش داده می‌شود.

آیا می‌توان از GIF در Rich Notification استفاده کرد؟

بله، GIF متحرک از iOS 12 پشتیبانی می‌شود. GIF به عنوان یک تصویر معمولی از طریق UNNotificationAttachment بارگیری شده و هنگام مشاهده اعلان به طور خودکار پخش می‌شود. اندازه GIF به همان 10 MB محدود است.

چند دکمه می‌توان به یک اعلان اضافه کرد؟

حداکثر 4 اقدام برای یک اعلان هنگام ثبت دسته‌بندی. در صورت تعداد بیشتر، سیستم 4 مورد اول را نمایش داده و بقیه را نادیده می‌گیرد. برای UX بهینه، توصیه می‌شود از 2–3 دکمه استفاده کنید — گزینه‌های زیاد رابط را شلوغ می‌کند.

آیا برای ارسال Rich Notification به سرور نیاز است؟

بله، سرور باید push را از طریق APNS (Apple Push Notification service) با payload JSON حاوی URL فایل رسانه در فیلد سفارشی و پرچم mutable-content: 1 ارسال کند. سرور همچنین category را برای فعال‌سازی Content Extension و اقدامات مشخص می‌کند.

خلاصه

  • Rich Notification — اعلان push iOS با پیوست‌های رسانه‌ای، دکمه‌های تعاملی و UI سفارشی که تعامل کاربر را افزایش می‌دهد.
  • رسانه‌های پشتیبانی شده — تصاویر JPEG/PNG/GIF، ویدئو MP4/MOV (تا 30 ثانیه)، صدا MP3/AAC/WAV با محدودیت 10 MB به ازای هر فایل.
  • Service Extension رسانه را از URL در payload بارگیری کرده و UNNotificationAttachment را به محتوای اعلان اضافه می‌کند.
  • اقدامات تعاملی — تا 4 دکمه به ازای هر دسته‌بندی، از جمله ورود متن از طریق UNTextInputNotificationAction.
  • Content Extension رابط استاندارد را با نمای سفارشی UIKit/SwiftUI با عناصر دلخواه جایگزین می‌کند.
  • Content Extension پروتکل UNNotificationContentExtension را با متد didReceive برای مدیریت کلیک‌ها و به‌روزرسانی UI در زمان واقعی پیاده‌سازی می‌کند.
  • Rich Notification نیاز به پیکربندی در همه سطوح دارد: سرور (APNS)، Service Extension (بارگیری رسانه) و AppDelegate (ثبت دسته‌بندی‌ها).

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

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

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

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