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