اعلان‌های Push در توسعه موبایل — ماهیت، انواع و نحوه کار

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

اعلان‌های Push پیام‌هایی هستند که توسط سرور حتی زمانی که برنامه بسته است به دستگاه موبایل ارسال می‌شوند. طبق داده‌های Google Firebase, 2024، اعلان‌های Push از طریق سرویس‌های تخصصی — FCM در Android و APNS در iOS پردازش می‌شوند که تحویل همزمان به میلیون‌ها دستگاه را پشتیبانی می‌کنند. آن‌ها به بخش جدایی‌ناپذیر تجربه کاربری در برنامه‌های مدرن موبایل تبدیل شده‌اند.

نکات اصلی

  • اعلان‌های Push — پیام‌هایی از سرور که از طریق FCM یا APNS تحویل داده می‌شوند.
  • FCM (Firebase Cloud Messaging) — سرویس اصلی برای Android با پشتیبانی از iOS.
  • APNS (Apple Push Notification Service) — سرویس اختصاصی Apple برای iOS و macOS.
  • انواع اعلان‌ها به اعلان‌های متنی، رسانه‌ای و بی‌صدا تقسیم می‌شوند.
  • توکن‌های دستگاه — شناسه‌های یکتا برای تحویل هدفمند پیام‌های Push.

اعلان‌های Push چیستند؟

اعلان‌های Push پیام‌های کوتاهی هستند که سرور برنامه بدون درخواست صریح کاربر به دستگاه او ارسال می‌کند. آن‌ها به صورت بنر، نشان روی آیکون یا سیگنال‌های صوتی نمایش داده می‌شوند و توجه کاربر را به برنامه جلب کرده و درباره رویدادهای مهم اطلاع می‌دهند.

تعریف و هدف

اعلان Push از عنوان، بدنه پیام و داده‌های اختیاری (payload) تشکیل شده است. برخلاف SMS، اعلان‌های Push برای کاربر رایگان هستند و از طریق زیرساخت سرویس‌های ابری — FCM برای Android و APNS برای iOS تحویل داده می‌شوند. اهداف اصلی اعلان‌های Push: افزایش تعامل، اطلاع‌رسانی درباره رویدادها و بازگرداندن کاربر به برنامه.

آمار استفاده نشان می‌دهد که اعلان‌های Push به درستی پیکربندی شده نرخ نگهداشت برنامه را 30-60% افزایش می‌دهند. با این حال، فراوانی بیش از حد اعلان‌ها منجر به لغو اشتراک می‌شود — بیش از 60% کاربران اگر بیش از سه بار در روز اعلان دریافت کنند، آن‌ها را غیرفعال می‌کنند.

معماری سیستم Push

سیستم Push از سه مؤلفه تشکیل شده است: سرور برنامه (app server)، سرویس پلتفرم (FCM/APNS) و برنامه کلاینت روی دستگاه. سرور درخواستی به سرویس پلتفرم ارسال می‌کند که اعلان را از طریق اتصال دائمی با سیستم عامل به دستگاه مقصد تحویل می‌دهد.

اعلان‌های Push چگونه کار می‌کنند؟

مکانیسم تحویل اعلان‌های Push بر اساس اتصال دائمی بین دستگاه و سرویس پلتفرم است. سیستم عامل یک کانال ارتباطی رمزگذاری شده را حفظ می‌کند که تمام پیام‌های Push از آن عبور می‌کنند.

ثبت‌نام و دریافت توکن

در اولین راه‌اندازی، برنامه اجازه ارسال اعلان‌ها را درخواست کرده و یک توکن منحصربه‌فرد دستگاه از FCM یا APNS دریافت می‌کند. این توکن رشته‌ای به طول تا 4 کیلوبایت است که نمونه برنامه را به طور یکتا شناسایی می‌کند. توکن هنگام نصب مجدد برنامه یا بازیابی دستگاه از پشتیبان تغییر می‌کند.

kotlin
class FirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        showNotification(message.notification)
    }
}

ارسال از طریق سرور برنامه

