Notification Permission: คืออะไร ประเภทการแจ้งเตือนและหลักการทำงาน

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

Notification Permission คือสิทธิ์ที่จำเป็นสำหรับแอปในการส่งการแจ้งเตือนแบบพุชและการแจ้งเตือนภายในเครื่องไปยังผู้ใช้ ตั้งแต่ Android 13 และ iOS 12 เป็นต้นไป แอปจำเป็นต้องขอสิทธิ์นี้ในขณะรันไทม์ผ่านไดอะล็อกของระบบ ตามข้อมูลจาก Android Developers, 2024 หากไม่ได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้ แอปจะไม่สามารถแสดงการแจ้งเตือนบนอุปกรณ์ที่ใช้ Android 13 ขึ้นไปได้

ประเด็นสำคัญ

  • Notification Permission คือสิทธิ์ในขณะรันไทม์สำหรับการส่งการแจ้งเตือน ซึ่งบังคับใช้บน Android 13+ และ iOS 12+
  • Android 13 เปิดตัวสิทธิ์ POST_NOTIFICATIONS ซึ่งต้องขอในขณะรันไทม์ผ่าน Activity Result API
  • iOS ใช้ UNUserNotificationCenter.requestAuthorization เพื่อขอเข้าถึงการแจ้งเตือนภายในเครื่องและการแจ้งเตือนแบบพุช
  • การปฏิเสธสิทธิ์ ทำให้แอปไม่สามารถแสดงการแจ้งเตือนทั้งภายในเครื่องและแบบพุชได้
  • ไม่สามารถขอซ้ำ หลังจากการปฏิเสธครั้งแรก — ต้องนำทางผู้ใช้ไปยังการตั้งค่าระบบ

Notification Permission คืออะไร?

Notification Permission คือสิทธิ์ของระบบที่ควบคุมความสามารถของแอปในการส่งการแจ้งเตือนไปยังผู้ใช้ ก่อน Android 13 แอปทั้งหมดสามารถแสดงการแจ้งเตือนได้โดยไม่ต้องขอ — เพียงแค่ประกาศสิทธิ์ในไฟล์ Manifest ก็เพียงพอ อย่างไรก็ตาม ด้วยการเพิ่มขึ้นของสแปมและการแจ้งเตือนที่รบกวน Google ได้นำการขอแบบบังคับในขณะรันไทม์มาใช้ ซึ่งคล้ายกับ iOS

บน iOS สิทธิ์การแจ้งเตือนเป็นสิ่งบังคับตั้งแต่ iOS 8 และเริ่มจาก iOS 12 ได้มีการแจ้งเตือนชั่วคราว (Provisional Notifications) — การแจ้งเตือนแบบเงียบที่ส่งโดยไม่มีเสียงและแสดงในศูนย์การแจ้งเตือนโดยไม่ต้องขออย่างชัดแจ้ง การแจ้งเตือนชั่วคราว ช่วยให้นักพัฒนาสามารถแสดงคุณค่าของการแจ้งเตือนให้ผู้ใช้เห็นก่อนที่จะขอสิทธิ์เต็มรูปแบบ

ตามข้อมูลจาก Localytics (2024) ผู้ใช้ iOS 61% และผู้ใช้ Android 55% ยอมรับการรับการแจ้งเตือนแบบพุชหลังจากมีการขอ อัตราการอนุมัติขึ้นอยู่กับบริบทของการขอโดยตรง: แอปที่ขอสิทธิ์หลังจากปฏิสัมพันธ์ที่มีคุณค่าครั้งแรกได้รับการอนุมัติมากกว่าแอปที่ขอในการเปิดครั้งแรกถึง 40%

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

วิวัฒนาการของสิทธิ์การแจ้งเตือน แสดงให้เห็นว่าแพลตฟอร์มได้จำกัดการเข้าถึงของแอปไปยังช่องทางการสื่อสารนี้อย่างค่อยเป็นค่อยไปอย่างไร การทำความเข้าใจวิวัฒนาการนี้ช่วยให้นักพัฒนาจัดการกับเวอร์ชันระบบปฏิบัติการต่างๆ ได้อย่างถูกต้อง

Android: จากการเข้าถึงอย่างอิสระสู่การควบคุมที่เข้มงวด

