Notification Channel — คืออะไร มีแบบใดบ้าง และทำงานอย่างไรใน Android

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-03-20 เวลาอ่าน: 8 นาที

Notification Channel (ช่องทางการแจ้งเตือน) — เป็นกลไกของ Android ที่เริ่มใช้ในเวอร์ชัน 8.0 (API 26) ซึ่งจัดกลุ่มการแจ้งเตือนตามหมวดหมู่และให้ผู้ใช้ควบคุมพฤติกรรมของมัน แต่ละช่องทางกำหนดระดับความสำคัญ เสียง การสั่น และรูปแบบภาพสำหรับการแจ้งเตือนทั้งหมดที่ส่งผ่านช่องทางนั้น ตามข้อมูลจาก Android Developers, NotificationChannel เป็นสิ่งที่จำเป็นสำหรับการแจ้งเตือนทั้งหมดบน Android 8+ — หากไม่มีช่องทาง การแจ้งเตือนจะไม่แสดง

สาระสำคัญ

  • Notification Channel — หมวดหมู่การแจ้งเตือนของ Android 8+ ที่จัดการพฤติกรรมของกลุ่มการแจ้งเตือน
  • ความจำเป็น — บน Android 8+ การแจ้งเตือนทุกครั้งต้องมีช่องทาง มิฉะนั้นจะไม่แสดง
  • ระดับความสำคัญ (Importance Level) — ระดับความสำคัญของช่องทาง (IMPORTANCE_HIGH, DEFAULT, LOW, MIN) กำหนดวิธีการแสดงผล
  • การควบคุมโดยผู้ใช้ — ผู้ใช้สามารถปรับแต่งแต่ละช่องทางได้ตามต้องการในการตั้งค่าระบบ
  • กลุ่มช่องทาง — NotificationChannelGroup รวมช่องทางให้เห็นเป็นกลุ่มในอินเทอร์เฟซการตั้งค่า

Notification Channel คืออะไร?

Notification Channel — คอนเทนเนอร์เชิงตรรกะสำหรับการแจ้งเตือนประเภทเดียวกันใน Android 8+ (Oreo) นักพัฒนาสร้างช่องทางด้วย ID ที่ไม่ซ้ำกัน กำหนดพารามิเตอร์ของมัน จากนั้นส่งการแจ้งเตือนแต่ละครั้งโดยระบุช่องทางนี้ การแจ้งเตือนทั้งหมดในช่องทางเดียวกันจะสืบทอดการตั้งค่าของมัน

ก่อน Android 8 การจัดการการแจ้งเตือนเป็นแบบ binary: ทั้งหมดหรือไม่มีเลย ผู้ใช้สามารถปิดการแจ้งเตือนทั้งหมดของแอปเท่านั้น ช่องทางแก้ปัญหานี้: ตอนนี้สามารถปิดการแจ้งเตือน "โฆษณา" ได้ แต่ยังคงไว้ซึ่ง "ข้อความจากเพื่อน"

หลังจากสร้างช่องทางแล้ว ความสำคัญ (importance) สามารถเปลี่ยนแปลงโดยผู้ใช้ได้ทุกเมื่อผ่าน การตั้งค่า → แอป → การแจ้งเตือน นักพัฒนาไม่สามารถเปลี่ยน importance ผ่านโปรแกรมหลังจากสร้างช่องทางแล้ว — นี่คือข้อจำกัดด้านความปลอดภัยของ Android

ความจำเป็นของช่องทาง

บน Android 8+ การแจ้งเตือนทุกครั้งต้องส่งผ่าน NotificationChannel หากแอปพยายามแสดงการแจ้งเตือนโดยไม่มีช่องทาง — ระบบจะไม่สนใจอย่างเงียบๆ ข้อยกเว้น — การแจ้งเตือนผ่าน NotificationCompat พร้อมช่องทางเริ่มต้นที่สร้างโดยไลบรารีโดยอัตโนมัติ

ช่องทางการแจ้งเตือนใน Android ทำงานอย่างไร?

