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, uygulama arka plandayken bir etkinlik başlatarak bu sorunu çözebilirsiniz. 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 ekleme
Android 13'ten (API düzeyi 33) itibaren AndroidManifest.xml dosyanızda POST_NOTIFICATIONS iznini beyan edin:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
İzni beyan ettikten 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 olanak tanımak 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.
Bildirim kanallarınızı Application sınıfınızın onCreate yönteminde 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, kanalı Uygulama bilgileri ekranında Şekil 1'de gösterildiği gibi görüntüler:
Bildirim izinlerini yönetme
Android 13'ten itibaren, kullanıcılara bildirim göstermeden önce bildirim izni istemeniz gerekir.
Aşağıdaki kod örneğinde, Jetpack Compose'da çalışma zamanı bildirim izninin nasıl isteneceğini 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ı izin verdiğinde sistem, Uygulama bilgileri ekranını Şekil 3'te gösterildiği gibi günceller:
Yüksek öncelikli bildirim oluşturma
Yüksek öncelikli bir bildirim oluştururken net bir başlık ve mesaj metni girin. Ayrıca yüksek önem düzeyine sahip bir kanal ve öncelik düzeyi de atayın.
Aşağıdaki kod örneği, yüksek öncelikli bir bildirim 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 gibi tetikler:
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
Şekil 4'te, sistem tarafından gösterilen yüksek öncelikli bildirim yer almaktadır:
Devam eden görev bildirimi
Bildiriminizi kullanıcıya 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 araması) temsil ediyorsa bildirimi bir ön plan hizmetiyle ilişkilendirin. Aşağıdaki kod snippet'inde, ön plan hizmetiyle ilişkili bir bildirimin nasıl gösterileceği açıklanmaktadır:
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
Canlı haberleri kullanma
Zamana duyarlı devam eden bildirimler, daha fazla görünürlükten yararlanabilir. Sistem kullanıcı arayüzü yüzeylerinde durum bilgilerini göstermek için devam eden bildirimleri Canlı Haberler olarak tanıtmayı düşünebilirsiniz.