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، كانت جميع التطبيقات قادرة على عرض الإشعارات بدون طلب — كان يكفي declaration الإذن في البيان. ومع ذلك، مع زيادة البريد العشوائي والإشعارات المزعجة، قدم Google طلباً إلزامياً في وقت التشغيل، مماثلاً لنظام iOS.

على iOS، كان إذن الإشعارات إلزامياً منذ iOS 8، وبدءاً من iOS 12 ظهرت الإشعارات المؤقتة — إشعارات صامتة يتم تسليمها بدون صوت وتظهر في مركز الإشعارات بدون طلب صريح. الإشعارات المؤقتة تسمح للمطور بعرض قيمة الإشعارات للمستخدم قبل طلب الإذن الكامل.

وفقاً لـ 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 يتطلب تحديث targetSdkVersion إلى 33+ منذ أغسطس 2023.

iOS: التعزيز التدريجي للتحكم

iOS 8 (2014) قدم طلب الإذن الإلزامي عبر UIUserNotificationSettings. iOS 10 (2016) قدم UNUserNotificationCenter مع دعم الإشعارات الغنية. iOS 12 (2018) أضاف الإشعارات المؤقتة والإشعارات المجمعة. iOS 15 (2021) قدم وضع التركيز، الذي يمكنه حظر الإشعارات بغض النظر عن إذن التطبيق. App Tracking Transparency (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_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
        // مؤقت — المستخدم لا يرى الحوار
        // تصل الإشعارات بدون صوت إلى مركز الإشعارات
        registerForRemoteNotifications()
    }
}

التحقق من الحالة وإعدادات النظام

يمكن الحصول على حالة Notification Permission الحالية على iOS عبر UNUserNotificationCenter.current().getNotificationSettings. الحالة .authorized أو .denied أو .provisional أو .notDetermined تسمح للتطبيق باختيار السلوك الصحيح. بعد الرفض الأول، لا يظهر حوار النظام مرة أخرى — يجب توجيه المستخدم إلى الإعدادات عبر UIApplication.openSettingsURLString. توصي Apple أيضاً بمعالجة الحالة .ephemeral (iOS 17+)، التي توفر إشعارات مؤقتة لسيناريوهات محددة.

أفضل ممارسات طلب الإشعارات

أفضل الممارسات لطلب Notification Permission تهدف إلى زيادة معدل الموافقة وتقليل فقدان المستخدمين. الطلب غير الصحيح لا يمكن فقط أن يحرم التطبيق من القدرة على إرسال الإشعارات، بل قد يؤدي أيضاً إلى إلغاء تثبيت التطبيق.

لا تطلب عند التشغيل الأول

الأنماط المعاكسة الأكثر شيوعاً هو طلب Notification Permission عند التشغيل الأول للتطبيق. المستخدم لا يفهم بعد قيمة التطبيق ومن المحتمل جداً أن يرفض. اللحظة المثلى هي بعد أن يقوم المستخدم بأول إجراء ذي قيمة: تقديم طلب، إرسال رسالة، الاشتراك في التحديثات. طلب ما بعد القيمة يزيد معدل الموافقة إلى 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. كل قناة لها اسم ووصف ومستوى أهمية ومجموعة. يمكن للمستخدم تعطيل القنوات الفردية بدون تعطيل جميع إشعارات التطبيق. على سبيل المثال، يمكن تكوين قناة “رسائل جديدة” وقناة “النشرات الإعلانية” بشكل مختلف.

هل يمكن إرسال الإشعارات بدون 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 تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

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

اقرأ أيضًا