يتيح الإصدار 13 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 33) والإصدارات الأحدث إذن تشغيل لإرسال إشعارات غير مستثناة (بما في ذلك الخدمات التي تعمل في المقدّمة (FGS)) من أحد التطبيقات:
POST_NOTIFICATIONS.
يساعد هذا التغيير المستخدمين في التركيز على الإشعارات الأكثر أهمية بالنسبة إليهم.
ننصحك باستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث في أقرب وقت ممكن للاستفادة من التحكّم والمرونة الإضافيين لهذه الميزة. إذا واصلت استهداف الإصدار 12L (المستوى 32 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، ستفقد بعض المرونة في طلب الإذن في سياق وظائف تطبيقك.
تضمين الإذن في نماذج البيان
يظهر الإذن الذي عليك تضمينه في ملف بيان تطبيقك في مقتطف الرمز التالي:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
تعتمد إمكانات التطبيق على خيار المستخدم في مربّع حوار الأذونات
في مربّع الحوار هذا، تتوفّر للمستخدمين الإجراءات التالية:
- النقر على السماح
- النقر على عدم السماح
- إزالة مربّع الحوار من الشاشة بدون النقر على أي من الزرّين
توضّح الأقسام التالية سلوك تطبيقك استنادًا إلى الإجراء الذي يتّخذه المستخدم.
ينقر المستخدم على "السماح"
إذا نقر المستخدم على خيار السماح ، يمكن لتطبيقك إجراء ما يلي:
- إرسال الإشعارات: يُسمح بجميع قنوات الإشعارات. يُسمح بجميع قنوات الإشعارات.
- نشر إشعارات متعلقة بالخدمات التي تعمل في المقدّمة. تظهر هذه الإشعارات في لوحة الإشعارات.
ينقر المستخدم على "عدم السماح"
إذا نقر المستخدم على خيار عدم السماح ، لا يمكن لتطبيقك إرسال إشعارات ما لم يستوفِ شروط الحصول على إعفاء. يتم حظر جميع قنوات الإشعارات، باستثناء بعض الأدوار المحدّدة. يشبه هذا السلوك ما يحدث عندما يوقف المستخدم يدويًا جميع الإشعارات لتطبيقك في إعدادات النظام.
تنبيه: إذا كان تطبيقك يستهدف الإصدار 12L أو إصدارًا أقدم ونقر المستخدم على عدم السماح، ولو لمرّة واحدة فقط، لن يُطلب منه ذلك مرة أخرى إلى أن يحدث أحد الإجراءَين التاليَين:
- إلغاء تثبيت تطبيقك وإعادة تثبيته
- تحديث تطبيقك لاستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث
يزيل المستخدم مربّع الحوار من الشاشة
إذا أزال المستخدم مربّع الحوار من الشاشة، أي لم ينقر على السماح أو عدم السماح، لا تتغيّر حالة إذن إرسال الإشعارات.
التأثيرات على التطبيقات المثبَّتة حديثًا
إذا ثبَّت أحد المستخدمين تطبيقك على جهاز يعمل بنظام Android 13 أو إصدار أحدث، سيتم إيقاف إشعارات تطبيقك تلقائيًا. يجب أن ينتظر تطبيقك إرسال الإشعارات إلى ما بعد طلب الإذن الجديد ومنح المستخدم هذا الإذن لتطبيقك.
يعتمد الوقت الذي يظهر فيه مربّع حوار الأذونات على إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك:
- إذا كان تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، يمكن لتطبيقك التحكّم بشكل كامل في وقت عرض مربّع حوار الأذونات. استغل هذه الفرصة لتوضيح سبب حاجة التطبيق إلى هذا الإذن، وتشجيع المستخدمين على منحه.
- إذا كان تطبيقك يستهدف المستوى 32 لواجهة برمجة التطبيقات (الإصدار 12L) أو الإصدارات الأقدم، يعرض النظام مربّع حوار الأذونات في أول مرة يبدأ فيها تطبيقك نشاطًا بعد إنشاء قناة إشعارات، أو عندما يبدأ تطبيقك نشاطًا ثم ينشئ أول قناة إشعارات له. يحدث ذلك عادةً عند بدء تشغيل التطبيق.
التأثيرات على تحديثات التطبيقات الحالية
للحدّ من المشاكل المرتبطة بإذن إرسال الإشعارات، يمنح النظام تلقائيًا الإذن مسبقًا لجميع التطبيقات المؤهّلة عندما يرقّي المستخدم جهازه إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث. بعبارة أخرى، يمكن لهذه التطبيقات مواصلة إرسال الإشعارات إلى المستخدمين، ولا يرى المستخدمون رسالة طلب إذن التشغيل.
الأهلية للحصول على الإذن مسبقًا
لكي يكون تطبيقك مؤهّلاً للحصول على إذن مسبق تلقائيًا، يجب أن يتضمّن قناة إشعارات حالية وألا يكون المستخدم قد أوقف إشعاراته بشكل صريح على جهاز يعمل بالإصدار 12L أو إصدار أقدم.
إذا أوقف المستخدم الإشعارات لتطبيقك على جهاز يعمل بالإصدار 12L أو إصدار أقدم، سيظل هذا الرفض ساريًا عند ترقية الجهاز إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث.
الإعفاءات
يحتوي هذا القسم على مجموعة الإشعارات والتطبيقات المستثناة من تغيير سلوك إذن إرسال الإشعارات. في الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، إذا رفض المستخدم إذن إرسال الإشعارات، سيظل بإمكانه الاطّلاع على الإشعارات المتعلقة بالخدمات التي تعمل في المقدّمة في إدارة المهام ولكن لن تظهر له في لوحة الإشعارات.
جلسات الوسائط
الإشعارات المتعلقة بـ جلسات الوسائط مستثناة من تغيير السلوك هذا.
التطبيقات التي تم ضبطها لإدارة المكالمات الهاتفية بنفسها
إذا كان تطبيقك يضبط نفسه لإدارة المكالمات الهاتفية بنفسه، لن تحتاج إلى إذن POST_NOTIFICATIONS حتى يتمكّن تطبيقك من إرسال إشعارات تستخدم نمط الإشعارات Notification.CallStyle.
يعتبر النظام أنّ تطبيقك قد ضبط نفسه لإدارة المكالمات الهاتفية بنفسه إذا كان يفعل كل ما يلي:
- تضمين إذن
MANAGE_OWN_CALLSفي نماذج البيان - تنفيذ واجهة
ConnectionService - التسجيل لدى مزوّد خدمات الاتصالات في الجهاز من خلال استدعاء
registerPhoneAccount().
اختبار تطبيقك
يمكنك تقييم كيفية تأثير إذن إرسال الإشعارات في تطبيقك عند استخدامه لأول مرة على جهاز يعمل بنظام Android 13 أو إصدار أحدث. تتيح لك مجموعات أوامر Android Debug Bridge (ADB) التالية محاكاة التسلسلات الأكثر شيوعًا لخيارات المستخدم وترقيات الجهاز بدون الحاجة إلى إعادة ضبط جهاز الاختبار:
تم تثبيت التطبيق حديثًا على جهاز يعمل بنظام Android 13 أو إصدار أحدث:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONSadb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-setadb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixedيُبقي المستخدم الإشعارات مفعّلة عند تثبيت التطبيق على جهاز يعمل بالإصدار 12L أو إصدار أقدم، ثم تتم ترقية الجهاز إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث:
adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONSadb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-setadb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixedيوقف المستخدم الإشعارات يدويًا عند تثبيت التطبيق على جهاز يعمل بالإصدار 12L أو إصدار أقدم، ثم تتم ترقية الجهاز إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONSadb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-setadb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
أفضل الممارسات
يصف هذا القسم عدة طرق يمكنك من خلالها استخدام إذن الإشعارات الجديد بأكثر الطرق فعالية في تطبيقك.
تحديث إصدار حزمة تطوير البرامج (SDK) المستهدَف لتطبيقك
لمنح تطبيقك مزيدًا من المرونة في وقت ظهور مربّع حوار الأذونات، عليك تحديث تطبيقك لاستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث.
الانتظار قبل عرض رسالة طلب إذن إرسال الإشعارات
قبل أن تطلب من المستخدمين منح أي أذونات، امنحهم فرصة التعرّف على تطبيقك.
قد يرغب المستخدمون الجدد في استكشاف التطبيق والاطّلاع مباشرةً على مزايا كل طلب إشعار فردي. يمكنك بدء رسالة طلب الأذونات من خلال إجراء يتّخذه المستخدم. تعرض القائمة التالية عدة أمثلة على الأوقات المناسبة لعرض رسالة طلب إذن إرسال الإشعارات:
- ينقر المستخدم على زر "جرَس التنبيه".
- يختار المستخدم متابعة حساب شخص ما على وسائل التواصل الاجتماعي.
- يرسل المستخدم طلبًا لتوصيل الطعام.
يوضّح الشكل 1 سير عمل مقترَحًا لطلب إذن الإشعارات. ما لم تعرض الدالة
shouldShowRequestPermissionRationale()
القيمة true، لا يحتاج تطبيقك إلى عرض الشاشة الوسطى، وهي الشاشة التي
تحتوي على النص "تلقّي الإشعارات!".
بدلاً من ذلك، يمكنك ضبط طلب ليظهر بعد منح المستخدمين فرصة التعرّف على تطبيقك. على سبيل المثال، يمكنك الانتظار حتى المرة الثالثة أو الرابعة التي يفتح فيها المستخدم تطبيقك.
shouldShowRequestPermissionRationale() تعرض القيمة true.
طلب الإذن في السياق المناسب
عند طلب أذونات الإشعارات داخل تطبيقك، يجب أن يكون ذلك في السياق الصحيح، بحيث يكون من الواضح تمامًا الغرض من الإشعارات وسبب وجوب موافقة المستخدم عليها. على سبيل المثال، قد يتضمّن تطبيق البريد الإلكتروني خيارات لإرسال إشعارات لكل رسالة إلكترونية جديدة، أو فقط الرسائل الإلكترونية التي يكون فيها المستخدم هو المستلِم الوحيد.
استغل هذه الفرصة لتوضيح نواياك، ومن المرجّح أن يمنح المستخدمون إذن إرسال الإشعارات لتطبيقك.
التحقّق مما إذا كان تطبيقك يمكنه إرسال الإشعارات
قبل أن يرسل تطبيقك إشعارًا، تأكَّد مما إذا كان المستخدم قد فعّل
الإشعارات لتطبيقك. للقيام بذلك، استدعِ
areNotificationsEnabled().
استخدام الإذن بمسؤولية
بعد الحصول على الموافقة على إرسال الإشعارات، تذكَّر استخدام الإذن بمسؤولية. يمكن للمستخدمين الاطّلاع على عدد الإشعارات اليومية التي يرسلها تطبيقك ، و يمكنهم إبطال الإذن في أي وقت.