Notification Permission: این چیست، انواع اعلان‌ها و اصل کار

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

Notification Permission — این مجوزی است که برنامه برای ارسال اعلان‌های فشار و اعلان‌های محلی به کاربر نیاز دارد. از Android 13 و iOS 12 به بعد، برنامه‌ها موظف هستند این مجوز را در زمان اجرا از طریق دیالوگ سیستمی درخواست کنند. طبق Android Developers, 2024، بدون رضایت صریح کاربر، برنامه نمی‌تواند اعلان‌ها را در دستگاه‌های Android 13 و بالاتر نمایش دهد.

نکات اصلی

  • Notification Permission — مجوز زمان اجرا برای ارسال اعلان‌ها، اجباری در Android 13+ و iOS 12+.
  • Android 13 مجوز POST_NOTIFICATIONS را معرفی کرد که باید در زمان اجرا از طریق Activity Result API درخواست شود.
  • iOS از UNUserNotificationCenter.requestAuthorization برای درخواست دسترسی به اعلان‌های محلی و فشاری استفاده می‌کند.
  • رد مجوز باعث می‌شود برنامه نتواند نه اعلان‌های محلی و نه اعلان‌های فشاری را نمایش دهد.
  • درخواست مجدد پس از اولین رد امکان‌پذیر نیست — باید کاربر را به تنظیمات سیستم هدایت کنید.

Notification Permission چیست؟

Notification Permission — این یک مجوز سیستمی است که توانایی برنامه را برای ارسال اعلان‌ها به کاربر تنظیم می‌کند. تا Android 13 همه برنامه‌ها می‌توانستند بدون درخواست اعلان‌ها را نمایش دهند — کافی بود مجوز را در مانیفست اعلام کنند. اما با افزایش هرزنامه و اعلان‌های مزاحم، Google درخواست اجباری زمان اجرا را مشابه iOS اعمال کرد.

در iOS مجوز اعلان از iOS 8 اجباری بود و از iOS 12 به بعد اعلان‌های موقت (provisional) ظاهر شدند — اعلان‌های خاموشی که بدون صدا تحویل داده می‌شوند و بدون درخواست صریح در مرکز اعلان‌ها نمایش داده می‌شوند. اعلان‌های موقت به توسعه‌دهنده اجازه می‌دهند قبل از درخواست مجوز کامل، ارزش اعلان‌ها را به کاربر نشان دهد.

طبق Localytics (2024)، 61% کاربران iOS و 55% کاربران Android پس از درخواست با دریافت اعلان‌های فشار موافقت می‌کنند. نرخ تبدیل رضایت مستقیماً به زمینه درخواست بستگی دارد: برنامه‌هایی که پس از اولین تعامل ارزشمند مجوز را درخواست می‌کنند، 40% رضایت بیشتری نسبت به آنهایی که در اولین راه‌اندازی درخواست می‌کنند، دریافت می‌کنند.

تکامل مجوزهای اعلان

تکامل مجوزهای اعلان نشان می‌دهد که چگونه پلتفرم‌ها به تدریج دسترسی برنامه‌ها را به این کانال ارتباطی محدود کردند. درک این تکامل به توسعه‌دهنده کمک می‌کند تا نسخه‌های مختلف سیستم‌عامل را به درستی مدیریت کند.

Android: از دسترسی آزاد تا کنترل سختگیرانه

تا Android 13 (2022) هر برنامه‌ای می‌توانست بدون رضایت کاربر اعلان‌ها را نمایش دهد. Android 8.0 (2017) کانال‌های اعلان را معرفی کرد، Android 12 (2021) مسدودسازی خودکار اعلان‌های مزاحم را اضافه کرد و در نهایت Android 13 درخواست POST_NOTIFICATIONS را در زمان اجرا اجباری کرد. برای برنامه‌هایی که targetSdkVersion آنها زیر 33 است، سیستم به طور خودکار مجوز را اعطا می‌کند، اما Google Play از آگوست 2023 به‌روزرسانی targetSdkVersion به 33+ را الزامی می‌کند.

iOS: تقویت تدریجی کنترل

iOS 8 (2014) درخواست اجباری مجوز را از طریق UIUserNotificationSettings معرفی کرد. iOS 10 (2016) UNUserNotificationCenter را با پشتیبانی از اعلان‌های غنی معرفی کرد. iOS 12 (2018) اعلان‌های موقت و اعلان‌های گروهی را اضافه کرد. iOS 15 (2021) حالت Focus را معرفی کرد که می‌تواند مستقل از مجوز برنامه، اعلان‌ها را مسدود کند. شفافیت ردیابی برنامه (iOS 14.5) با اعلان‌ها مرتبط نیست اما بر فرهنگ کلی درخواست مجوز تأثیر گذاشت.

وضعیت فعلی

در حال حاضر هر دو پلتفرم نیاز به درخواست Notification Permission در زمان اجرا دارند. توسعه‌دهنده دیگر نمی‌تواند به فعال‌سازی خودکار اعلان‌ها تکیه کند. کاربر کنترل کامل دارد که کدام برنامه‌ها می‌توانند او را مطلع کنند. کانال‌های اعلان در Android و دسته‌بندی‌های اعلان در iOS به کاربر اجازه می‌دهند انواع اعلان‌های دریافتی را به طور دقیق تنظیم کند.

