با شروع Android 8.0 (سطح API 26)، نشانهای اعلان - که بهعنوان نقاط اعلان نیز شناخته میشوند - روی نماد راهانداز ظاهر میشوند، زمانی که برنامه مرتبط دارای اعلان فعال باشد. همانطور که در شکل 1 نشان داده شده است، کاربران میتوانند نماد برنامه را لمس کرده و نگه دارند تا اعلانها به همراه میانبرهای برنامه ظاهر شوند.
این نقطهها بهطور پیشفرض در برنامههای راهاندازی که از آنها پشتیبانی میکنند ظاهر میشوند و برنامه شما نیازی به انجام کاری ندارد. با این حال، ممکن است شرایطی وجود داشته باشد که نخواهید نقطه اعلان ظاهر شود یا بخواهید دقیقاً کنترل کنید کدام اعلانها در آنجا ظاهر میشوند.
شکل 1. نشان های اعلان و منوی لمس و نگه داشتن.
علامت گذاری را غیرفعال کنید
مواردی وجود دارد که نشانها برای اعلانهای شما معنی ندارند، بنابراین میتوانید با فراخوانی setShowBadge(false)
در شی NotificationChannel
، آنها را بر اساس هر کانال غیرفعال کنید.
به عنوان مثال، ممکن است بخواهید نشان های اعلان را در شرایط زیر غیرفعال کنید:
- اعلانهای مداوم: بیشتر اعلانهای در حال انجام، مانند پردازش تصویر، کنترلهای پخش رسانه، یا دستورالعملهای ناوبری فعلی، به عنوان یک نشان معنی ندارند.
- یادآوری های تقویم: از نشان دادن رویدادهایی که در زمان فعلی رخ می دهند اجتناب کنید.
- رویدادهای ساعت یا زنگ هشدار: از اعلانهای نشاندار مربوط به زنگ هشدارهای فعلی خودداری کنید.
کد نمونه زیر نحوه پنهان کردن نشانها را برای یک کانال اعلان نشان میدهد:
کاتلین
val id = "my_channel_01" val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_LOW val mChannel = NotificationChannel(id, name, importance).apply { description = descriptionText setShowBadge(false) } val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel)
جاوا
String id = "my_channel_01"; CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel mChannel = new NotificationChannel(id, name, importance); mChannel.setDescription(description); mChannel.setShowBadge(false); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(mChannel);
تعداد اعلانهای سفارشی را تنظیم کنید
به طور پیشفرض، همانطور که در شکل 1 نشان داده شده است، هر اعلان یک عدد نمایش داده شده در منوی لمس و نگهداشتن را افزایش میدهد، اما میتوانید این عدد را برای برنامه خود لغو کنید. برای مثال، اگر فقط از یک اعلان برای نمایش چندین پیام جدید استفاده میکنید، اما میخواهید تعداد کل پیامهای جدید را نشان دهد، این ممکن است مفید باشد.
برای تنظیم یک شماره سفارشی، همانطور که در اینجا نشان داده شده است، setNumber()
در اعلان تماس بگیرید:
کاتلین
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setNumber(messageCount) .build()
جاوا
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setNumber(messageCount) .build();
نماد منوی یک اعلان را تغییر دهید و نگه دارید
منوی لمس و نگه داشتن نماد بزرگ یا کوچک مرتبط با یک اعلان را در صورت وجود نمایش می دهد. به طور پیشفرض، سیستم نماد بزرگ را نمایش میدهد، اما میتوانید Notification.Builder.setBadgeIconType()
فراخوانی کنید و ثابت BADGE_ICON_SMALL
را برای نمایش نماد کوچک ارسال کنید.
کاتلین
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL) .build()
جاوا
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL) .build();
مخفی کردن یک میانبر تکراری
اگر برنامه شما اعلانی ایجاد می کند که میانبر برنامه را کپی می کند، می توانید با فراخوانی setShortcutId()
موقتاً میانبر را در زمانی که اعلان فعال است پنهان کنید.
برای نمونه کد بیشتری که از اعلانها استفاده میکند، به نمونه افراد مراجعه کنید.