Bildirim rozetini değiştirme

Android 8.0 (API düzeyi 26) sürümünden başlayarak, ilişkilendirilmiş uygulama etkin bir bildirime sahip olduğunda başlatıcı simgesinde bildirim noktaları olarak da bilinen bildirim rozetleri görünür. Kullanıcılar, uygulama simgesine dokunup basılı tutarak bildirimleri ve uygulama kısayollarını (Şekil 1'de gösterildiği gibi) görebilirler.

Bu noktalar, destekleyen başlatıcı uygulamalarında varsayılan olarak görünür ve uygulamanızın yapması gereken bir şey yoktur. Ancak bildirim noktasının görünmesini istemediğiniz veya tam olarak hangi bildirimlerin burada görüneceğini kontrol etmek istediğiniz durumlar olabilir.

Şekil 1. Bildirim rozetleri ile dokunup basılı tutma menüsü.

Rozeti devre dışı bırak

Bildirimleriniz için rozetlerin kullanılmadığı durumlar olabilir. Bu nedenle, NotificationChannel nesnenizde setShowBadge(false) yöntemini çağırarak bunları kanal bazında devre dışı bırakabilirsiniz.

Örneğin, aşağıdaki durumlarda bildirim rozetlerini devre dışı bırakmak isteyebilirsiniz:

  • Devam eden bildirimler: Resim işleme, medya oynatma kontrolleri veya mevcut gezinme talimatları gibi devam eden bildirimlerin çoğu rozet olarak anlamlı değildir.
  • Takvim hatırlatıcıları: Mevcut zamanda gerçekleşen rozet etkinliklerinden kaçının.
  • Saat veya alarm etkinlikleri: Mevcut alarmlarla ilgili rozet bildirimleri göndermekten kaçının.

Aşağıdaki örnek kod, bir bildirim kanalı için rozetlerin nasıl gizleneceğini gösterir:

Kotlin

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)

Java

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);

Özel bildirim sayısını ayarlama

Varsayılan olarak, her bildirim, Şekil 1'de gösterildiği gibi, dokunup basılı tut menüsünde görüntülenen bir sayıyı artırır ancak bu sayıyı uygulamanız için geçersiz kılabilirsiniz. Örneğin, birden çok yeni mesajı temsil etmek için tek bir bildirim kullanıyor ancak sayının toplam yeni mesaj sayısını temsil etmesini istiyorsanız bu yararlı olabilir.

Özel bir numara ayarlamak için bildirim üzerinden setNumber() numaralı telefonu arayın (aşağıda gösterildiği gibi):

Kotlin

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()

Java

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();

Bildirimin dokunup basılı tutma menü simgesini değiştirme

Dokunup basılı tutma menüsünde, varsa bildirimle ilişkili büyük veya küçük simge görüntülenir. Varsayılan olarak, sistem büyük simgeyi görüntüler, ancak Notification.Builder.setBadgeIconType() değerini çağırabilir ve küçük simgeyi görüntülemek için BADGE_ICON_SMALL sabit değerini geçirebilirsiniz.

Kotlin

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()

Java

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();

Yinelenen bir kısayolu gizleme

Uygulamanız bir uygulama kısayolunu kopyalayan bir bildirim oluşturursa bildirim etkinken setShortcutId() kodunu çağırarak kısayolu geçici olarak gizleyebilirsiniz.

Bildirimleri kullanan daha fazla örnek kod için Kişiler örneği bölümüne bakın.