Notification Permission در Android

Notification Permission در Android از طریق مجوز POST_NOTIFICATIONS که در مانیفست اعلام شده است، با درخواست زمان اجرا برای Android 13+ انجام می‌شود.

اعلام در مانیفست

برای Android 13+ باید مجوز POST_NOTIFICATIONS را در AndroidManifest.xml اعلام کنید. برای سازگاری با Android 12 و پایین‌تر، مجوز به طور خودکار توسط سیستم اعطا می‌شود — اقدام اضافی لازم نیست.

xml
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

درخواست زمان اجرا در Kotlin

درخواست مجوز POST_NOTIFICATIONS از طریق Activity Result API انجام می‌شود. بررسی نسخه SDK مهم است: در Android 12 و پایین‌تر درخواست لازم نیست، مجوز به طور خودکار اعطا شده در نظر گرفته می‌شود.

kotlin
private val notificationPermissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        createNotificationChannel()
        showPushNotification()
    } else {
        logPermissionDenied()
    }
}

fun requestNotificationAccess() {
    if (Build.version.SDK_INT <= Build.VERSION_CODES.S_V2) {
        // Android 12 و پایین‌تر — مجوز به طور خودکار اعطا می‌شود
        showNotification()
        return
    }
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
        showNotification()
    } else {
        notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
    }
}

ایجاد کانال‌های اعلان

در Android 8.0+ برنامه باید قبل از ارسال اولین اعلان، یک کانال اعلان از طریق NotificationChannel ایجاد کند. کانال دارای اهمیت (importance) از IMPORTANCE_NONE تا IMPORTANCE_HIGH است که تعیین می‌کند آیا اعلان با صدا و به صورت بنر نمایش داده می‌شود یا خیر. اگر کاربر اعلان‌ها را برای برنامه غیرفعال کرده باشد، کانال‌های جدید تا فعال‌سازی مجدد در تنظیمات اثری نخواهند داشت. توصیه می‌شود برای انواع مختلف اعلان‌ها کانال‌های جداگانه ایجاد کنید: پیام‌ها، تبلیغات، رویدادهای سیستمی.

kotlin
private fun createNotificationChannel() {
    val channel = NotificationChannel(
        CHANNEL_ID_MESSAGES,
        "پیام‌ها",
        NotificationManager.IMPORTANCE_HIGH
    ).apply {
        description = "اعلان‌های پیام‌های جدید"
        enableVibration = true
    }
    val manager = getSystemService(NotificationManager::class.java)
    manager.createNotificationChannel(channel)
}

Notification Permission در iOS

Notification Permission در iOS از طریق UNUserNotificationCenter درخواست می‌شود. Apple یک رویکرد دو مرحله‌ای را توصیه می‌کند: ابتدا اعلان‌های موقت را درخواست کنید، سپس پس از نمایش ارزش، مجوز کامل را درخواست کنید.

درخواست در Swift با گزینه موقت

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

swift
import UserNotifications

func requestNotificationPermission() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
        if let error = error {
            print("Notification error: \(error.localizedDescription)")
            return
        }
        if granted {
            registerForRemoteNotifications()
        } else {
            handleDeniedPermission()
        }
    }
}

func requestProvisionalOnly() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.provisional, .alert, .badge, .sound]) { granted, error in
        // Provisional — کاربر دیالوگ را نمی‌بیند
        // اعلان‌ها بدون صدا در مرکز اعلان‌ها وارد می‌شوند
        registerForRemoteNotifications()
    }
}

بررسی وضعیت و تنظیمات سیستم

وضعیت فعلی Notification Permission در iOS را می‌توان از طریق UNUserNotificationCenter.current().getNotificationSettings دریافت کرد. وضعیت‌های .authorized، .denied، .provisional یا .notDetermined به برنامه اجازه می‌دهند رفتار مناسب را انتخاب کند. پس از اولین رد، دیالوگ سیستمی دوباره نمایش داده نمی‌شود — باید کاربر را از طریق UIApplication.openSettingsURLString به تنظیمات هدایت کنید. Apple همچنین مدیریت وضعیت .ephemeral (iOS 17+) را توصیه می‌کند که اعلان‌های موقتی برای سناریوهای خاص فراهم می‌کند.

بهترین روش‌های درخواست اعلان

بهترین روش‌ها درخواست Notification Permission با هدف افزایش نرخ تبدیل رضایت و کاهش ریزش کاربران است. درخواست نادرست نه تنها می‌تواند برنامه را از امکان ارسال اعلان‌ها محروم کند، بلکه می‌تواند منجر به حذف برنامه شود.

در اولین راه‌اندازی درخواست نکنید