ช่องทางการแจ้งเตือนถูกกำหนดโดยชุดพารามิเตอร์ที่ตั้งค่าเมื่อสร้างผ่านคลาส NotificationChannel พารามิเตอร์หลักคือระดับความสำคัญ (importance level) ซึ่งกำหนดวิธีการแจ้งเตือนโต้ตอบกับผู้ใช้

  • ID ช่องทาง — สตริงที่ไม่ซ้ำกัน (เช่น "messages") ใช้เมื่อส่งการแจ้งเตือนแต่ละครั้ง
  • ชื่อช่องทาง — ชื่อที่อ่านได้ แสดงให้ผู้ใช้เห็นในการตั้งค่า
  • คำอธิบาย — คำอธิบายว่าช่องทางใช้ทำอะไร แสดงในการตั้งค่าใต้ชื่อ
  • Importance — ระดับตั้งแต่ IMPORTANCE_NONE ถึง IMPORTANCE_HIGH กำหนดวิธีการแสดงผล
  • เสียงและการสั่น — ตั้งค่าแยกต่างหากสำหรับแต่ละช่องทางเมื่อสร้าง

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

พารามิเตอร์การกำหนดค่าช่องทาง

เมื่อสร้าง NotificationChannel สามารถกำหนดค่า: เสียง (แบบกำหนดเองหรือระบบ), การสั่น (รูปแบบและระยะเวลา), ไฟแสดงสถานะ (สี LED), ป้ายไอคอน (setShowBadge), การล็อกหน้าจอ (setLockscreenVisibility) และ โหมดห้ามรบกวน (setBypassDnd) พารามิเตอร์เหล่านี้จะถูกกำหนดเมื่อสร้างช่องทางและสามารถเปลี่ยนแปลงได้โดยผู้ใช้เท่านั้นในภายหลัง

ระดับความสำคัญ (Importance Level): ตารางเปรียบเทียบ

ระดับความสำคัญ (importance) — พารามิเตอร์หลักของช่องทาง มันกำหนดว่าการแจ้งเตือนจะแสดงเสียง ปรากฏบนหน้าจอ หรือเพียงแค่อยู่ในร่ม ความสำคัญไม่ควรสับสนกับลำดับความสำคัญ — importance ถูกกำหนดโดยช่องทาง ในขณะที่ลำดับความสำคัญ (setPriority) จะถูกละเว้นบน Android 8+

ระดับค่าคงที่พฤติกรรมเสียง
HIGHIMPORTANCE_HIGH (4)แสดง heads-up banner ปรากฏในแถบแจ้งเตือนใช่
DEFAULTIMPORTANCE_DEFAULT (3)ปรากฏในแถบแจ้งเตือน ไม่มี heads-upใช่
LOWIMPORTANCE_LOW (2)ปรากฏในแถบแจ้งเตือนโดยไม่มีเสียงไม่
MINIMPORTANCE_MIN (1)เฉพาะในร่ม ไม่มีเสียงและการสั่นไม่
NONEIMPORTANCE_NONE (0)ไม่แสดงเลยไม่

สำหรับสถานการณ์ผู้ใช้ส่วนใหญ่ ใช้ IMPORTANCE_DEFAULT (3) — การแจ้งเตือนจะปรากฏในแถบแจ้งเตือนพร้อมเสียง แต่ไม่มีป้ายลอย IMPORTANCE_HIGH ใช้เฉพาะสำหรับเหตุการณ์ที่สำคัญ: สายเรียกเข้า ข้อความจากคู่สนทนา การเตือนด้วยตัวจับเวลา

การสร้างช่องทางในโค้ด Android

ช่องทางจะถูกสร้างครั้งเดียวเมื่อเริ่มแอปหรือเมื่อใช้งานครั้งแรก แนวทางปฏิบัติที่ดีที่สุดคือสร้างช่องทางทั้งหมดเมื่อเริ่มแอป ในเมธอด Application.onCreate การสร้างช่องทางที่มีอยู่แล้วซ้ำนั้นปลอดภัย — Android จะละเว้นการเรียกหากช่องทางมีอยู่แล้ว

kotlin
class App : Application() {

    override fun onCreate() {
        super.onCreate()
        createNotificationChannels()
    }

    private fun createNotificationChannels() {
        val messagesChannel = NotificationChannel(
            CHANNEL_MESSAGES,
            "ข้อความ",
            NotificationManager.IMPORTANCE_HIGH
        ).apply {
            description = "การแจ้งเตือนข้อความใหม่"
            enableVibration = true
            setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
        }

        val promoChannel = NotificationChannel(
            CHANNEL_PROMO,
            "โปรโมชั่นและข่าวสาร",
            NotificationManager.IMPORTANCE_LOW
        ).apply {
            description = "การแจ้งเตือนการตลาดและข้อเสนอพิเศษ"
            setShowBadge(false)
        }

        val manager = getSystemService(NotificationManager::class.java)
        manager.createNotificationChannel(messagesChannel)
        manager.createNotificationChannel(promoChannel)
    }

