แสดงการแจ้งเตือนตามช่วงเวลา

แอปของคุณอาจต้องดึงดูดความสนใจของผู้ใช้อย่างเร่งด่วนในบางสถานการณ์ เช่น การปลุกที่ดังอยู่หรือสายเรียกเข้า ในแอปที่กำหนดเป้าหมายอุปกรณ์ที่ทำงาน Android 9 (API ระดับ 28) หรือเวอร์ชันก่อนหน้า คุณอาจต้องจัดการเรื่องนี้โดยการเปิดตัว กิจกรรมในขณะที่แอปอยู่ในเบื้องหลัง เอกสารนี้แสดงวิธีสร้าง ลักษณะการทํางานนี้ในอุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) เพื่อ Android 13 (API ระดับ 33)

เพิ่มสิทธิ์ POST_NOTIFICATIONS

เริ่มตั้งแต่ Android 13 ให้เพิ่มบรรทัดต่อไปนี้ลงใน AndroidManifest.xml ไฟล์:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

หลังจากมีลิงก์แล้ว คุณจะสร้างช่องทางการแจ้งเตือนได้

สร้างช่องทางการแจ้งเตือน

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

สร้างช่องทางการแจ้งเตือนในชั้นเรียนของ Application เมธอด onCreate:

Kotlin

class DACapp : 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)
    }
}

เมื่อผู้ใช้เรียกใช้แอปของคุณเป็นครั้งแรก ผู้ใช้จะเห็นบางอย่าง เช่น รูปที่ 1 ในหน้าจอระบบข้อมูลแอปของแอป ให้ทำดังนี้

รูปภาพแสดงข้อมูลแอป ซึ่งเป็นหน้าจอการแจ้งเตือนของแอป
รูปที่ 1 ส่วนการแจ้งเตือนในแอป หน้าจอข้อมูลในการตั้งค่าระบบของแอป

จัดการสิทธิ์การแจ้งเตือน

ตั้งแต่ Android 13 เป็นต้นไป ให้ขอสิทธิ์การแจ้งเตือนก่อน แสดงการแจ้งเตือนแก่ผู้ใช้

การใช้งานขั้นต่ำจะมีลักษณะดังนี้

Kotlin

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 การแตะปุ่ม Request permission จะเป็นการทริกเกอร์กล่องโต้ตอบที่แสดงในรูปที่ 2 ดังนี้

รูปภาพแสดงกล่องโต้ตอบขอสิทธิ์
รูปที่ 2 กล่องโต้ตอบของระบบสำหรับการแจ้งเตือน คำขอสิทธิ์

หากผู้ใช้ยอมรับคำขอสิทธิ์ ส่วนข้อมูลแอปของแอปจะปรากฏขึ้น เหมือนรูปที่ 3:

รูปภาพแสดงหน้าจอข้อมูลแอปหลังจากได้รับคำขอสิทธิ์การแจ้งเตือน
รูปที่ 3 ได้รับสิทธิ์การแจ้งเตือนแล้ว

สร้างการแจ้งเตือนที่มีลำดับความสำคัญสูง

เมื่อสร้างการแจ้งเตือน ให้ใส่ชื่อและข้อความที่สื่อความหมาย

ตัวอย่างต่อไปนี้มีการแจ้งเตือน

Kotlin

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(666, notificationBuilder.build())
}

แสดงการแจ้งเตือนแก่ผู้ใช้

การเรียกฟังก์ชัน showNotification() จะทำให้มีการแจ้งเตือนดังนี้

Kotlin

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

การแจ้งเตือนในตัวอย่างนี้มีลักษณะเป็นรูปที่ 4

รูปภาพที่แสดงการแจ้งเตือนที่มีลำดับความสำคัญสูง
รูปที่ 4 การแจ้งเตือนที่มีลำดับความสำคัญสูง

การแจ้งเตือนต่อเนื่อง

เมื่อคุณแสดงการแจ้งเตือนต่อผู้ใช้ ผู้ใช้จะยอมรับหรือปิดการแจ้งเตือนหรือช่วยเตือนของแอปได้ เช่น ผู้ใช้สามารถยอมรับหรือปฏิเสธ สายเรียกเข้า

หากการแจ้งเตือนเป็นการแจ้งเตือนอย่างต่อเนื่อง เช่น มีสายเรียกเข้า เชื่อมโยงการแจ้งเตือนกับเบื้องหน้า service [บริการ] ข้อมูลโค้ดต่อไปนี้ แสดงวิธีแสดงการแจ้งเตือนที่เชื่อมโยงกับบริการที่ทำงานอยู่เบื้องหน้า

Kotlin

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

Java

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification);