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

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

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

تقديم بيان الإذن

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الأهلية لمنح الإذن مسبقًا

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

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

الإعفاءات

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

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

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

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

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

يعتبر النظام أنه قد تم ضبط تطبيقك تلقائيًا للمكالمات الهاتفية المُدارة ذاتيًا إذا أجرى أيًّا مما يلي:

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

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

يمكنك تقييم مدى تأثير إذن إرسال الإشعارات في تطبيقك عند استخدامه لأول مرة على جهاز يعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث. تتيح لك المجموعات التالية من أوامر 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
  • يواصل المستخدم تفعيل الإشعارات عند تثبيت التطبيق على جهاز يعمل بالإصدار 12 لتر من الجهاز أو أقل، وبعد ذلك تتم ترقية الجهاز إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث:

    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
  • يوقِف المستخدم الإشعارات يدويًا عندما يكون التطبيق مثبّتًا على جهاز يعمل بالإصدار 12 لتر من نظام التشغيل أو أقل، وبعد ذلك تتم ترقية الجهاز إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث:

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

استخدام الإذن بشكل مسؤول

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