إضافة إشعارات إلى تطبيق وسائط

عند إنشاء تطبيق وسائط يعالج الصوت أو الفيديو، من المهم استخدام الإشعارات وقنوات الإشعارات الصحيحة هذا النمط يضمن توفُّر الميزات القيّمة التالية للإشعارات:

  • أن تكون الأولوية للإشعار
  • لا يمكن إغلاقها
  • استخدام سمات الصوت لنغمات الرنين

يمكنك استخدام "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 لتمييز إشعارات المكالمات عن الأنواع الأخرى من الإشعارات.