اعلان ها را به یک برنامه رسانه اضافه کنید

هنگام ساخت یک برنامه رسانه ای که صدا یا تصویر را پردازش می کند، مهم است که از اعلان ها و کانال های اطلاع رسانی درست استفاده کنید. این تضمین می کند که اعلان ها دارای ویژگی های ارزشمند زیر هستند:

  • اولویت اطلاع رسانی داشته باشید
  • غیر قابل اخراج هستند
  • از ویژگی های صوتی برای آهنگ های زنگ استفاده کنید

از NotificationChannel.Builder برای راه اندازی دو کانال اعلان استفاده کنید: یکی برای تماس های ورودی و دیگری برای تماس های فعال.

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

برای نمایش اعلان در همه جا و اجازه پخش صدا برای آهنگ زنگ، اهمیت کانال اعلان ورودی را روی بالا تنظیم کنید.

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

فقط تماس‌های فعال نیاز به تنظیم اهمیت روی پیش‌فرض دارند. از سبک تماس ورودی زیر استفاده کنید تا اعلان‌های تماس‌های ورودی غیرقابل رد شدن باشند.

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

برای رسیدگی به موارد استفاده که در آن دستگاه کاربر در طول تماس ورودی قفل است، از یک اعلان تمام صفحه برای نمایش یک فعالیت استفاده کنید تا کاربر بتواند به تماس پاسخ دهد.

// 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,
)

برای دستورالعمل‌های استفاده از CallStyle برای تشخیص اعلان‌های تماس از سایر انواع اعلان‌ها ، ایجاد اعلان سبک تماس برای برنامه‌های تماس را بخوانید.