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

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

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

بيان الإذن

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

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

<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 أو أقل، يستمر الرفض عند ترقية الجهاز إلى Android 13 أو إصدار أحدث.

الإعفاءات

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

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

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

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

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

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

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

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

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

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

    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().

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

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