ก่อน Android 13 (2022) แอปใด ๆ ก็สามารถแสดงการแจ้งเตือนได้โดยไม่ต้องได้รับความยินยอมจากผู้ใช้ Android 8.0 (2017) เปิดตัวช่องทางการแจ้งเตือน Android 12 (2021) เพิ่มการบล็อกอัตโนมัติสำหรับการแจ้งเตือนที่รบกวน และในที่สุด Android 13 ก็ทำให้การขอ POST_NOTIFICATIONS ในขณะรันไทม์เป็นสิ่งบังคับ สำหรับแอปที่มี targetSdkVersion ต่ำกว่า 33 ระบบจะให้สิทธิ์โดยอัตโนมัติ แต่ Google Play กำหนดให้อัปเดต targetSdkVersion เป็น 33+ ตั้งแต่เดือนสิงหาคม 2023

iOS: การเสริมสร้างการควบคุมอย่างค่อยเป็นค่อยไป

iOS 8 (2014) เปิดตัวการขอสิทธิ์แบบบังคับผ่าน UIUserNotificationSettings iOS 10 (2016) นำเสนอ UNUserNotificationCenter ที่รองรับการแจ้งเตือนแบบสมบูรณ์ iOS 12 (2018) เพิ่มการแจ้งเตือนชั่วคราวและการแจ้งเตือนแบบกลุ่ม iOS 15 (2021) เปิดตัวโหมดโฟกัส ซึ่งสามารถบล็อกการแจ้งเตือนได้โดยไม่ขึ้นกับสิทธิ์ของแอป App Tracking Transparency (iOS 14.5) ไม่เกี่ยวข้องกับการแจ้งเตือน แต่ก็ส่งผลต่อวัฒนธรรมโดยรวมของการขอสิทธิ์เช่นกัน

สถานะปัจจุบัน

ปัจจุบัน ทั้งสองแพลตฟอร์มต้องการการขอ Notification Permission ในขณะรันไทม์ นักพัฒนาไม่สามารถพึ่งพาการเปิดใช้งานการแจ้งเตือนอัตโนมัติได้อีกต่อไป ผู้ใช้ควบคุมได้อย่างสมบูรณ์ว่าแอปใดสามารถแจ้งเตือนพวกเขาได้ ช่องทางการแจ้งเตือน บน Android และหมวดหมู่การแจ้งเตือนบน iOS ช่วยให้ผู้ใช้ปรับแต่งประเภทของการแจ้งเตือนที่ได้รับได้อย่างละเอียด

Notification Permission บน Android

Notification Permission บน Android เปิดใช้งานผ่านสิทธิ์ POST_NOTIFICATIONS ที่ประกาศใน Manifest ตามด้วยการขอในขณะรันไทม์สำหรับ Android 13+

การประกาศใน Manifest

สำหรับ Android 13+ จำเป็นต้องประกาศสิทธิ์ POST_NOTIFICATIONS ใน AndroidManifest.xml สำหรับความเข้ากันได้ย้อนหลังกับ Android 12 และต่ำกว่า ระบบจะให้สิทธิ์โดยอัตโนมัติ — ไม่จำเป็นต้องดำเนินการเพิ่มเติม

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

การขอในขณะรันไทม์ด้วย Kotlin

การขอสิทธิ์ POST_NOTIFICATIONS ดำเนินการผ่าน Activity Result API สิ่งสำคัญคือต้องตรวจสอบเวอร์ชัน SDK: บน Android 12 และต่ำกว่า ไม่จำเป็นต้องขอ — ถือว่าสิทธิ์ได้รับการให้โดยอัตโนมัติ

kotlin
private val notificationPermissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        createNotificationChannel()
        showPushNotification()
    } else {
        logPermissionDenied()
    }
}

fun requestNotificationAccess() {
    if (Build.version.SDK_INT <= Build.VERSION_CODES.S_V2) {
        // Android 12 และต่ำกว่า — ให้สิทธิ์โดยอัตโนมัติ
        showNotification()
        return
    }
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
        showNotification()
    } else {
        notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
    }
}

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

บน Android 8.0+ แอปต้องสร้างช่องทางการแจ้งเตือนผ่าน NotificationChannel ก่อนส่งการแจ้งเตือนครั้งแรก ช่องมีระดับความสำคัญตั้งแต่ IMPORTANCE_NONE ถึง IMPORTANCE_HIGH ซึ่งกำหนดว่าการแจ้งเตือนจะแสดงพร้อมเสียงและเป็นแบนเนอร์หรือไม่ หากผู้ใช้ปิดการแจ้งเตือนสำหรับแอปแล้ว ช่องใหม่จะไม่มีผลจนกว่าจะเปิดใช้งานอีกครั้งในการตั้งค่า ขอแนะนำให้สร้างช่องแยกต่างหากสำหรับการแจ้งเตือนประเภทต่างๆ: ข้อความ โฆษณา เหตุการณ์ของระบบ

