เพิ่มการแจ้งเตือนในแอปสื่อ

เมื่อสร้างแอปสื่อที่ประมวลผลเสียงหรือวิดีโอ คุณจำเป็นต้องใช้ การแจ้งเตือนและช่องทางการแจ้งเตือนที่ถูกต้อง ช่วงเวลานี้ ตรวจสอบว่าการแจ้งเตือนมีฟีเจอร์ที่เป็นประโยชน์ดังต่อไปนี้

  • มีลำดับความสำคัญของการแจ้งเตือน
  • ปิดไม่ได้
  • ใช้แอตทริบิวต์เสียงสำหรับเสียงเรียกเข้า

ใช้ NotificationChannel.Builder เพื่อสร้างช่องทางการแจ้งเตือน 2 ช่องทาง โดยช่องทางหนึ่งสำหรับ สายเรียกเข้าและอื่นๆ สำหรับสายที่สนทนาอยู่

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 เพื่อแยกการแจ้งเตือนสายเรียกเข้าออกจากประเภท การแจ้งเตือน