Medya uygulamasına bildirim ekleme

Ses veya video işleyen bir medya uygulaması oluştururken, doğru bildirimleri ve bildirim kanallarını kullanmak önemlidir. Bu sayede bildirimler aşağıdaki değerli özelliklere sahip olur:

  • Bildirim önceliğine sahip olma
  • Kapatılamaz
  • Zil sesleri için ses özelliklerini kullanma

NotificationChannel.Builder kullanarak biri gelen aramalar, diğeri ise etkin aramalar için olmak üzere iki bildirim kanalı oluşturabilirsiniz.

internal companion object {
    const val TELECOM_NOTIFICATION_ID = 200
    const val TELECOM_NOTIFICATION_ACTION = "telecom_action"
    const val TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID = "telecom_incoming_channel"
    const val TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID = "telecom_ongoing_channel"

    private val ringToneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
}

Bildirimi her yerde görüntülemek ve zil sesi için ses çalmasına izin vermek için gelen bildirim kanalının önemini yüksek olarak ayarlayın.

val incomingChannel = NotificationChannelCompat.Builder(
        TELECOM_NOTIFICATION_INCOMING_CHANNEL_ID,
        NotificationManagerCompat.IMPORTANCE_HIGH,
    ).setName("Incoming calls")
        .setDescription("Handles the notifications when receiving a call")
        .setVibrationEnabled(true).setSound(
            ringToneUri,
            AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .setLegacyStreamType(AudioManager.STREAM_RING)
                .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build(),
        ).build()

Yalnızca etkin aramalar için önemin varsayılan olarak ayarlanması gerekir. Gelen arama bildirimlerinin kapatılamamasına izin vermek için aşağıdaki gelen arama stilini kullanın.

val ongoingChannel = NotificationChannelCompat.Builder(
        TELECOM_NOTIFICATION_ONGOING_CHANNEL_ID,
        NotificationManagerCompat.IMPORTANCE_DEFAULT,
    )
    .setName("Ongoing calls")
    .setDescription("Displays the ongoing call notifications")
    .build()

Gelen arama sırasında kullanıcının cihazının kilitli olduğu kullanım alanlarını ele almak için tam ekran bildirim kullanarak kullanıcının aramayı yanıtlamasına olanak tanıyan bir etkinlik görüntüleyin.

// on the notification
val contentIntent = PendingIntent.getActivity(
    /* context = */ context,
    /* requestCode = */ 0,
    /* intent = */ Intent(context, TelecomCallActivity::class.java),
    /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,
)

Arama bildirimlerini diğer bildirim türlerinden ayırt etmek amacıyla CallStyle kullanımıyla ilgili talimatlar için Arama uygulamaları için arama stili bildirim oluşturma konusunu okuyun.