إذن تشغيل الإشعارات

يتيح نظام التشغيل Android 13 (المستوى 33 من واجهة برمجة التطبيقات) والإصدارات الأحدث إذن التشغيل لإرسال إشعارات غير مستثناة (بما في ذلك إشعارات الخدمات التي تعمل في المقدّمة (FGS)) من أحد التطبيقات: POST_NOTIFICATIONS. يساعد هذا التغيير المستخدمين في التركيز على الإشعارات الأكثر أهمية بالنسبة إليهم.

ننصحك بشدة باستهداف الإصدار 13 من Android أو الإصدارات الأحدث في أقرب وقت ممكن للاستفادة من عناصر التحكّم الإضافية والمرونة التي تقدّمها هذه الميزة. إذا واصلت استهداف 12L (المستوى 32 لواجهة برمجة التطبيقات) أو أقل، ستفقد بعض المرونة بشأن طلب الإذن في سياق وظيفة تطبيقك.

الإفصاح عن الإذن

لطلب إذن الإشعارات الجديد من تطبيقك، عليك تعديل تطبيقك ليعمل على الإصدار 13 من نظام التشغيل Android وتنفيذ عملية مشابهة لتلك التي تتم عند طلب أذونات التشغيل الأخرى، كما هو موضّح في الأقسام التالية.

يظهر الإذن الذي يجب الإفصاح عنه في ملف بيان تطبيقك في مقتطف الرمز البرمجي التالي:

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

تعتمد إمكانات التطبيق على اختيار المستخدم في مربّع حوار الأذونات

في مربّع الحوار هذا، تتوفّر للمستخدمين الإجراءات التالية:

توضّح الأقسام التالية سلوك تطبيقك استنادًا إلى الإجراء الذي يتّخذه المستخدم.

يختار المستخدم "السماح".

إذا اختار المستخدم الخيار allow، يمكن لتطبيقك إجراء ما يلي:

يختار المستخدم "عدم السماح".

إذا اختار المستخدم الخيار عدم السماح، لن يتمكّن تطبيقك من إرسال رسائل ليقظة ما لم يكن مؤهلاً للحصول على إعفاء. يتم حظر جميع قنوات الإشعارات، باستثناء بعض الأدوار المحدّدة. ويشبه ذلك السلوك الذي يحدث عندما يوقف المستخدم يدويًا جميع الإشعارات لتطبيقك في إعدادات النظام.

تحذير: إذا كان تطبيقك يستهدف الإصدار 12L أو إصدارًا أقل، وانقر المستخدم على عدم السماح، حتى ولو مرة واحدة، لن يُطلب منه الموافقة مرة أخرى إلى أن يحدث أحد الإجراءَين التاليَين:

  • يلغي المستخدم تثبيت تطبيقك ثم أعاد تثبيته.
  • يجب تحديث تطبيقك لاستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث.

تمرير المستخدم سريعًا بعيدًا عن مربع الحوار

إذا مرّر المستخدم سريعًا للخروج من مربّع الحوار، أي لم يختار السماح أو عدم السماح، لن تتغيّر حالة إذن الإشعارات.

التأثيرات على التطبيقات المثبَّتة حديثًا

إذا ثبَّت أحد المستخدمين تطبيقك على جهاز يعمل بنظام Android 13 أو إصدار أحدث، سيتم إيقاف إشعارات تطبيقك تلقائيًا. يجب أن ينتظر تطبيقك لإرسال إشعارات إلى أن تطلب الإذن الجديد ويمنحه المستخدم لتطبيقك.

يعتمد الوقت الذي يظهر فيه مربّع حوار الأذونات على إصدار حزمة تطوير البرامج (SDK) المستهدف لتطبيقك:

  • إذا كان تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android أو إصدارًا أحدث، سيتمكّن التطبيق من التحكّم بشكل كامل في وقت ظهور مربّع حوار الأذونات. اغتنم هذه الفرصة لتشرح للمستخدمين سبب احتياج التطبيق إلى هذا الإذن وتشجيعهم على منحه.
  • إذا كان تطبيقك يستهدف الإصدار 12L (المستوى 32 لواجهة برمجة التطبيقات) أو إصدارًا أقدم، يعرض النظام مربع حوار الإذن في المرة الأولى التي يبدأ فيها تطبيقك نشاطًا بعد أن تنشئ قناة إشعارات، أو عندما يبدأ تطبيقك نشاطًا ثم ينشئ أول قناة إشعارات له. ويكون ذلك عادةً عند بدء تشغيل التطبيق.

تأثيرات التحديثات على التطبيقات الحالية

للحدّ من الانقطاعات المرتبطة بإذن الإشعارات، منح التلقائي للإذن مسبقًا لجميع التطبيقات المؤهَّلة عندما يُجري المستخدم ترقية لجهازه إلى Android 13 أو إصدار أحدث بعبارة أخرى، يمكن لهذه التطبيقات مواصلة إرسال إشعارات إلى المستخدمين، ولا تظهر للمستخدمين رسالة طلب إذن التشغيل.

الأهلية للحصول على الإذن مسبقًا

لكي يكون تطبيقك مؤهَّلاً للحصول على إذن مسبق تلقائي، يجب أن يتضمّن قناة إشعارات حالية وألا يكون قد أوقف المستخدم إشعاراته بشكل صريح على جهاز يعمل بنظام التشغيل 12L أو إصدار أقدم.

إذا أوقف المستخدم إشعارات تطبيقك على جهاز يعمل بالإصدار 12L أو إصدار أقدم، سيستمر هذا الرفض عند ترقية الجهاز إلى الإصدار 13 من نظام التشغيل Android أو إصدار أحدث.

الإعفاءات