سرور برنامه یک درخواست HTTP به FCM API یا APNS API ارسال می‌کند و توکن مقصد، عنوان، بدنه و داده‌های اضافی را مشخص می‌کند. سرویس پلتفرم با وضعیت تحویل پاسخ می‌دهد: success، invalid token (دستگاه برنامه را حذف کرده) یا rate-limited (تکرار ارسال بیش از حد مجاز).

js
fetch("https://fcm.googleapis.com/fcm/send", {
    method: "POST",
    headers: {
        "Authorization": "key=AIzaSy...",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        to: "device_token_here",
        notification: {
            title: "ارسال توکن به سرور خود",
            body: "شما یک اعلان جدید دارید!"
        }
    })
})

FCM در مقابل APNS: مقایسه پلتفرم‌ها

انتخاب بین FCM و APNS به پلتفرم هدف بستگی دارد. FCM از Android و iOS پشتیبانی می‌کند، APNS — فقط اکوسیستم Apple. بیایید تفاوت‌های کلیدی مهم برای توسعه برنامه‌های موبایل چندپلتفرمی را بررسی کنیم.

Firebase Cloud Messaging (FCM)

FCM سرویس Google است که بر روی Google Play Services کار می‌کند. از دو طرح تحویل پشتیبانی می‌کند: اعلان‌های با نمایش خودکار (display notifications) و اعلان‌های داده که برنامه خودشان پردازش می‌کند. FCM رایگان است و محدودیتی در تعداد پیام‌های ارسالی ندارد.

Apple Push Notification Service (APNS)

APNS سرویس Apple با پشتیبانی از پیوست‌های چندرسانه‌ای (تصاویر، ویدئو، صدا) با اندازه تا 10 مگابایت است. برای ارسال از طریق APNS به گواهی TLS یا کلید احراز هویت نیاز است. APNS فرکانس ارسال به یک دستگاه را محدود می‌کند — حداکثر 150 اعلان در دقیقه، پس از آن محدودیت نرخ اعمال می‌شود.

ویژگیFCMAPNS
پلتفرم‌هاAndroid, iOS, WebiOS, macOS, watchOS
نیازمندی‌هاGoogle Play ServicesApple Developer Program
رسانهتا 4 کیلوبایت (داده)تا 10 مگابایت (پیوست)
اولویتnormal/highimmediate/power-saving
هزینهرایگانرایگان (حساب کاربری لازم است)

انواع اعلان‌های Push

اعلان‌های Push بر اساس روش نمایش و هدف طبقه‌بندی می‌شوند. درک انواع به انتخاب استراتژی مناسب برای هر سناریوی تعامل با کاربر کمک می‌کند.

اعلان‌های متنی (Display Notifications)

رایج‌ترین نوع — اعلان نمایشی با عنوان و بدنه. سیستم عامل به طور خودکار آن را در پنل اعلانات، صفحه قفل و به صورت بنر نشان می‌دهد. توسعه‌دهنده می‌تواند صدا، لرزش، نشان روی آیکون و دکمه‌های اقدام برای عملیات مستقیم (پاسخ، باز کردن، رد کردن) را تنظیم کند.

اعلان‌های داده (Data Notifications)

اعلان‌های داده فقط payload بدون نمایش بصری دارند. برنامه آن‌ها را در پس‌زمینه پردازش می‌کند: داده‌ها را همگام‌سازی می‌کند، حافظه نهان را به‌روز می‌کند یا دانلود را شروع می‌کند. در Android اعلان‌های داده به طور تضمینی تحویل داده می‌شوند، در iOS — فقط زمانی که برنامه فعال است یا از طریق background fetch.

اعلان‌های چندرسانه‌ای و غنی

سیستم‌عامل‌های مدرن موبایل از اعلان‌های پیشرفته و رسانه‌ای با تصاویر، GIF، ویدئو و صدا پشتیبانی می‌کنند. در iOS این از طریق UNNotificationAttachment پیاده‌سازی می‌شود، در Android — از طریق BigPictureStyle و InboxStyle برای شخصی‌سازی ظاهر اعلان در پنل سیستم.

اعلان‌های بی‌صدا (Silent)

