اعلان پیامی است که Android در خارج از رابط کاربری برنامه شما نمایش می دهد تا یادآوری ها، ارتباط افراد دیگر یا سایر اطلاعات به موقع از برنامه شما را به کاربر ارائه دهد. کاربران می توانند روی اعلان ضربه بزنند تا برنامه شما باز شود یا مستقیماً از اعلان اقدامی انجام دهند.
این صفحه نمای کلی از مکان نمایش اعلان ها و ویژگی های موجود را ارائه می دهد. برای شروع اعلانهای ساخت، ایجاد اعلان را بخوانید.
برای اطلاعات بیشتر در مورد طراحی اعلان ها و الگوهای تعامل، به راهنمای طراحی اعلان ها مراجعه کنید.
ظاهر روی یک دستگاه
اعلان ها به طور خودکار در مکان ها و فرمت های مختلف برای کاربران ظاهر می شوند. یک اعلان به عنوان یک نماد در نوار وضعیت، یک ورودی با جزئیات بیشتر در کشوی اعلان و یک نشان روی نماد برنامه ظاهر می شود. اعلانها در پوشیدنیهای جفت شده نیز ظاهر میشوند.
نوار وضعیت و کشوی اعلان
هنگامی که یک اعلان صادر می کنید، ابتدا به عنوان یک نماد در نوار وضعیت ظاهر می شود.
شکل 1. نمادهای اعلان در سمت چپ نوار وضعیت ظاهر می شوند.
کاربران میتوانند نوار وضعیت را به پایین بکشند تا کشوی اعلان را باز کنند، جایی که میتوانند جزئیات بیشتری را مشاهده کنند و اقداماتی را با اعلان انجام دهند.
شکل 2. اعلان ها در کشوی اعلان.
کاربران میتوانند یک اعلان را در کشو به پایین بکشند تا نمای گسترشیافته نمایش داده شود، که در صورت ارائه، محتوای اضافی و دکمههای عمل را نشان میدهد. با شروع در Android 13، این نمای گسترشیافته شامل دکمهای است که به کاربران امکان میدهد برنامهای را که دارای خدمات پیشزمینه در حال انجام است متوقف کنند .
یک اعلان تا زمانی که توسط برنامه یا کاربر رد نشود در کشوی اعلان قابل مشاهده است.
اطلاعیه سرآغاز
با شروع Android 5.0، اعلانها میتوانند برای مدت کوتاهی در یک پنجره شناور به نام اعلان heads-up ظاهر شوند. این رفتار معمولاً برای اعلانهای مهمی است که کاربر باید فوراً درباره آنها بداند و تنها در صورتی ظاهر میشود که قفل دستگاه باز باشد.
شکل 3. یک اعلان heads-up در جلوی برنامه پیش زمینه ظاهر می شود.
هنگامی که برنامه شما اعلان را صادر می کند، اعلان heads up ظاهر می شود. پس از یک لحظه ناپدید می شود، اما طبق معمول در کشوی اعلان قابل مشاهده است.
شرایطی که ممکن است باعث ایجاد اعلانهای هدآپ شود شامل موارد زیر است:
فعالیت کاربر در حالت تمام صفحه است، مانند زمانی که برنامه از
fullScreenIntent
استفاده می کند.این اعلان دارای اولویت بالایی است و از آهنگ های زنگ یا لرزش در دستگاه های دارای اندروید 7.1 (سطح API 25) و پایین تر استفاده می کند.
کانال اعلان در دستگاه های دارای اندروید 8.0 (سطح API 26) و بالاتر از اهمیت بالایی برخوردار است.
صفحه قفل
با شروع اندروید 5.0، اعلان ها می توانند روی صفحه قفل ظاهر شوند.
میتوانید بهصورت برنامهنویسی تنظیم کنید که آیا اعلانهای ارسالشده توسط برنامهتان در یک صفحه قفل ایمن نمایش داده میشوند یا خیر و در این صورت، سطح جزئیات قابل مشاهده است.
کاربران میتوانند از تنظیمات سیستم برای انتخاب سطح جزئیات قابل مشاهده در اعلانهای صفحه قفل یا غیرفعال کردن همه اعلانهای صفحه قفل استفاده کنند. با شروع اندروید 8.0، کاربران میتوانند اعلانهای صفحه قفل را برای هر کانال اعلان غیرفعال یا فعال کنند.
شکل 4. اعلان ها در صفحه قفل با محتوای حساس پنهان شده است.
برای کسب اطلاعات بیشتر، به تنظیم نمایان بودن صفحه قفل مراجعه کنید.
نشان نماد برنامه
در راهاندازهای پشتیبانیشده در دستگاههای دارای Android 8.0 (سطح API 26) و بالاتر، نمادهای برنامه اعلانهای جدید را با نشان رنگی که به عنوان نقطه اعلان در نماد راهانداز برنامه مربوطه شناخته میشود، نشان میدهند.
کاربران میتوانند نماد برنامه را لمس کرده و نگه دارند تا اعلانهای آن برنامه را ببینند. کاربران میتوانند اعلانها را از آن منو حذف کنند یا مانند کشوی اعلانها به آن عمل کنند.
شکل 5. نشان های اعلان و منوی لمس و نگه داشتن.
برای کسب اطلاعات بیشتر درباره نحوه عملکرد نشانها، اصلاح نشان اعلان را بخوانید.
دستگاه های سیستم عامل را بپوشید
اگر کاربر یک دستگاه Wear OS جفت شده داشته باشد، همه اعلانهای شما بهطور خودکار در آنجا ظاهر میشوند، از جمله جزئیات قابل ارتقا و دکمههای عملکرد.
میتوانید با سفارشیسازی ظاهر اعلانهای خود در پوشیدنیها و با ارائه اقدامات مختلف، از جمله پاسخهای پیشنهادی و پاسخهای ورودی صوتی، تجربه را افزایش دهید. برای اطلاعات بیشتر، نحوه افزودن ویژگیهای خاص پوشیدنی را به اعلان خود ببینید.
شکل 6. اعلان ها به طور خودکار در یک دستگاه Wear OS جفت شده ظاهر می شوند.
آناتومی اعلان
طراحی یک اعلان توسط الگوهای سیستم تعیین می شود و برنامه شما محتویات هر قسمت از الگو را مشخص می کند. برخی از جزئیات اعلان فقط در نمای باز شده ظاهر می شوند.
شکل 7. یک اعلان با جزئیات اساسی.
متداول ترین بخش های یک اعلان در شکل 7 به شرح زیر نشان داده شده است:
- نماد کوچک: مورد نیاز. با استفاده از
setSmallIcon()
تنظیم کنید. - نام برنامه: ارائه شده توسط سیستم.
- تمبر زمان: توسط سیستم ارائه می شود، اما می توانید با استفاده از
setWhen()
آن را لغو کنید یا با استفاده ازsetShowWhen(false)
آن را پنهان کنید. - نماد بزرگ: اختیاری. معمولا فقط برای عکس های مخاطب استفاده می شود. از آن برای نماد برنامه خود استفاده نکنید. با استفاده از
setLargeIcon()
تنظیم کنید. - عنوان: اختیاری با استفاده از
setContentTitle()
تنظیم کنید. - متن: اختیاری با استفاده از
setContentText()
تنظیم کنید.
ما قویاً استفاده از قالب های سیستم را برای سازگاری مناسب طراحی در همه دستگاه ها توصیه می کنیم. در صورت لزوم، می توانید یک طرح اعلان سفارشی ایجاد کنید .
برای اطلاعات بیشتر درباره نحوه ایجاد اعلان با این ویژگی ها و موارد دیگر، ایجاد اعلان را بخوانید.
اقدامات اطلاع رسانی
اگرچه لازم نیست، اما برای هر اعلان باز کردن یک فعالیت برنامه مناسب زمانی که روی آن ضربه زده میشود، تمرین خوبی است. علاوه بر این اقدام پیشفرض اعلان، میتوانید همانطور که در شکل 8 نشان داده شده است، دکمههای عملکردی را اضافه کنید که یک کار مرتبط با برنامه را از اعلان تکمیل میکنند - اغلب بدون باز کردن یک فعالیت.
شکل 8. یک اعلان با دکمه های عمل.
با شروع Android 7.0 (سطح API 24)، میتوانید اقدامی برای پاسخ دادن به پیامها یا وارد کردن متن دیگر به طور مستقیم از اعلان اضافه کنید.
با شروع اندروید 10 (سطح API 29)، این پلتفرم میتواند بهطور خودکار دکمههای عمل را با کنشهای مبتنی بر هدف پیشنهادی ایجاد کند.
افزودن دکمههای اقدام در ایجاد اعلان بیشتر توضیح داده شده است.
نیاز به یک دستگاه قفل نشده است
کاربران ممکن است اقدامات اعلان را در صفحه قفل دستگاه ببینند. اگر یک اقدام اعلان باعث شود یک برنامه فعالیتی را راه اندازی کند یا یک پاسخ مستقیم ارسال کند، کاربران باید قبل از اینکه برنامه بتواند آن اقدام اعلان را فراخوانی کند، قفل دستگاه را باز کنند.
در Android 12 (سطح API 31) و بالاتر، میتوانید یک کنش اعلان را به گونهای پیکربندی کنید که قفل دستگاه باید برای برنامه شما باز شود تا آن عملکرد را فراخوانی کند، مهم نیست که عملکرد چه جریانی دارد. این گزینه یک لایه امنیتی اضافی به اعلان ها در دستگاه های قفل شده اضافه می کند.
برای اینکه بخواهید قفل دستگاه قبل از اینکه برنامه شما یک کنش اعلان خاص را فراخوانی کند باز شود، همانطور که در قطعه کد زیر نشان داده شده است، هنگام ایجاد اکشن اعلان خود، true
به setAuthenticationRequired()
ارسال کنید:
کاتلین
val moreSecureNotification = Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build()
جاوا
Notification moreSecureNotification = new Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build();
اعلان قابل ارتقا
بهطور پیشفرض، محتوای متنی اعلان به گونهای کوتاه شده است که در یک خط قرار بگیرد. اگر میخواهید اعلان طولانیتر باشد، میتوانید با اعمال یک الگوی اضافی، ناحیه متن بزرگتری را فعال کنید که قابل گسترش است، همانطور که در شکل 9 نشان داده شده است.
شکل 9. یک اعلان قابل ارتقا برای متن بزرگ.
همچنین میتوانید با یک تصویر، به سبک صندوق ورودی، با مکالمه چت یا با کنترلهای پخش رسانه، یک اعلان قابل ارتقا ایجاد کنید. برای اطلاعات بیشتر، ایجاد اعلان قابل ارتقا را بخوانید.
به روز رسانی اعلان ها و گروه ها
برای جلوگیری از هجوم اعلانهای چندگانه یا اضافی به کاربران خود در صورت داشتن بهروزرسانیهای اضافی، یک اعلان موجود را بهجای صدور اعلان جدید بهروزرسانی کنید یا از اعلان به سبک صندوق ورودی برای نمایش بهروزرسانیهای مکالمه استفاده کنید.
با این حال، اگر لازم است چندین اعلان ارائه کنید، اعلانهای جداگانه را در یک گروه گروهبندی کنید که در اندروید 7.0 و بالاتر موجود است.
یک گروه اعلان به شما امکان می دهد چندین اعلان را در یک پست در کشوی اعلان با یک خلاصه جمع کنید. همانطور که در شکل 10 نشان داده شده است، کاربر می تواند به تدریج گروه اعلان و هر اعلان در آن را برای جزئیات بیشتر گسترش دهد.
شکل 10. یک گروه اعلان کوچک و گسترده.
برای آشنایی با نحوه افزودن اعلانها به یک گروه، به ایجاد گروهی از اعلانها مراجعه کنید.
کانال های اطلاع رسانی
با شروع Android 8.0 (سطح API 26)، همه اعلانها باید به یک کانال اختصاص داده شوند وگرنه ظاهر نمیشوند. این به کاربران اجازه میدهد به جای غیرفعال کردن همه اعلانهای شما، کانالهای اعلان خاصی را برای برنامه شما غیرفعال کنند. همانطور که در شکل 11 نشان داده شده است، کاربران می توانند گزینه های دیداری و شنیداری هر کانال را از تنظیمات سیستم اندروید کنترل کنند. کاربران همچنین می توانند برای تغییر رفتار کانال مرتبط، یک اعلان را لمس کرده و نگه دارند.
در دستگاههای دارای Android 7.1 (سطح API 25) و پایینتر، کاربران میتوانند اعلانها را فقط بر اساس هر برنامه مدیریت کنند. هر برنامه به طور موثر فقط یک کانال در اندروید 7.1 و پایین تر دارد.
شکل 11. تنظیمات اعلان برای برنامه ساعت و یکی از کانال های آن.
یک برنامه می تواند کانال های جداگانه ای برای هر نوع اعلانی که برنامه صادر می کند، داشته باشد. یک برنامه همچنین می تواند کانال های اطلاع رسانی را در پاسخ به انتخاب های کاربران ایجاد کند. برای مثال، میتوانید کانالهای اعلان جداگانه برای هر گروه مکالمه ایجاد شده توسط کاربر در یک برنامه پیامرسانی تنظیم کنید.
این کانال همچنین جایی است که سطح اهمیت اعلانهای خود را در اندروید 8.0 و بالاتر مشخص میکنید، بنابراین همه اعلانهای ارسال شده در یک کانال اعلان رفتار یکسان دارند. این در بخش زیر توضیح داده شده است.
برای اطلاعات بیشتر، به ایجاد و مدیریت کانالهای اعلان مراجعه کنید.
اهمیت اطلاع رسانی
اندروید از اهمیت نوتیفیکیشن استفاده می کند تا مشخص کند که اعلان تا چه حد به صورت دیداری و شنیداری کاربر را قطع می کند. هرچه اهمیت یک اعلان بیشتر باشد، اعلان مزاحم تر است.
در اندروید 7.1 (سطح API 25) و پایینتر، اهمیت اعلان با priority
اعلان تعیین میشود.
در اندروید 8.0 (سطح API 26) و بالاتر، اهمیت اعلان با importance
کانالی که اعلان در آن پست می شود تعیین می شود. همانطور که در شکل 12 نشان داده شده است، کاربران می توانند اهمیت یک کانال اعلان را در تنظیمات سیستم تغییر دهند.
شکل 12. کاربران می توانند اهمیت هر کانال را در اندروید 8.0 و بالاتر تغییر دهند.
سطوح اهمیت احتمالی و رفتارهای اطلاع رسانی مرتبط به شرح زیر است:
فوری: صدا می دهد و به عنوان یک اعلان هدآپ ظاهر می شود.
بالا: صدا می دهد.
متوسط: هیچ صدایی تولید نمی کند.
کم: صدایی تولید نمی کند و در نوار وضعیت ظاهر نمی شود.
همه اعلانها، صرفنظر از اهمیت، در مکانهای UI سیستم بدون وقفه، مانند کشوی اعلانها و بهعنوان نشان روی نماد راهانداز ظاهر میشوند. با این حال، می توانید ظاهر نشان اعلان را تغییر دهید .
برای اطلاعات بیشتر، درباره نحوه تعیین اهمیت بخوانید.
حالت مزاحم نشوید
با شروع اندروید 5.0 (سطح API 21)، کاربران میتوانند حالت مزاحم نشوید را فعال کنند، که صدا و لرزش را برای همه اعلانها خاموش میکند. اعلانها همچنان در رابط کاربری سیستم بهطور معمول ظاهر میشوند، مگر اینکه کاربر چیز دیگری را مشخص کند.
در حالت Do Not Disturb سه سطح موجود است:
- سکوت کامل: همه صداها و ارتعاشات از جمله آلارم ها، موسیقی، ویدیوها و بازی ها را مسدود می کند.
- فقط هشدارها: همه صداها و ارتعاشات را مسدود می کند، به جز زنگ هشدار.
- فقط اولویت: کاربران میتوانند پیکربندی کنند که کدام دستههای سیستم میتوانند آنها را قطع کنند، مانند فقط زنگها، یادآوریها، رویدادها، تماسها یا پیامها. همانطور که در شکل 13 نشان داده شده است، برای پیام ها و تماس ها، کاربران می توانند بر اساس فرستنده یا تماس گیرنده فیلتر کنند.
شکل 13. کاربران می توانند اعلان ها را بر اساس دسته بندی های کل سیستم (چپ) و فرستنده یا تماس گیرنده (راست) مجاز کنند.
در Android 8.0 (سطح API 26) و بالاتر، کاربران میتوانند علاوه بر این، اعلانها را برای دستههای خاص برنامه - که به عنوان کانالها نیز شناخته میشوند - با لغو مزاحم نشوید به صورت کانال به کانال اجازه دهند. به عنوان مثال، یک برنامه پرداخت ممکن است کانال هایی برای اعلان های مربوط به برداشت و واریز داشته باشد. کاربر میتواند در حالت اولویت، اعلانهای برداشت، اعلانهای واریز یا هر دو را مجاز کند.
در دستگاههای دارای Android 7.1 (سطح API 25) و پایینتر، کاربران میتوانند به جای کانال به کانال، اعلانها را بر اساس برنامه به برنامه اجازه دهند.
برای پیکربندی اعلانهای خود برای این تنظیمات کاربر، باید یک دسته سیستم را تنظیم کنید .
اعلان خدمات پیش زمینه
زمانی که برنامه شما یک سرویس پیشزمینه را اجرا میکند، یک اعلان لازم است - Service
که در پسزمینه اجرا میشود که عمر طولانی دارد و برای کاربر قابل توجه است، مانند پخشکننده رسانه. این اعلان را نمی توان مانند سایر اعلان ها رد کرد. برای حذف اعلان، سرویس باید متوقف شود یا از حالت پیش زمینه خارج شود.
برای اطلاعات بیشتر، خدمات پیش زمینه را بخوانید. اگر در حال ساختن یک پخش کننده رسانه هستید، پخش رسانه در پس زمینه را نیز بخوانید.
محدودیت های پست
با شروع Android 8.1 (سطح API 27)، برنامه ها نمی توانند بیش از یک بار در ثانیه صدای اعلان ایجاد کنند. اگر برنامه شما چندین اعلان را در یک ثانیه پست کند، همه آنها همانطور که انتظار می رود ظاهر می شوند، اما فقط اولین اعلان در هر ثانیه صدا می دهد.
با این حال، اندروید در هنگام بهروزرسانی یک اعلان، محدودیت نرخ را نیز اعمال میکند. اگر بهروزرسانیهای یک اعلان را خیلی مکرر پست میکنید، مثلاً در کمتر از یک ثانیه، سیستم ممکن است بهروزرسانیها را حذف کند.
سازگاری اعلان
رابط کاربری سیستم اعلان اندروید و APIهای مربوط به اعلان به طور مداوم در حال تکامل هستند. برای استفاده از آخرین ویژگیهای API اعلان در حین پشتیبانی از دستگاههای قدیمیتر، از پشتیبانی کتابخانه اعلان API، NotificationCompat
و زیر کلاسهای آن و همچنین NotificationManagerCompat
استفاده کنید. این به شما امکان میدهد از نوشتن کد شرطی برای بررسی سطوح API اجتناب کنید، زیرا این APIها آن را مدیریت میکنند.
NotificationCompat
با تکامل پلتفرم به روز می شود تا جدیدترین روش ها را در بر بگیرد. با این حال، در دسترس بودن یک روش در NotificationCompat
تضمین نمیکند که ویژگی مربوطه در دستگاههای قدیمیتر ارائه شود. در برخی موارد، فراخوانی یک API تازه معرفی شده منجر به عدم عملیات در دستگاه های قدیمی تر می شود.
در زیر خلاصه ای از قابل توجه ترین تغییرات رفتاری در سطح API برای اعلان های اندروید آمده است.
اندروید 5.0، API سطح 21
صفحه قفل و اعلانهای هدآپ را معرفی میکند.
به کاربر امکان میدهد تلفن را روی حالت «مزاحم نشوید» تنظیم کند و پیکربندی کند که کدام اعلانها اجازه دارند وقتی دستگاه در حالت فقط اولویت قرار دارد، آنها را قطع کنند.
روش هایی را برای تعیین اینکه آیا اعلان در صفحه قفل نمایش داده می شود، مانند
setVisibility()
) و برای تعیین نسخه عمومی از متن اعلان اضافه می کند.متد
setPriority()
را اضافه میکند که به سیستم میگوید اعلان چقدر وقفه دارد. برای مثال، تنظیم اولویت روی بالا باعث میشود اعلان بهعنوان یک اعلان اصلی ظاهر شود.پشتیبانی از پشته های اعلان را به دستگاه های Android Wear (که اکنون Wear OS نامیده می شود) اضافه می کند. اعلان ها را با استفاده از
setGroup()
در یک پشته قرار دهید. پشتههای اعلانها که بعداً بهعنوان یک گروه یا بسته شناخته میشوند، تا قبل از Android 7.0 (سطح API 24) در رایانههای لوحی یا تلفنها پشتیبانی نمیشوند.
اندروید 7.0، API سطح 24
الگوهای اعلان را تغییر می دهد تا بر تصویر قهرمان و آواتار تأکید کند.
سه الگوی اعلان را اضافه می کند: یکی برای برنامه های پیام رسانی و دو مورد دیگر برای تزئین نماهای محتوای سفارشی با قیمت قابل ارتقا و سایر تزئینات سیستم.
برای گروههای اعلان به دستگاههای دستی، مانند تلفنها و تبلتها، پشتیبانی میافزاید. از همان API استفاده می کند که پشته های اعلان Android Wear (که اکنون Wear OS نامیده می شود) که در Android 5.0 (سطح API 21) معرفی شده است.
به کاربران امکان می دهد با استفاده از پاسخ درون خطی در داخل یک اعلان پاسخ دهند. آنها می توانند متنی را وارد کنند که سپس به برنامه والد اعلان هدایت می شود.
اندروید 8.0، API سطح 26
باعث می شود اعلان های فردی در یک کانال خاص قرار داده شوند.
به کاربران امکان میدهد به جای خاموش کردن همه اعلانهای یک برنامه، اعلانهای هر کانال را خاموش کنند.
باعث میشود برنامههایی با اعلانهای فعال یک نشان اعلان را در بالای نماد برنامه خود در صفحه اصلی یا راهانداز نمایش دهند.
به کاربران امکان می دهد اعلان را از کشو به تعویق بیندازند. می توانید یک مهلت زمانی خودکار برای اعلان تنظیم کنید.
به شما امکان می دهد رنگ پس زمینه اعلان را تنظیم کنید.
برخی از APIهای مربوط به رفتارهای اعلان را از
Notification
بهNotificationChannel
منتقل می کند. به عنوان مثال، به جایNotificationCompat.Builder.setPriority()
برای اندروید 8.0 و بالاترNotificationChannel.setImportance()
استفاده کنید.
Android 13.0، API سطح 33
- مجوز زمان اجرا را اضافه می کند. برای اینکه برنامه شما اعلانهای غیرمستقیم را ارسال کند، کاربر باید این مجوز را به برنامه شما بدهد.
اندروید 14.0، API سطح 34
اعلانهای هدف تمام صفحه را به برنامههایی که تماسها و هشدارها را ارائه میکنند محدود میکند. از
NotificationManager.canUseFullScreenIntent
API استفاده کنید تا بررسی کنید آیا برنامه شما مجوز دارد یا خیر. اگر نه، برنامه شما میتواند ازACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
برای راهاندازی صفحه تنظیمات استفاده کند که در آن کاربران میتوانند مجوز را اعطا کنند.نحوه تجربه کاربران اعلانهای غیرقابل رد کردن را با اجازه دادن به کاربران برای رد کردن اعلانها حتی زمانی که پرچم
Notification.FLAG_ONGOING_EVENT
تنظیم شده است، تغییر میدهد. اگر پرچمNotification.FLAG_ONGOING_EVENT
یا کنترلکننده خطمشی دستگاه (DPC) و بستههای پشتیبانیکننده برای سازمانی تنظیم شده باشد، این مورد برای اعلانهایCallStyle
اعمال نمیشود. هنگامی که تلفن قفل است، یا اگر کاربر پاک کردن همه را انتخاب کند، این نیز اعمال نمی شود.