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

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

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

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

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

الإعفاءات

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

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

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