    companion object {
        const val CHANNEL_MESSAGES = "messages"
        const val CHANNEL_PROMO = "promo"
    }
}

เมื่อส่งการแจ้งเตือน ให้ระบุ ID ช่องทางผ่าน setChannelId (สำหรับ NotificationCompat) หรือในคอนสตรัคเตอร์ของ Notification.Builder หากช่องทางที่มี ID ที่ระบุไม่มีอยู่ — การแจ้งเตือนจะไม่แสดง แต่จะไม่มีข้อผิดพลาดเกิดขึ้น

การจัดการและแก้ไขช่องทาง

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

kotlin
val manager =
    getSystemService(NotificationManager::class.java)

// รับรายการช่องทางทั้งหมด
val channels = manager.getNotificationChannels()
channels.forEach { channel ->
    Log.d("Channels", "${channel.id}: ${channel.importance}")
}

// ดู importance ปัจจุบัน (ผู้ใช้อาจเปลี่ยนแปลง)
val channel = manager.getNotificationChannel(CHANNEL_MESSAGES)
if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
    // ผู้ใช้ปิดช่องทางแล้ว
    suggestEnablingChannel()
}

// ลบช่องทาง
manager.deleteNotificationChannel(CHANNEL_PROMO)

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

การย้ายเมื่อเปลี่ยน importance

หากจำเป็นต้องเปลี่ยนความสำคัญของช่องทางที่มีอยู่ ให้สร้างช่องทางใหม่ด้วย ID อื่น (เช่น "messages_v2") และเริ่มส่งการแจ้งเตือนไปยังช่องทางนั้น ช่องทางเก่าสามารถลบได้ผ่าน deleteNotificationChannel — การแจ้งเตือนทั้งหมดจะถูกลบออกจากประวัติ แจ้งให้ผู้ใช้ทราบเกี่ยวกับการย้ายผ่านอินเทอร์เฟซของแอปเพื่อไม่ให้สูญเสียการตั้งค่า

กลุ่มช่องทาง (NotificationChannelGroup)

NotificationChannelGroup รวมหลายช่องทางเป็นกลุ่มภาพเดียวในอินเทอร์เฟซการตั้งค่าของ Android กลุ่มช่วยให้ผู้ใช้ปรับทิศทางได้เมื่อแอปใช้ 5+ ช่องทาง: เช่น "สังคม", "ระบบ", "การตลาด"

กลุ่มถูกสร้างผ่าน createNotificationChannelGroup และส่งให้ช่องทางเมื่อสร้างผ่านเมธอด setGroup การลบกลุ่มจะลบช่องทางทั้งหมดด้วย แต่ละช่องทางสามารถเป็นสมาชิกของกลุ่มเดียวเท่านั้น

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

ตัวอย่างการสร้างกลุ่มช่องทาง

กลุ่มถูกสร้างผ่าน createNotificationChannelGroup ด้วย ID และชื่อที่ไม่ซ้ำกัน จากนั้นแต่ละช่องทางจะถูกผูกกับกลุ่มผ่านเมธอด setGroup ในการตั้งค่าระบบ กลุ่มจะแสดงเป็นส่วนที่มีหัวข้อ ซึ่งภายใต้มีช่องทางทั้งหมดของกลุ่มนี้ หากกลุ่มถูกลบ ช่องทางทั้งหมดจะถูกลบโดยอัตโนมัติโดยระบบโดยไม่สามารถกู้คืนได้

รูปแบบการออกแบบช่องทาง

การออกแบบช่องทางการแจ้งเตือนที่เหมาะสมส่งผลโดยตรงต่อประสบการณ์ผู้ใช้และการรักษาผู้ใช้ รูปแบบหลัก — สามระดับความสำคัญ: ช่องทางสำคัญ (IMPORTANCE_HIGH) สำหรับข้อความและการโทร มาตรฐาน (IMPORTANCE_DEFAULT) สำหรับการแจ้งเตือนทั่วไป และเงียบ (IMPORTANCE_LOW) สำหรับการตลาดและข่าวสาร การไล่ระดับนี้ให้ผู้ใช้มีตัวเลือกที่เข้าใจได้โดยไม่ท่วมท้น

รูปแบบที่สอง — ช่องทางตามโมดูลฟังก์ชัน แต่ละโมดูลหลักของแอป (แชท คำสั่งซื้อ ฟีด การตลาด) มีช่องทางของตัวเอง หากมีมากกว่า 5 โมดูล ให้รวมเป็น NotificationChannelGroup ในการตั้งค่าระบบ กลุ่มจะแสดงเป็นส่วนที่ซ่อนได้ — ทำให้การนำทางง่ายขึ้น

