Bildirim rozetini değiştirme

Android 8.0 (API düzeyi 26) sürümünden itibaren, ilişkili uygulamada etkin bir bildirim olduğunda başlatıcı simgesinde bildirim rozetleri (bildirim noktaları olarak da bilinir) görünür. Kullanıcılar, uygulama simgesine dokunup basılı tutarak bildirimleri ve uygulama kısayollarını görebilir (Şekil 1).

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

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

Rozetleri devre dışı bırakma

Bildirimleriniz için rozetleri devre dışı bırakmak isteyebilirsiniz. Bu durumda, NotificationChannel nesnesinde setShowBadge(false) metodunu çağırarak rozetleri kanal bazında devre dışı bırakabilirsiniz.

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

  • Devam eden bildirimler: Görüntü işleme, medya oynatma kontrolleri veya mevcut gezinme talimatları gibi devam eden bildirimlerin çoğu rozet olarak gösterilemez.
  • Takvim hatırlatıcıları: Mevcut zamanda gerçekleşen etkinliklere rozet eklemekten kaçının.
  • Saat veya alarm etkinlikleri: Mevcut alarmlarla ilgili rozet bildirimleri gösterilmez.

Aşağıdaki örnek kodda, bir bildirim kanalının rozetlerinin nasıl gizleneceği gösterilmektedir:

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ı tutma menüsünde görüntülenen bir sayıyı artırır ancak uygulamanız için bu sayıyı geçersiz kılabilirsiniz. Örneğin, birden fazla yeni mesajı temsil etmek için yalnızca bir bildirim kullanıyorsanız ancak sayının toplam yeni mesaj sayısını temsil etmesini istiyorsanız bu özellik yararlı olabilir.

Özel bir numara ayarlamak için bildirimde setNumber() simgesini tıklayın:

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

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

Dokunup basılı tutma menüsünde, varsa bildirimle ilişkili büyük veya küçük simge gösterilir. Sistem varsayılan olarak büyük simgeyi gösterir ancak küçük simgeyi görüntülemek için Notification.Builder.setBadgeIconType() işlevini çağırıp BADGE_ICON_SMALL sabit değerini iletebilirsiniz.

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 setShortcutId() çağrısını yaparak bildirim etkinken kısayolu geçici olarak gizleyebilirsiniz.

Bildirimleri kullanan daha fazla örnek kod için SociaLite örnek uygulamasına bakın.