kotlin
private fun createNotificationChannel() {
    val channel = NotificationChannel(
        CHANNEL_ID_MESSAGES,
        "ข้อความ",
        NotificationManager.IMPORTANCE_HIGH
    ).apply {
        description = "การแจ้งเตือนข้อความใหม่"
        enableVibration = true
    }
    val manager = getSystemService(NotificationManager::class.java)
    manager.createNotificationChannel(channel)
}

Notification Permission บน iOS

Notification Permission บน iOS ขอผ่าน UNUserNotificationCenter Apple แนะนำวิธีสองขั้นตอน: ขั้นแรกขอการแจ้งเตือนชั่วคราว จากนั้นหลังจากแสดงคุณค่าแล้ว ขอสิทธิ์เต็มรูปแบบ

การขอด้วย Swift พร้อมตัวเลือกชั่วคราว

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

swift
import UserNotifications

func requestNotificationPermission() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
        if let error = error {
            print("Notification error: \(error.localizedDescription)")
            return
        }
        if granted {
            registerForRemoteNotifications()
        } else {
            handleDeniedPermission()
        }
    }
}

func requestProvisionalOnly() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.provisional, .alert, .badge, .sound]) { granted, error in
        // ชั่วคราว — ผู้ใช้ไม่เห็นไดอะล็อก
        // การแจ้งเตือนมาถึงอย่างเงียบเชียบในศูนย์การแจ้งเตือน
        registerForRemoteNotifications()
    }
}

การตรวจสอบสถานะและการตั้งค่าระบบ

สถานะ Notification Permission ปัจจุบันบน iOS สามารถรับได้ผ่าน UNUserNotificationCenter.current().getNotificationSettings สถานะ .authorized, .denied, .provisional หรือ .notDetermined ช่วยให้แอปเลือกพฤติกรรมที่ถูกต้อง หลังจากการปฏิเสธครั้งแรก ไดอะล็อกของระบบจะไม่แสดงอีก — ต้องนำทางผู้ใช้ไปยังการตั้งค่าผ่าน UIApplication.openSettingsURLString Apple ยังแนะนำให้จัดการสถานะ .ephemeral (iOS 17+) ซึ่งให้การแจ้งเตือนชั่วคราวสำหรับสถานการณ์เฉพาะ

แนวทางปฏิบัติที่ดีที่สุดสำหรับการขอการแจ้งเตือน

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

อย่าขอในการเปิดครั้งแรก

รูปแบบที่ไม่ถูกต้องที่พบบ่อยที่สุดคือการขอ Notification Permission ในการเปิดแอปครั้งแรก ผู้ใช้ยังไม่เข้าใจคุณค่าของแอปและมีแนวโน้มสูงที่จะปฏิเสธ ช่วงเวลาที่เหมาะสมที่สุดคือหลังจากที่ผู้ใช้ดำเนินการที่มีคุณค่าครั้งแรก: สั่งซื้อ ส่งข้อความ สมัครรับอัปเดต การแจ้งหลังสร้างคุณค่า ช่วยเพิ่มอัตราการอนุมัติเป็น 65-75%

ใช้หน้าจอก่อนขอสิทธิ์

ก่อนไดอะล็อกของระบบ ให้แสดงหน้าจอของคุณเองพร้อมตัวอย่างการแจ้งเตือนที่ผู้ใช้จะได้รับ แสดงแบบจำลองของการแจ้งเตือนในอนาคตพร้อมข้อความและไอคอน หากผู้ใช้เห็นว่าการแจ้งเตือนจะมีประโยชน์และไม่รบกวน พวกเขามีแนวโน้มที่จะยินยอมมากขึ้น ตัวอย่างการแจ้งเตือน บนหน้าจอก่อนขอสิทธิ์เป็นเทคนิคที่มีประสิทธิภาพซึ่งเพิ่มอัตราการแปลงเป็น 35-50%

ใช้การแจ้งเตือนชั่วคราวบน iOS

