اعلانها در Android 13 از مدل موافقت کردن استفاده میکنند، که تغییری نسبتبه نسخههای قبلی Android است که از مدل انصراف دادن استفاده میکنند. در Android 13، همه برنامهها باید قبلاز ارسال پیامواره اعلان، از کاربران اجازه بگیرند. این مدل به کاهش وقفههای اعلان کمک میکند، بار اطلاعاتی را بهحداقل میرساند، و به کاربران کمک میکند براساس آنچه برایشان مهم است کنترل کنند چه اعلانهایی نمایش داده شود. برای پشتیبانی از مدل موافقت، سازندگان تجهیزات اصلی باید تغییراتی در سیستمهای اعلان و اجازه زمان اجرا اعمال کنند.
این صفحه توضیح میدهد که تولیدکنندگان اصلی سختافزار برای پشتیبانی از این تغییر چه چیزی را باید پیادهسازی کنند و چگونه پیادهسازی را اعتبارسنجی کنند.
پیادهسازی تغییرات برای اعلانهای موافقت
از Android 13 به بعد، برنامهها باید قصد خود را برای ارسال اعلانها با درخواست اجازه زمان اجرای android.permission.POST_NOTIFICATION از سیستم اعلام کنند تا بتوانند اعلان ارسال کنند.
در Android 13 و نسخههای بالاتر، تنظیماتی که تعیین میکند برنامه میتواند به کاربر اعلان ارسال کند یا نه در سیستم اجازه ذخیره میشود. قبلاز Android 13، این تنظیم در سیستم اعلان ذخیره میشد. بنابراین، سازندگان تجهیزات اصلی باید دادههای اعلان موجود را درباره اینکه آیا یک برنامه مجاز به ارسال اعلان است یا نه، از سیستم اعلان به سیستم اجازه زمان اجرا منتقل کنند. تولیدکنندگان اصلی سختافزار همچنین باید میاناهای برنامهسازی کاربردی موجود را در سیستم اعلان حفظ کنند تا آن دادهها را به توسعهدهندگان برنامه نشان دهند.
تغییرات در سیستمهای اعلان و اجازه براساس مدل موافقت کاربر با رفتار اعلان است و در بخش دستورالعملهای پیادهسازی توضیح داده شده است.
رفتار اعلانهای کاربر در مدل موافقت
جدول زیر رفتار اعلان را برای نسخههای مختلف برنامه در دستگاهی که Android 13 دارد نشان میدهد:
| دستگاه دارای Android 13 | برنامههایی که Android 13 یا بالاتر را هدف قرار میدهند | برنامههایی که نسخههای پایینتر از Android 13 را هدفیابی میکنند |
|---|---|---|
| نصب جدید | تا زمانی که برنامه درخواست کند، اعلانها مسدود میشود.
برنامهها کنترل میکنند چه زمانی برای اجازه درخواست کنند. |
اعلانها تا زمانی که سیستمعامل درخواست کند مسدود میشوند.
اجازه در اولین اجرای برنامه درخواست میشود. |
| برنامه موجود (ارتقا) | اعلانها تا زمانی که برنامه درخواست کند مجاز است.
اجازه موقت تا زمانی که برنامه در اولین اجرای واجدشرایط درخواست کند اعطا میشود. |
اعلانها تا زمانی که سیستمعامل درخواست کند مجاز هستند.
اجازه موقت تا اولین اجرای برنامه اعطا میشود. |
دستورالعملهای پیادهسازی
برای پیادهسازی مرجع، به سرویس اعلان، سرویس اجازه، و سرویس خطمشی مراجعه کنید. برای پیادهسازی استثناها برای کنترلکنندههای اجازه پیشفرض، اجازههای زمان اجرا را ببینید.
درطول پیادهسازی، از دستورالعملهای زیر درباره رفتار اعلان کاربر برای برنامههایی که کیت توسعه نرمافزار Android 13 یا پایینتر را هدفیابی میکنند استفاده کنید:
- برنامههایی که بهتازگی در دستگاه Android 13 نصب شدهاند نباید
بدون تأیید درخواست اجازه توسط کاربر، اعلان ارسال کنند.
- اگر برنامه نسخههای Android 13 و بالاتر را هدفیابی میکند، اعلانها باید تا زمانی که برنامه درخواست کند مسدود شوند، زیرا برنامه کنترل میکند چه زمانی و آیا اجازه کاربر را درخواست کند یا نه.
- اگر برنامه نسخههای پایینتر از Android 13 را هدف قرار میدهد، اعلانها باید تا زمانی که سیستمعامل درخواست کند مسدود شوند. سیستمعامل باید پیامواره درخواست اجازه را در اولین اجرای برنامه نمایش دهد.
هر برنامهای که قبلاز ارتقا به Android 13 در دستگاه وجود داشته است، یا هر برنامهای که ازطریق پشتیبانگیری و بازگرداندن بازیابی شده است، باید تا اولین باری که کاربر فعالیتی را از آن برنامه راهاندازی میکند، اجازه ارسال اعلان داشته باشد.
برای برنامههایی که «کیت توسعه نرمافزار» نسخه Android 13 و بالاتر را هدفیابی میکنند، اگر کاربر قبلاً تنظیمات اعلان را برای این برنامه در سطح برنامه یا
NotificationChannelسفارشیسازی نکرده باشد، اعطای اجازه موقت را لغو کنید. برنامهها باید قبلاز اینکه اجازه یابند به ارسال اعلان ادامه دهند، از کاربر اجازه بخواهند.اگر برنامه ارتقایافتهای که Android 13 را هدف قرار میدهد درحالحاضر ازطریق اعطای ارتقای موقت اجازه اعلان نداشته باشد و کاربر حداقل یکبار آن را راهاندازی کرده باشد، برنامه باید قبلاز اینکه اجازه داشته باشد سرویسهای پیشزمینهای دیگری را اجرا کند، پیامواره اجازه اعلان را نشان دهد.
برای برنامههایی که کیت توسعه نرمافزار هدف آنها نسخههای پایینتر از Android 13 است، اولین راهاندازی فعالیت را پساز اینکه برنامه حداقل یک
NotificationChannelایجاد کرد رهگیری کنید تا پیامواره اجازهای نشان داده شود که از کاربر میپرسد آیا میخواهد از برنامه اعلان دریافت کند یا نه.اگر کاربری قبلاً تنظیمات اعلان را در سطح برنامه یا
NotificationChannelبرای برنامهای در دستگاه درحال ارتقا یا در نسخه پشتیبانی که درحال بازیابی در دستگاه است سفارشی کرده باشد، تنظیم سطح برنامه باید با پرچمFLAG_PERMISSION_USER_SETبه سیستم اجازه منتقل شود. پیامواره اجازه اعلان دیگری نباید به کاربر نشان داده شود، مگر اینکه برنامه بهطور خاص درخواست کند.
پشتیبانگیری و بازیابی باید بین دستگاه Android 13 و دستگاهی با نسخه سیستمعامل قدیمیتر با نسخههای قبلی و بعدی سازگار باشد. دادههای پشتیبانگیریشده از دستگاه Android 13 باید در نسخه سیستمعامل قدیمیتر بازیابی شود و دادههای پشتیبانگیریشده از نسخه سیستمعامل قدیمیتر باید در دستگاه Android 13 بازیابی شود.
اعلانهای رسانه مرتبط با بازپخش رسانه درحال انجام باید از اجازه اعلان معاف باشند.
اعتبارسنجی تغییرات در سیستمهای اعلان و اجازه
برای اعتبارسنجی پیادهسازی، آزمایشهای زیر را اجرا کنید:
آزمونهای واحد همانگونه که در
PreferencesHelperTest،NotificationManagerServiceTestمشخص شده است.هر آزمایشی دستی که ارتقاها و پشتیبانگیری و بازیابی را آزمایش میکند.
هرگونه آزمون سیستم «اجازه و اعلان» CTS که اعلان ارسال میکند. برخیاز این آزمایشها در cts/tests/tests/permission/، NotificationManagerTest.java، و cts/tests/tests/notificationlegacy/ قرار دارند.