تستخدم الإشعارات في Android 13 نموذجًا يتطلّب الموافقة، وهو يختلف عن إصدارات Android السابقة التي تستخدم نموذجًا لا يتطلّب الموافقة. في نظام التشغيل Android 13، يجب أن تطلب جميع التطبيقات من المستخدمين الحصول على إذن قبل إرسال طلبات الحصول على إذن بإرسال الإشعارات. يساعد هذا النموذج في تقليل مقاطعة الإشعارات، والحدّ من فرط المعلومات، كما يساعد المستخدمين في التحكّم في الإشعارات التي تظهر استنادًا إلى ما يهمّهم. لدعم نموذج الموافقة، على الشركات المصنّعة للأجهزة الأصلية إجراء تغييرات في أنظمة الإشعارات وأذونات وقت التشغيل.
توضّح هذه الصفحة ما يجب أن تنفّذه الشركات المصنّعة للمعدات الأصلية لدعم هذا التغيير وكيفية التحقّق من صحة التنفيذ.
تنفيذ تغييرات على الإشعارات التي تتطلّب موافقة
بدءًا من نظام التشغيل Android 13، يجب أن توضّح التطبيقات نيتها إرسال الإشعارات من خلال طلب إذن android.permission.POST_NOTIFICATION
أثناء التشغيل من النظام قبل أن تتمكّن من إرسال الإشعارات.
في نظام التشغيل Android 13 والإصدارات الأحدث، يتم تخزين الإعداد الذي يحدّد ما إذا كان بإمكان التطبيق إرسال إشعارات إلى المستخدم في نظام الأذونات. قبل الإصدار 13 من نظام التشغيل Android، كان يتم تخزين هذا الإعداد في نظام الإشعارات. وبالتالي، على الشركات المصنّعة للأجهزة الأصلية نقل بيانات الإشعارات الحالية التي تحدّد ما إذا كان مسموحًا لأحد التطبيقات بإرسال الإشعارات من نظام الإشعارات إلى نظام أذونات التشغيل. على الشركات المصنّعة للأجهزة الأصلية أيضًا الحفاظ على واجهات برمجة التطبيقات الحالية في نظام الإشعارات التي تعرض هذه البيانات لمطوّري التطبيقات.
تستند التغييرات التي تطرأ على أنظمة الإشعارات والأذونات إلى نموذج الموافقة على سلوك إشعارات المستخدمين، ويتم توضيحها في قسم إرشادات التنفيذ.
سلوك إشعارات المستخدمين في نموذج الموافقة
يوضّح الجدول التالي سلوك الإشعارات في إصدارات التطبيقات المختلفة على جهاز يعمل بنظام التشغيل Android 13:
جهاز يعمل بنظام التشغيل Android 13 | التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث | التطبيقات التي تستهدف إصدارات أقدم من Android 13 |
---|---|---|
مثبَّت حديثًا | يتم حظر الإشعارات إلى أن يطلبها التطبيق.
تتحكّم التطبيقات في وقت طلب الحصول على الإذن. |
يتم حظر الإشعارات إلى أن يطلب نظام التشغيل عرضها.
يُطلب الإذن عند تشغيل التطبيق للمرة الأولى. |
تطبيق حالي (ترقية) | يُسمح بتلقّي الإشعارات إلى أن يطلب التطبيق ذلك.
يتم منح الإذن المؤقت إلى أن يطلب التطبيق الإذن في أول عملية تشغيل مؤهِّلة. |
يُسمح بالإشعارات إلى أن يطلب نظام التشغيل إيقافها.
يتم منح الإذن المؤقت حتى يتم تشغيل التطبيق لأول مرة. |
إرشادات التنفيذ
للحصول على نموذج تنفيذ، يُرجى الرجوع إلى خدمة الإشعارات وخدمة الأذونات وخدمة السياسات. لتنفيذ استثناءات لمعالجات الأذونات التلقائية، راجِع أذونات التشغيل.
أثناء التنفيذ، اتّبِع الإرشادات التالية بشأن سلوك إشعارات المستخدمين في التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android أو إصدارات أقدم من حزمة تطوير البرامج (SDK):
- يجب ألا ترسل التطبيقات المثبَّتة حديثًا على جهاز Android 13 إشعارًا بدون موافقة المستخدم على طلب الإذن.
- إذا كان التطبيق يستهدف الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث، يجب حظر الإشعارات إلى أن يطلبها التطبيق، لأنّ التطبيق يتحكّم في وقت طلب إذن المستخدم وما إذا كان سيطلب هذا الإذن.
- إذا كان التطبيق يستهدف إصدارات أقدم من Android 13، يجب حظر الإشعارات إلى أن يطلب نظام التشغيل عرضها. يجب أن يعرض نظام التشغيل طلب الإذن عند تشغيل التطبيق للمرة الأولى.
يجب السماح لأي تطبيق كان مثبَّتًا على الجهاز قبل الترقية إلى Android 13 أو أي تطبيق تمت استعادته من خلال ميزة "النسخ الاحتياطي والاستعادة" بإرسال الإشعارات إلى أن يفتح المستخدم نشاطًا من هذا التطبيق للمرة الأولى.
بالنسبة إلى التطبيقات التي تستهدف حزمة تطوير البرامج (SDK) من إصدارات Android 13 والإصدارات الأحدث، إذا لم يسبق للمستخدم تخصيص إعدادات الإشعارات لهذا التطبيق على مستوى التطبيق أو
NotificationChannel
، عليك إلغاء إذن الوصول المؤقت. بعد ذلك، يجب أن تطلب التطبيقات من المستخدم الإذن قبل أن يُسمح لها بمواصلة إرسال الإشعارات.إذا كان تطبيق تمّت ترقيته ويستهدف الإصدار 13 من نظام التشغيل Android ولا يتوفّر لديه حاليًا إذن إرسال الإشعارات من خلال منح إذن مؤقت بالترقية، وسبق أن شغّله المستخدم مرة واحدة على الأقل، يجب أن يعرض التطبيق طلبًا للحصول على إذن إرسال الإشعارات قبل السماح له بتشغيل أي خدمات أخرى تعمل في المقدّمة.
بالنسبة إلى التطبيقات التي تستهدف إصدارًا من حزمة تطوير البرامج (SDK) أقل من Android 13، عليك اعتراض عملية تشغيل النشاط الأول بعد أن ينشئ التطبيق
NotificationChannel
واحدًا على الأقل لعرض طلب الحصول على إذن يسأل المستخدم عمّا إذا كان يريد تلقّي إشعارات من التطبيق.إذا سبق للمستخدم تخصيص إعدادات الإشعارات على مستوى التطبيق أو
NotificationChannel
لتطبيق على الجهاز الذي تتم ترقيته أو في نسخة احتياطية تتم استعادتها إلى الجهاز، يجب نقل الإعدادات على مستوى التطبيق إلى نظام الأذونات باستخدام العلامةFLAG_PERMISSION_USER_SET
. يجب عدم عرض أي طلبات أخرى للحصول على إذن بإرسال الإشعارات إلى المستخدم ما لم يطلب التطبيق ذلك تحديدًا.
يجب أن تكون ميزة "الاحتفاظ بنسخة احتياطية من البيانات واستعادتها" متوافقة مع الإصدارات السابقة واللاحقة بين جهاز Android 13 وجهاز يعمل بإصدار أقدم من نظام التشغيل. يجب استعادة البيانات الاحتياطية التي تم إنشاؤها من جهاز يعمل بالإصدار 13 من نظام التشغيل Android إلى إصدار أقدم من نظام التشغيل، ويجب استعادة البيانات الاحتياطية من إصدار أقدم من نظام التشغيل إلى جهاز يعمل بالإصدار 13 من نظام التشغيل Android.
يجب استثناء إشعارات الوسائط المرتبطة بتشغيل الوسائط الجاري من إذن الإشعارات.
التحقّق من صحة التغييرات في نظامَي الإشعارات والأذونات
للتحقّق من صحة عملية التنفيذ، نفِّذ الاختبارات التالية:
اختبارات الوحدات كما هو محدّد في
PreferencesHelperTest
وNotificationManagerServiceTest
أي اختبار يدوي يختبر عمليات الترقية والاحتفاظ بنسخة احتياطية واستعادة البيانات
أي اختبار لنظام الأذونات والإشعارات في مجموعة اختبارات التوافق (CTS) يرسل إشعارات تتوفّر بعض هذه الاختبارات في cts/tests/tests/permission/ وNotificationManagerTest.java وcts/tests/tests/notificationlegacy/.