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