Zamana duyarlı bildirimleri göster

Uygulamanızın, devam eden bir alarm veya gelen arama gibi belirli durumlarda kullanıcının dikkatini acilen çekmesi gerekebilir. Android 9 (API düzeyi 28) veya önceki sürümlerin yüklü olduğu cihazlarda, uygulamayı arka planda çalışırken bir etkinlik başlatarak bu durumu ele alabilirsiniz. Bu belgede, Android 10 (API düzeyi 29) ve sonraki sürümleri çalıştıran cihazlarda bu davranışın nasıl elde edileceği gösterilmektedir.

POST_NOTIFICATIONS iznini ekleyin

Android 13'ten (API düzeyi 33) itibaren POST_NOTIFICATIONS iznini AndroidManifest.xml dosyanızda beyan edin:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

İzni tanımladıktan sonra bir bildirim kanalı oluşturun.

Bildirim kanalı oluşturma

Bildirimleri göstermek ve kullanıcıların sistem ayarlarında bildirim kategorilerini yönetmesine izin vermek için bir bildirim kanalı oluşturun. Bildirim kanalları hakkında daha fazla bilgi için Bildirim kanalları oluşturma ve yönetme başlıklı makaleyi inceleyin.

onCreate sınıfınızın Application yönteminde bildirim kanallarınızı oluşturun:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        val channel = NotificationChannel(
            CHANNEL_ID,
            "High priority notifications",
            NotificationManager.IMPORTANCE_HIGH
        )

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

Kullanıcı uygulamayı ilk kez çalıştırdığında sistem, Şekil 1'de gösterildiği gibi kanalı Uygulama bilgileri ekranında gösterir:

Oluşturulan kanalın gösterildiği uygulama bilgileri bildirim ekranı.
Şekil 1. Uygulamanın sistem ayarlarındaki Uygulama Bilgileri ekranının Bildirimler bölümü.

Bildirim izinlerini yönetme

Android 13'ten itibaren, kullanıcılara bildirim göstermeden önce bildirim izinleri isteyin.

Aşağıdaki kod örneğinde, Jetpack Compose'da çalışma zamanı bildirimi izninin nasıl isteneceği gösterilmektedir:

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission(),
    onResult = { hasNotificationPermission = it }
)
// ...
Button(
    onClick = {
        if (!hasNotificationPermission) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    },
) {
    Text(text = "Request permission")
}

Android 13 ve sonraki sürümlerin yüklü olduğu cihazlarda İzin iste düğmesine dokunulduğunda Şekil 2'de gösterilen sistem iletişim kutusu görüntülenir:

Kullanıcıdan bildirimlere izin vermesini isteyen sistem iletişim kutusu.
Şekil 2. Bildirim izni isteğiyle ilgili sistem iletişim kutusu.

Kullanıcı izni verdiğinde sistem, Şekil 3'te gösterildiği gibi Uygulama bilgileri ekranını günceller:

Verilen bildirim izinlerini gösteren Uygulama Bilgileri ekranı.
Şekil 3. Bildirim izinleri verildi.

Yüksek öncelikli bildirim oluşturma

Yüksek öncelikli bir bildirim oluşturduğunuzda net bir başlık ve mesaj metni sağlayın. Ayrıca yüksek önem düzeyine sahip bir kanal ve öncelik düzeyi atayın.

Aşağıdaki kod örneği, yüksek öncelikli bir bildirimi yapılandırıp oluşturur:

private fun showNotification() {
    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    val notificationBuilder =
        NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.baseline_auto_awesome_24)
            .setContentTitle("HIGH PRIORITY")
            .setContentText("Check this dog puppy video NOW!")
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION)

    notificationManager.notify(0, notificationBuilder.build())
}

Bildirimi kullanıcıya gösterme

showNotification işlevinin çağrılması, bildirimi aşağıdaki şekilde tetikler:

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

Şekil 4'te, sistem tarafından gösterilen yüksek öncelikli bildirim gösterilmektedir:

Cihazda yüksek öncelikli bir bildirim gösterilir.
Şekil 4. Yüksek öncelikli bildirimler

Devam eden görev bildirimi

Kullanıcıya bildiriminizi gösterdiğinizde kullanıcı, uygulamanızın uyarısını veya hatırlatıcısını onaylayabilir ya da kapatabilir. Örneğin, kullanıcı gelen bir telefon aramasını kabul edebilir veya reddedebilir.

Bildiriminiz, devam eden bir arka plan görevini (ör. etkin bir telefon görüşmesi) temsil ediyorsa bildirimi bir ön plan hizmetiyle ilişkilendirin. Aşağıdaki kod snippet'inde, bir ön plan hizmetiyle ilişkili bildirimin nasıl görüntüleneceği gösterilmektedir:

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

Canlı güncellemeleri kullanmayı düşünün

Zamana duyarlı devam eden bildirimler, görünürlüğün artmasından faydalanabilir. Sistem kullanıcı arayüzü yüzeylerinde durum bilgilerini göstermek için devam eden bildirimleri Anlık Bilgilendirmeler olarak tanıtmayı düşünebilirsiniz.