รูปแบบที่สาม — ช่องทางสำหรับนักพัฒนา สร้างช่องทางแยกต่างหากด้วย IMPORTANCE_MIN สำหรับการแจ้งเตือนดีบักและบริการ ผู้ใช้จะไม่เห็นในแถบ แต่ผู้พัฒนาสามารถวิเคราะห์บันทึกผ่าน adb ใน Production สามารถลบหรือซ่อนช่องทางนี้จากอินเทอร์เฟซผ่าน Intent ในการตั้งค่า

รูปแบบที่สี่ — การตอบกลับเกี่ยวกับช่องทาง แสดงให้ผู้ใช้เห็นในอินเทอร์เฟซว่าช่องทางใดทำงานอยู่และ importance ปัจจุบันคืออะไร บน Android 8+ สามารถรับสถานะช่องทางผ่าน getNotificationChannel และแนะนำให้ผู้ใช้เปลี่ยนการตั้งค่าหากช่องทางถูกปิด นี่สำคัญเป็นพิเศษสำหรับฟังก์ชันที่สำคัญของแอป

คำถามที่พบบ่อย

จะเกิดอะไรขึ้นหากไม่สร้างช่องทางบน Android 8+?

การแจ้งเตือน จะไม่แสดง ทั้งในแถบและในร่ม ระบบจะไม่สนใจการเรียก notify() อย่างเงียบๆ ข้อยกเว้น: เมื่อใช้ NotificationCompat ไลบรารีจะสร้างช่องทางเริ่มต้น แต่ importance ของมันจะเป็น DEFAULT เสมอ แนะนำให้สร้างช่องทางของคุณเองเสมอ

สามารถเปลี่ยนช่องทางหลังจากสร้างแล้วได้หรือไม่?

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

จะตรวจสอบได้อย่างไรว่าผู้ใช้ปิดช่องทางแล้ว?

ใช้ getNotificationChannel และตรวจสอบ importance: หากค่าเท่ากับ IMPORTANCE_NONE แสดงว่าช่องทางถูกปิดแล้ว นอกจากนี้ยังสามารถเปิดการตั้งค่าระบบของช่องทางผ่าน Intent: Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS พร้อมพารามิเตอร์ app_package และ channel_id

สามารถสร้างได้กี่ช่องทางในแอปเดียว?

ไม่มีข้อจำกัด — Android ไม่กำหนดขีดจำกัดจำนวนช่องทาง อย่างไรก็ตาม แนะนำไม่ให้สร้างมากกว่า 5–10 ช่องทางเพื่อไม่ให้ผู้ใช้เลือกมากเกินไป ขั้นต่ำที่เหมาะสมคือ 2–3 ช่องทาง: การแจ้งเตือนสำคัญ ปกติ และการตลาด

ช่องทางทำงานบน Android 7 และต่ำกว่าหรือไม่?

บน Android 7.1 (API 25) และต่ำกว่า ไม่รองรับช่องทาง คลาส NotificationChannel มีเฉพาะตั้งแต่ API 26 เป็นต้นไป สำหรับความเข้ากันได้ย้อนหลัง ใช้ NotificationCompat และครอบการสร้างช่องทางในเงื่อนไข if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)

สรุป

  • Notification Channel — กลไกการจัดกลุ่มการแจ้งเตือนของ Android 8+ ซึ่งจำเป็นสำหรับการแสดงผล
  • Importance — ระดับตั้งแต่ NONE ถึง HIGH กำหนดเสียง heads-up และการมองเห็นในแถบ
  • การจัดการ — ผู้ใช้สามารถเปลี่ยน importance และเสียงของช่องทางได้ทุกเมื่อ
  • การสร้าง — ช่องทางถูกสร้างผ่าน NotificationManager.createNotificationChannel เพียงครั้งเดียว
  • ความไม่เปลี่ยนแปรของ importance — นักพัฒนาไม่สามารถเพิ่มความสำคัญหลังจากสร้างช่องทางแล้ว
  • กลุ่ม — NotificationChannelGroup รวมช่องทางเพื่อการนำทางที่สะดวกในการตั้งค่า
  • ความเข้ากันได้ — บน Android 7- ใช้ NotificationCompat พร้อมตรวจสอบเวอร์ชัน SDK

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม