از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
مجوز اعلان برای اعلانهای انتخاب
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اعلانها در Android 13 از یک مدل Opt-in استفاده میکنند که تغییری نسبت به نسخههای قبلی اندروید است که از یک مدل انصراف استفاده میکنند. در اندروید 13، همه برنامهها باید قبل از ارسال پیامهای اعلان از کاربران اجازه بگیرند. این مدل به کاهش وقفههای اعلانها کمک میکند، اضافه بار اطلاعات را به حداقل میرساند و به کاربران کمک میکند تا بر اساس آنچه برایشان مهم است، اعلانهایی را کنترل کنند. برای پشتیبانی از مدل Opt-in، OEM ها باید تغییراتی را در سیستم های مجوز اعلان و زمان اجرا اعمال کنند.
این صفحه توضیح میدهد که OEMها باید چه چیزهایی را برای پشتیبانی از این تغییر پیادهسازی کنند و چگونه پیادهسازی را تأیید کنند.
تغییرات را برای اعلانهای انتخابی اعمال کنید
با شروع Android 13، برنامهها باید قصد خود را برای ارسال اعلانها با درخواست مجوز زمان اجرا android.permission.POST_NOTIFICATION
از سیستم قبل از ارسال اعلانها اعلام کنند.
در اندروید 13 و بالاتر، تنظیماتی که تعیین میکند آیا برنامه میتواند اعلانها را برای کاربر ارسال کند، در سیستم مجوز ذخیره میشود. قبل از اندروید 13، این تنظیمات در سیستم اعلان ذخیره می شد. از این رو، OEM ها باید داده های اعلان موجود را در مورد اینکه آیا یک برنامه مجاز به ارسال اعلان است یا خیر، از سیستم اعلان به سیستم مجوز زمان اجرا منتقل کنند. OEM ها همچنین باید API های موجود را در سیستم اعلان حفظ کنند که این داده ها را در اختیار توسعه دهندگان برنامه قرار می دهد.
تغییرات در سیستمهای اعلان و مجوز بر اساس مدل انتخابی رفتار اطلاعرسانی کاربر است و در بخش دستورالعملهای اجرا توضیح داده شده است.
رفتار اعلانهای کاربر در مدل انتخابی
جدول زیر رفتار اعلانها را برای نسخههای مختلف برنامه در دستگاه دارای Android 13 نشان میدهد:
دستگاه در اندروید 13 | برنامه هایی که اندروید 13 یا بالاتر را هدف قرار می دهند | برنامه هایی که نسخه های پایین تر از اندروید 13 را هدف قرار می دهند |
---|
نصب جدید | اعلانها تا زمانی که برنامه از آنها خواسته نشود مسدود میشوند. برنامه ها زمان درخواست مجوز را کنترل می کنند. | اعلانها تا زمانی که سیستم عامل از آنها خواسته نشود مسدود میشوند. مجوز در اولین اجرای برنامه درخواست می شود. |
برنامه موجود (ارتقا) | اعلان ها تا زمانی که برنامه از آنها خواسته نشود مجاز است. مجوز موقت تا زمانی که برنامه در اولین اجرای واجد شرایط درخواست کند، اعطا می شود. | اعلان ها تا زمانی که سیستم عامل از آنها خواسته باشد مجاز است. مجوز موقت تا اولین اجرای برنامه اعطا می شود. |
دستورالعمل اجرا
برای اجرای مرجع، به سرویس اطلاع رسانی ، سرویس مجوز و سرویس خط مشی مراجعه کنید. برای پیادهسازی استثناها برای کنترلکنندههای مجوز پیشفرض، مجوزهای زمان اجرا را ببینید.
در حین اجرا، از دستورالعملهای زیر در مورد رفتار اعلان کاربر برای برنامههایی که Android 13 یا SDK پایینتر را هدف قرار میدهند، استفاده کنید:
- برنامههای تازه نصبشده در دستگاه Android 13 نباید بدون تأیید درخواست مجوز توسط کاربر، اعلان ارسال کنند.
- اگر برنامه نسخههای Android 13 و بالاتر را هدف قرار میدهد، اعلانها باید مسدود شوند تا زمانی که برنامه از آنها خواسته شود زیرا برنامه کنترل میکند چه زمانی و چه زمانی از کاربر اجازه بخواهد.
- اگر برنامه نسخههای پایینتر از Android 13 را هدف قرار میدهد، اعلانها باید مسدود شوند تا زمانی که سیستم عامل از آنها خواسته باشد. سیستم عامل باید درخواست مجوز را در اولین اجرای برنامه نشان دهد.
هر برنامهای که قبل از ارتقا به Android 13 در دستگاه وجود داشته است، یا هر برنامهای که از طریق پشتیبانگیری و بازیابی بازیابی شده است، باید تا اولین باری که کاربر فعالیتی را از آن برنامه راهاندازی کند، اجازه ارسال اعلانها را داشته باشد.
برای برنامههایی که SDK نسخههای Android 13 و بالاتر را هدف قرار میدهند، اگر کاربر قبلاً تنظیمات اعلان این برنامه را در سطح برنامه یا NotificationChannel
سفارشی نکرده است، مجوز موقت را لغو کنید. سپس برنامهها باید قبل از ادامه ارسال اعلانها از کاربر اجازه بخواهند.
اگر برنامه ارتقا یافته ای که اندروید 13 را هدف قرار می دهد در حال حاضر مجوز اعلان از طریق کمک هزینه ارتقا موقت را نداشته باشد و کاربر حداقل یک بار آن را راه اندازی کرده باشد، برنامه باید قبل از اینکه بتواند خدمات پیش زمینه دیگری را اجرا کند، یک درخواست مجوز اعلان نشان دهد.
برای برنامههایی که دارای SDK هدف نسخههای پایینتر از Android 13 هستند، پس از ایجاد حداقل یک NotificationChannel
، اولین راهاندازی فعالیت را متوقف کنید تا یک درخواست مجوز نشان دهد که آیا کاربر میخواهد اعلانهایی را از برنامه دریافت کند یا خیر.
اگر کاربر قبلاً تنظیمات اعلان را در سطح برنامه یا NotificationChannel
برای برنامه ای در دستگاه در حال ارتقا یا نسخه پشتیبان در حال بازیابی به دستگاه سفارشی کرده است، تنظیم سطح برنامه باید با پرچم FLAG_PERMISSION_USER_SET
به سیستم مجوز منتقل شود. هیچ درخواست مجوز اعلان دیگری نباید به کاربر نشان داده شود، مگر اینکه برنامه به طور خاص آن را بخواهد.
پشتیبانگیری و بازیابی باید بین دستگاه Android 13 و دستگاهی از نسخههای قدیمیتر سیستمعامل سازگار با عقب و جلو باشد. داده های پشتیبان تولید شده از یک دستگاه Android 13 باید در نسخه سیستم عامل قبلی بازیابی شوند و داده های پشتیبان از نسخه سیستم عامل قبلی باید در دستگاه Android 13 بازیابی شوند.
اعلانهای رسانه مرتبط با پخش مداوم رسانه باید از مجوز اعلان مستثنی شوند.
تأیید تغییرات در سیستم های اطلاع رسانی و مجوز
برای تأیید اعتبار پیاده سازی، آزمایش های زیر را اجرا کنید:
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Notification permission for opt-in notifications\n\nNotifications in Android 13 use an opt-in model, which\nis a change from previous Android versions, which use an opt-out model. In\nAndroid 13, all apps must ask users for permission before\nsending notification prompts. This model helps reduce notification\ninterruptions, minimizes information overload, and helps users control what\nnotifications appear based on what's important to them. To support the\nopt-in model, OEMs must implement changes in the notification and runtime\npermission systems.\n\nThis page describes what OEMs must implement to support this change and how\nto validate the implementation.\n\nImplement changes for opt-in notifications\n------------------------------------------\n\nStarting with Android 13, apps must declare their\nintent to send notifications by requesting the\n[`android.permission.POST_NOTIFICATION`](https://developer.android.com/about/versions/13/changes/notification-permission)\nruntime permission from the system before they can send notifications.\n\nIn Android 13 and higher, the setting that determines\nif an app can send notifications to the user is stored in the permission system.\nPrior to Android 13, this setting was stored in the\nnotification system. Hence, OEMs must migrate the existing notification data\nabout whether an app is allowed to send notifications, from the notification\nsystem into the runtime permission system. OEMs must also maintain existing APIs\nin the notification system that surface that data to app developers.\n\nChanges to the notification and permission systems are based on the\n[opt-in model of user notification behavior](#behavior-optin) and are\ndescribed in the [Guidelines for implementation](#guidelines-impl) section.\n\n### Behavior of user notifications in an opt-in model\n\nThe following table illustrates the notification behavior for various app\nversions on a device running Android 13:\n\n| Device on Android 13 | Apps targeting Android 13 or higher | Apps targeting versions lower than Android 13 |\n|------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| New install | Notifications are blocked until prompted by the app. Apps control when to ask for permission. | Notifications are blocked until prompted by the OS. Permission is asked on the first run of the app. |\n| Existing app (upgrade) | Notifications are allowed until prompted by the app. Temporary permission is granted until the app asks on the first qualifying run. | Notifications are allowed until prompted by the OS. Temporary permission is granted until the first run of the app. |\n\n### Guidelines for implementation\n\nFor reference implementation, refer to\n[notification service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/notification/),\n[permission service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/pm/permission/) and\n[policy service](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/policy). To implement exceptions\nfor default permission handlers see\n[Runtime Permissions](/docs/core/permissions/runtime_perms#integration).\n\nDuring implementation, use the following guidelines on user notification\nbehavior for apps targeting Android 13 or lower SDKs:\n\n- Freshly installed apps on an Android 13 device must not send a notification without the user approving a permission prompt.\n - If the app targets versions Android 13 and higher, notifications must be blocked until prompted by the app as the app controls when and if to ask for user permission.\n - If the app targets versions lower than Android 13, notifications must be blocked until prompted by the OS. The OS must show the permission prompt on the first run of the app.\n- Any app that existed on the device prior to an upgrade to\n Android 13, or any app that was restored through backup\n and restore, must be allowed to send notifications until the first time the user\n launches an activity from that app.\n\n - For apps that target SDK of versions Android 13\n and higher, if the user hasn't previously customized notification settings for\n this app at the app or `NotificationChannel` level, revoke the temporary\n permission grant. Apps must then ask the user for permission before being\n allowed to continue to send notifications.\n\n If an upgraded app targeting Android 13 doesn't\n currently have the notification permission through the temporary upgrade\n grant, and the user has launched it at least once, the app must show a\n notification permission prompt before it's allowed to run any further foreground\n services.\n - For apps that have a target SDK of versions lower than\n Android 13,\n [intercept](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/wm/ActivityInterceptorCallback.java)\n the first activity launch after the app has created at least one `NotificationChannel`\n to show a permission prompt asking if the user wants to receive notifications\n from the app.\n\n If a user previously customized notification settings at the\n app or `NotificationChannel` level for an app on the upgrading device or in a\n backup being restored to the device, the app level setting must be migrated into\n the permission system with the `FLAG_PERMISSION_USER_SET` flag. No further\n notification permission prompt must be shown to the user unless the app\n specifically asks it to be.\n- Backup and restore must be backward and forward compatible between an\n Android 13 device and a device from an earlier OS\n version. Backup data generated from an Android 13\n device must restore onto an earlier OS version, and backup data from an earlier\n OS version must restore onto an Android 13 device.\n\n- Media notifications associated with ongoing media playback must be exempt\n from the notification permission.\n\nValidate changes to the notification and permission systems\n-----------------------------------------------------------\n\nTo validate the implementation, run the following tests:\n\n- Unit tests as specified in [`PreferencesHelperTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java),\n [`NotificationManagerServiceTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java).\n\n- Any manual test that tests upgrades and backup and restore.\n\n- Any CTS Permission and Notification system test that sends notifications.\n Some of these tests are located in [cts/tests/tests/permission/](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Permission/tests/cts/permission/src/android/permission/cts/),\n [NotificationManagerTest.java](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notification/src/android/app/notification/current/cts/NotificationManagerTest.java?q=NotificationManagerTest.java),\n and [cts/tests/tests/notificationlegacy/](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/notificationlegacy/)."]]