يتضمّن هذا القسم مجموعة من الإشعارات والتطبيقات المستثناة من تغيير سلوك إذن إرسال الإشعارات. في الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، إذا رفض المستخدم إذن الإشعارات، سيظل بإمكانه الاطّلاع على الإشعارات المتعلّقة بالخدمات التي تعمل في المقدّمة في مدير المهام ولكن لن تظهر له في درج الإشعارات.

جلسات الوسائط

إنّ الإشعارات ذات الصلة بجلسات الوسائط معفوة من هذا التغيير في السلوك.

التطبيقات التي تم ضبطها لإدارة المكالمات الهاتفية ذاتيًا

إذا كان تطبيقك يضبط نفسه لإدارة المكالمات الهاتفية بنفسه، لن تحتاج إلى إذن POST_NOTIFICATIONS لكي يرسل تطبيقك إشعارات تستخدِم أسلوب الإشعار Notification.CallStyle.

يعتبر النظام أنّ تطبيقك قد ضبط نفسه للإدارة الذاتية للمكالمات الهاتفية في حال إجراء كلّ من الإجراءات التالية:

  1. يُستخدَم لتعريف الإذن MANAGE_OWN_CALLS.
  2. تنفيذ واجهة ConnectionService
  3. التسجيل لدى مقدّم خدمات الاتصالات للجهاز من خلال الاتصال بالرقم registerPhoneAccount()

اختبار تطبيقك

يمكنك تقييم مدى تأثير إذن إرسال الإشعارات في تطبيقك عند استخدامه لأول مرة على جهاز يعمل بنظام التشغيل Android 13 أو إصدار أحدث. تتيح لك المجموعات التالية من أوامر Android Debug Bridge (ADB) محاكاة التسلسلات الأكثر شيوعًا لاختيارات المستخدمين وعمليات ترقية الجهاز بدون الحاجة إلى إعادة ضبط جهاز الاختبار:

  • تم تثبيت التطبيق مؤخرًا على جهاز يعمل بالإصدار 13 من نظام التشغيل Android أو إصدار أحدث:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • يُبقي المستخدم الإشعارات مفعَّلة عند تثبيت التطبيق على جهاز يعمل بالإصدار 12L أو إصدار أقدم، ثم يتم ترقية الجهاز إلى Android 13 أو إصدار أحدث:

    adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • أوقف المستخدم الإشعارات يدويًا عند تثبيت التطبيق على جهاز يعمل بالإصدار 12L أو إصدار أقدم، ثم تمت ترقية الجهاز إلى Android 13 أو إصدار أحدث:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed

أفضل الممارسات

يوضّح هذا القسم عدة طرق يمكنك من خلالها استخدام إذن الإشعارات الجديد بفعالية أكبر في تطبيقك.

تعديل إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك

لمنح تطبيقك مزيدًا من المرونة في تحديد وقت ظهور مربّع حوار الأذونات، حدِّث تطبيقك ليستهدف الإصدار 13 من نظام التشغيل Android أو إصدارًا أحدث.

الانتظار لإظهار طلب الحصول على إذن إرسال الإشعارات

قبل أن تطلب من المستخدمين منح أي أذونات، دعهم يتعرفون على تطبيقك.

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

  • ينقر المستخدم على زر "جرس التنبيه".
  • يختار المستخدم متابعة حساب شخص ما على وسائل التواصل الاجتماعي.
  • يرسل المستخدم طلبًا لتوصيل الطعام.

يعرض الشكل 1 سير عمل مقترَحًا لطلب إذن إرسال الإشعارات. ما لم يعرض shouldShowRequestPermissionRationale() true، لا يحتاج تطبيقك إلى عرض الشاشة الوسطى التي يضمّن عنوانها النص "تلقّي إشعارات".

بدلاً من ذلك، يمكنك ضبط طلب ليظهر بعد أن تمنح المستخدمين فرصة للتعلّم عن تطبيقك. على سبيل المثال، يمكنك الانتظار إلى المرة الثالثة أو الرابعة التي يشغّل فيها المستخدم تطبيقك.

بعد تسجيل دخول المستخدم، تظهر له دعوة
   لتلقّي إشعارات بشأن آخر المعلومات المتعلّقة بالرحلة. بعد أن يضغط المستخدم على زر
   &quot;حسنًا&quot;، يطلب التطبيق الإذن الجديد، ما يؤدي إلى ظهور مربّع حوار
   النظام.
الشكل 1. سير عمل مقترَح يستند إلى المستخدم لطلب إذن إرسال الإشعارات لا تكون الشاشة الوسطى ضرورية إلا إذا كانت shouldShowRequestPermissionRationale() تعرِض true.

طلب الإذن حسب السياق

عند طلب أذونات إرسال الإشعارات داخل تطبيقك، يجب إجراء ذلك في السياق المناسب لكي يتّضح بوضوح الغرض من استخدام الإشعارات وسبب تفعيل المستخدم لهذه الإشعارات. على سبيل المثال، قد يتضمّن تطبيق البريد الإلكتروني خيارات لإرسال إشعارات عند تلقّي كل رسالة إلكترونية جديدة، أو الرسائل الإلكترونية التي يكون فيها المستخدم هو المستلِم الوحيد.

استخدِم هذه الفرصة لإظهار شفافية نواياك، ومن المرجّح أن يمنح المستخدمون إذن الإشعارات لتطبيقك.

التحقّق مما إذا كان بإمكان تطبيقك إرسال إشعارات

قبل أن يرسل تطبيقك إشعارًا، تأكَّد مما إذا كان المستخدم قد فعَّل الإشعارات لتطبيقك. لإجراء ذلك، اتصل بالرقم areNotificationsEnabled().

استخدام الإذن بمسؤولية

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