رایج‌ترین ضدالگو — درخواست Notification Permission در اولین راه‌اندازی برنامه است. کاربر هنوز ارزش برنامه را درک نکرده و با احتمال بالایی رد می‌کند. لحظه optimal — پس از انجام اولین اقدام هدف‌مند توسط کاربر: ثبت سفارش، ارسال پیام، اشتراک در به‌روزرسانی‌ها. درخواست پس از ارزش نرخ تبدیل رضایت را به 65-75% افزایش می‌دهد.

از صفحه پیش‌مجوز استفاده کنید

قبل از دیالوگ سیستمی، صفحه خود را با نمونه‌هایی از اعلان‌هایی که کاربر دریافت خواهد کرد نمایش دهید. نمونه‌ای از اعلان آینده با متن و آیکون نشان دهید. اگر کاربر ببیند که اعلان‌ها مفید و غیرمزاحم خواهند بود، با احتمال بیشتری موافقت می‌کند. نمونه اعلان در صفحه مقدماتی تکنیک مؤثری است که نرخ تبدیل را 35-50% افزایش می‌دهد.

از اعلان‌های موقت در iOS استفاده کنید

درخواست پیش‌دستانه اعلان‌های موقت در iOS امکان تحویل اعلان‌ها را بدون رضایت صریح کاربر فراهم می‌کند. اگر کاربر در این اعلان‌ها ارزش ببیند، می‌تواند از طریق منوی زمینه اعلان، اعلان‌های کامل را فعال کند. Apple توصیه می‌کند این رویکرد را برای برنامه‌های خبری، آب‌وهوا و سایر خدماتی که اعلان‌ها اطلاعاتی هستند نه تراکنشی. طبق Apple WWDC 2024، این رویکرد نرخ تبدیل رضایت کامل را 20-30% افزایش می‌دهد.

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

اگر کاربر Notification Permission را رد کرد چه باید کرد؟

پس از رد، دیالوگ سیستمی دوباره نمایش داده نمی‌شود. تنها راه فعال‌سازی اعلان‌ها هدایت کاربر به تنظیمات سیستم است: از طریق Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) در Android یا UIApplication.openSettingsURLString در iOS. صفحه‌ای با راهنما و دکمه انتقال نمایش دهید.

Notification Permission در Android 12 و پایین‌تر چگونه کار می‌کند؟

در Android 12 و پایین‌تر Notification Permission لازم نیست — همه برنامه‌ها می‌توانند بدون درخواست اعلان ارسال کنند. با این حال کاربر می‌تواند در هر زمان از طریق تنظیمات سیستم اعلان‌ها را غیرفعال کند. از Android 13 به بعد، درخواست زمان اجرا برای targetSdkVersion 33+ اجباری است.

کانال‌های اعلان در Android چیست؟

NotificationChannel — دسته‌بندی اعلان‌ها است که در Android 8.0 معرفی شد. هر کانال دارای نام، توضیحات، اهمیت (importance) و گروه است. کاربر می‌تواند کانال‌های جداگانه را بدون غیرفعال کردن همه اعلان‌های برنامه خاموش کند. برای مثال، کانال «پیام‌های جدید» و کانال «خبرنامه تبلیغاتی» را می‌توان به طور متفاوت تنظیم کرد.

آیا می‌توان بدون Notification Permission اعلان ارسال کرد؟

در Android 13+ بدون POST_NOTIFICATIONS هر فراخوانی NotificationManager.notify توسط سیستم نادیده گرفته می‌شود. در iOS بدون مجوز UNUserNotificationCenter اعلان‌ها تحویل داده نمی‌شوند. استثنا: Provisional در iOS (بدون صدا، فقط در مرکز اعلان‌ها) و Android 12- (مجوز لازم نیست).

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

در Android از NotificationManagerCompat.areNotificationsEnabled() استفاده کنید. در iOS UNUserNotificationCenter.current().getNotificationSettings را فراخوانی کرده و ویژگی authorizationStatus را بررسی کنید. برای Android همچنین اهمیت کانال را بررسی کنید: NotificationChannel.getImportance() نباید IMPORTANCE_NONE باشد.

خلاصه

  • Notification Permission — مجوز زمان اجرای اجباری برای ارسال اعلان‌ها در Android 13+ و iOS 12+.
  • Android 13 POST_NOTIFICATIONS را با درخواست زمان اجرا معرفی کرد، برای Android 12 و پایین‌تر مجوز خودکار است.
  • iOS از UNUserNotificationCenter با پشتیبانی از اعلان‌های موقت برای تحویل خاموش بدون رضایت استفاده می‌کند.
  • درخواست پس از ارزش — درخواست پس از اولین اقدام ارزشمند کاربر، نرخ تبدیل رضایت را به 75% افزایش می‌دهد.
  • صفحه پیش‌مجوز با نمونه اعلان، نرخ تبدیل را طبق تحقیقات صنعتی 35-50% افزایش می‌دهد.
  • اعلان‌های موقت در iOS امکان نمایش ارزش اعلان‌ها را قبل از درخواست مجوز کامل فراهم می‌کنند.
  • کانال‌های اعلان در Android کنترل دقیقی بر انواع اعلان‌های دریافتی به کاربر می‌دهند.

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

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

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

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