اعلان‌های بی‌صدا به کاربر نمایش داده نمی‌شوند و برای همگام‌سازی پس‌زمینه استفاده می‌شوند. در iOS اولویت بالایی برای کارهایی مانند به‌روزرسانی داده قبل از باز کردن برنامه دارند. Android آن‌ها را به عنوان اعلان‌های داده با اولویت حداقل در نظر می‌گیرد.

پیکربندی اعلان‌های Push در پروژه

پیکربندی اعلان‌های Push نیازمند اقداماتی در سطح زیرساخت، بخش سرور و کد کلاینت است. بیایید فرآیند معمول برای یک پروژه موبایل چندپلتفرمی را بررسی کنیم.

پیکربندی FCM برای Android

برای Android باید یک پروژه در Firebase Console ایجاد کنید، فایل google-services.json را به پروژه اضافه کنید و FirebaseMessagingService را پیکربندی کنید. توکن دستگاه از طریق FirebaseInstanceId یا FirebaseMessaging.getInstance().token به دست می‌آید و سپس از طریق API در اولین راه‌اندازی یا هنگام تغییر آن به سرور ارسال می‌شود.

پیکربندی APNS برای iOS

برای iOS اشتراک Apple Developer Program، ایجاد گواهی Push یا کلید APNS در Developer Portal و فعال کردن Capability Push Notifications در Xcode لازم است. ثبت‌نام برای اعلان‌ها از طریق UIApplication.shared.registerForRemoteNotifications با دریافت deviceToken در AppDelegate انجام می‌شود.

swift
import UIKit
import UserNotifications

@main
class AppDelegate: UIResponder,
    UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken
        deviceToken: Data
    ) {
        let token = deviceToken
            .map { String.format("%02x", $0) }
            .joined()
        // ارسال token به سرور خود
    }
}

ارسال سمت سرور

در سمت سرور اعلان‌های Push از طریق REST API یا Admin SDK ارسال می‌شوند. برای FCM از Firebase Admin SDK (موجود برای Node.js، Java، Python، Go)، برای APNS از کتابخانه‌های pusher (pushy برای Java، apn2 برای Node.js) استفاده می‌شود. توصیه می‌شود توکن‌ها را در پایگاه داده با زمان آخرین به‌روزرسانی ذخیره کنید.

امنیت اعلان‌های Push

امنیت اعلان‌های Push بسیار مهم است زیرا ممکن است داده‌های محرمانه از طریق آن‌ها منتقل شود. هر دو پلتفرم مکانیسم‌های حفاظتی پایه را فراهم می‌کنند، اما توسعه‌دهنده باید از آن‌ها به درستی استفاده کند.

رمزگذاری payload

Payload اعلان Push ممکن است حاوی داده‌های شخصی کاربران باشد: نام‌ها، مبالغ تراکنش‌ها، پیوندهای پیام‌ها. حتی اگر کانال ارتباطی بین FCM/APNS و دستگاه رمزگذاری شده باشد، داده‌ها ممکن است در سطح برنامه هنگام رهگیری اعلان توسط نرم‌افزار شخص ثالث رهگیری شوند. توصیه می‌شود payload حساس را روی سرور با الگوریتم AES-256 رمزگذاری کرده و روی دستگاه با کلید ذخیره شده در Keychain (iOS) یا EncryptedSharedPreferences (Android) رمزگشایی کنید.

تأیید توکن‌ها روی سرور

توکن دستگاه یک شناسه جلسه است که ممکن است در صورت هک دستگاه یا رهگیری ترافیک به خطر بیفتد. سرور برنامه باید قبل از ارسال توکن‌ها را بررسی کند: آن‌ها را با پایگاه داده مطابقت دهد، توکن‌های غیرفعال را ردیابی کرده و در صورت خطاهای مکرر InvalidToken آن‌ها را حذف کند. FCM و APNS برای توکن‌های نامعتبر وضعیت InvalidRegistration را برمی‌گردانند — آن را نادیده نگیرید.

محافظت در برابر اسپم اعلان‌ها