การขอการแจ้งเตือนชั่วคราวบน iOS อย่างจริงจังช่วยให้ส่งการแจ้งเตือนได้โดยไม่ต้องได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้ หากผู้ใช้เห็นคุณค่าในการแจ้งเตือนเหล่านี้ พวกเขาสามารถเปิดการแจ้งเตือนเต็มรูปแบบผ่านเมนูบริบทของการแจ้งเตือน Apple แนะนำ วิธีการนี้สำหรับแอปข่าว แอปสภาพอากาศ และบริการอื่น ๆ ที่การแจ้งเตือนเป็นข้อมูล ไม่ใช่ธุรกรรม ตามข้อมูลจาก Apple WWDC 2024 วิธีการนี้เพิ่มอัตราการอนุมัติเต็มรูปแบบ 20-30%

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

จะทำอย่างไรหากผู้ใช้ปฏิเสธ Notification Permission?

หลังจากการปฏิเสธ ไดอะล็อกของระบบจะไม่แสดงอีก วิธีเดียวในการเปิดการแจ้งเตือนคือนำทางผู้ใช้ไปยังการตั้งค่าระบบผ่าน Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) บน Android หรือ UIApplication.openSettingsURLString บน iOS แสดงหน้าจอพร้อมคำแนะนำและปุ่มเพื่อดำเนินการต่อ

Notification Permission ทำงานอย่างไรบน Android 12 และต่ำกว่า?

บน Android 12 และต่ำกว่า ไม่จำเป็นต้องใช้ Notification Permission — แอปทั้งหมดสามารถส่งการแจ้งเตือนได้โดยไม่ต้องขอ อย่างไรก็ตาม ผู้ใช้สามารถปิดการแจ้งเตือนได้ตลอดเวลาผ่านการตั้งค่าระบบ ตั้งแต่ Android 13 เป็นต้นไป การขอในขณะรันไทม์เป็นสิ่งบังคับสำหรับ targetSdkVersion 33+

ช่องทางการแจ้งเตือนบน Android คืออะไร?

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

สามารถส่งการแจ้งเตือนโดยไม่มี Notification Permission ได้หรือไม่?

บน Android 13+ หากไม่มี POST_NOTIFICATIONS การเรียก NotificationManager.notify ใด ๆ จะถูกละเว้นโดยระบบ บน iOS หากไม่มีสิทธิ์ UNUserNotificationCenter การแจ้งเตือนจะไม่ถูกส่ง ข้อยกเว้น: Provisional บน iOS (ไม่มีเสียง เฉพาะในศูนย์การแจ้งเตือน) และ Android 12- (ไม่ต้องการสิทธิ์)

จะตรวจสอบได้อย่างไรว่าการแจ้งเตือนเปิดใช้งานสำหรับแอปหรือไม่?

บน Android ให้ใช้ NotificationManagerCompat.areNotificationsEnabled() บน iOS ให้เรียก UNUserNotificationCenter.current().getNotificationSettings และตรวจสอบคุณสมบัติ authorizationStatus สำหรับ Android ให้ตรวจสอบความสำคัญของช่องเพิ่มเติม: NotificationChannel.getImportance() ต้องไม่เป็น IMPORTANCE_NONE

สรุป

  • Notification Permission คือสิทธิ์ในขณะรันไทม์ที่บังคับสำหรับการส่งการแจ้งเตือนบน Android 13+ และ iOS 12+
  • Android 13 เปิดตัว POST_NOTIFICATIONS พร้อมการขอในขณะรันไทม์; สำหรับ Android 12 และต่ำกว่า สิทธิ์เป็นแบบอัตโนมัติ
  • iOS ใช้ UNUserNotificationCenter ที่รองรับการแจ้งเตือนชั่วคราวสำหรับการส่งแบบเงียบโดยไม่ต้องได้รับความยินยอม
  • การแจ้งหลังสร้างคุณค่า — การขอหลังจากการกระทำที่มีคุณค่าครั้งแรกของผู้ใช้เพิ่มอัตราการอนุมัติเป็น 75%
  • หน้าจอก่อนขอสิทธิ์ พร้อมตัวอย่างการแจ้งเตือนเพิ่มอัตราการแปลง 35-50% ตามการวิจัยในอุตสาหกรรม
  • การแจ้งเตือนชั่วคราว บน iOS ช่วยให้แสดงคุณค่าของการแจ้งเตือนก่อนขอสิทธิ์เต็มรูปแบบ
  • ช่องทางการแจ้งเตือน บน Android ให้ผู้ใช้ควบคุมประเภทของการแจ้งเตือนที่ได้รับได้อย่างละเอียด

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

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

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

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