بدون کنترل فرکانس، اعلان‌های Push می‌توانند به ابزاری برای اسپم تبدیل شوند که کاربران را آزار داده و نرخ نگهداشت را کاهش می‌دهد. روی سرور محدودیت‌هایی تعیین کنید: حداکثر ۵ اعلان در ساعت برای یک کاربر و حداکثر ۳ پیام مشابه. برای اعلان‌های تراکنشی (تأیید سفارش، تغییر رمز عبور) محدودیت‌ها می‌توانند بالاتر باشند — تا ۱۰ در ساعت، زیرا اطلاعات حیاتی دارند. از محدودیت نرخ در سطح API ارسال استفاده کنید تا مهاجم نتواند از طریق سرور شما ارسال انبوه انجام دهد.

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

آیا می‌توان اعلان‌های Push را بدون FCM در Android ارسال کرد؟

بله، اتصال مستقیم به APNS در Android پشتیبانی نمی‌شود — برای دستگاه‌های بدون Google Play Services از جایگزین‌هایی مانند Huawei Mobile Services (HMS) و اتصالات WebSocket اختصاصی استفاده می‌شود. با این حال FCM به دلیل رایگان بودن و قابلیت اطمینان برای اکثر برنامه‌ها استاندارد باقی می‌ماند.

تحویل Push هنگام قطع بودن اینترنت چگونه کار می‌کند؟

FCM و APNS آخرین اعلان را روی سرورهای خود ذخیره می‌کنند و پس از برقراری مجدد اتصال آن را تحویل می‌دهند. روی هر دستگاه فقط آخرین اعلان از هر برنامه ذخیره می‌شود، بنابراین در غیاب طولانی شبکه پیام‌های میانی از دست می‌روند.

چرا اعلان‌های Push در iOS دریافت نمی‌شوند؟

شایع‌ترین دلایل — گواهی Push منقضی شده APNS (۱ سال اعتبار)، توکن دستگاه نامعتبر، اعلان‌های غیرفعال در تنظیمات یا حالت ذخیره انرژی فعال. گواهی را در Apple Developer Console بررسی کنید و مطمئن شوید برنامه از طریق UNUserNotificationCenter اجازه درخواست می‌کند.

چگونه باز کردن اعلان Push توسط کاربر را ردیابی کنیم؟

در Android از PendingIntent در NotificationCompat.Builder با ردیابی باز شدن از طریق Intent استفاده کنید. در iOS — متد UNUserNotificationCenterDelegate.userNotificationCenter(_:didReceive:withCompletionHandler:). FCM برای هر اعلان ارسالی گزارش‌های تحویل و باز شدن ارائه می‌دهد.

آیا اعلان‌های Push بر باتری تأثیر می‌گذارند؟

به میزان کمی — اعلان‌های Push اتصال دائمی ندارند؛ سیستم عامل از یک کانال سیستمی واحد برای همه برنامه‌ها استفاده می‌کند که مصرف کلی انرژی را به حداقل می‌رساند. ارسال مکرر (هر ۵ دقیقه) انرژی بیشتری برای بیدار کردن دستگاه و خروج از حالت خواب مصرف می‌کند. اعلان‌های بی‌صدا در iOS به دلیل فعال شدن برنامه در پس‌زمینه برای پردازش داده‌های دریافتی انرژی بیشتری مصرف می‌کنند.

خلاصه

  • اعلان‌های Push — پیام‌های سرور به دستگاه از طریق FCM یا APNS.
  • توکن دستگاه — شناسه یکتا برای تحویل هدفمند Push.
  • FCM از Android، iOS و Web پشتیبانی می‌کند؛ APNS — فقط اکوسیستم Apple.
  • اعلان‌های داده در پس‌زمینه بدون نمایش به کاربر پردازش می‌شوند.
  • اعلان‌های رسانه‌ای در iOS از پیوست‌های تا ۱۰ مگابایت، در Android از طریق استایل‌های پیشرفته پشتیبانی می‌کنند.
  • گواهی‌های APNS نیاز به تمدید سالانه در Apple Developer Portal دارند.
  • محدودیت نرخ FCM و APNS از کاربران در برابر اسپم اعلان محافظت می‌کند و فرکانس ارسال به هر دستگاه را محدود می‌کند.

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

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

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

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