0Pricing
Swift Academy · บทเรียน

แอ็กชันและหมวดหมู่การแจ้งเตือน

เพิ่มแอ็กชันแบบโต้ตอบให้การแจ้งเตือน

แอ็กชันและหมวดหมู่การแจ้งเตือน เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

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

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

import UserNotifications
// Category = a set of actions
// Each delivered notification names its category
// so the system shows the right buttons

การกำหนดการกระทำ

UNNotificationAction มีตัวระบุ ซึ่งคุณจะใช้จับคู่ในภายหลัง มีชื่อเรื่องที่แปลได้สำหรับแสดงบนปุ่ม และมีตัวเลือกอย่าง .destructive หรือ .foreground ซึ่งจะเปิดแอป

import UserNotifications
let accept = UNNotificationAction(
    identifier: "ACCEPT",
    title: String(localized: "Accept"),
    options: [.foreground])
let decline = UNNotificationAction(
    identifier: "DECLINE",
    title: String(localized: "Decline"),
    options: [.destructive])

การจัดกลุ่มเป็นหมวดหมู่

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

import UserNotifications
let inviteCategory = UNNotificationCategory(
    identifier: "INVITE",
    actions: [accept, decline],
    intentIdentifiers: [],
    options: [])
UNUserNotificationCenter.current()
    .setNotificationCategories([inviteCategory])

การกำกับหมวดหมู่ให้การแจ้งเตือน

เพื่อให้ปุ่มปรากฏ เนื้อหาของการแจ้งเตือนต้องตั้งค่า categoryIdentifier เป็นหมวดหมู่ที่ register ไว้ สำหรับการแจ้งเตือนระยะไกล เซิร์ฟเวอร์จะส่ง "category": "INVITE" ไว้ภายในพจนานุกรม aps

import UserNotifications
let content = UNMutableNotificationContent()
content.title = String(localized: "New invite")
content.body = String(localized: "Ada invited you")
content.categoryIdentifier = "INVITE"

การจัดการการกระทำที่เลือก

เมื่อผู้ใช้แตะปุ่ม เมธอด didReceive response ของผู้รับมอบหมายจะทำงาน โดยตั้งค่า response.actionIdentifier เป็นรหัสการกระทำของคุณ ให้ตรวจสอบค่านี้เพื่อทำงานที่ถูกต้อง

import UserNotifications
func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    didReceive response: UNNotificationResponse
) async {
    switch response.actionIdentifier {
    case "ACCEPT":  print("accepted")
    case "DECLINE": print("declined")
    default:        break
    }
}

ตัวระบุเริ่มต้นและยกเลิกการแสดง

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

import UserNotifications
func route(_ id: String) {
    switch id {
    case UNNotificationDefaultActionIdentifier:
        print("opened the app")
    case UNNotificationDismissActionIdentifier:
        print("dismissed")
    default:
        print("custom action", id)
    }
}

การกระทำที่รับข้อความ

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

import UserNotifications
let reply = UNTextInputNotificationAction(
    identifier: "REPLY",
    title: String(localized: "Reply"),
    options: [],
    textInputButtonTitle: String(localized: "Send"),
    textInputPlaceholder: String(localized: "Message"))

การอ่านข้อความที่พิมพ์

สำหรับการกระทำที่รับข้อความ response จะเป็น UNTextInputNotificationResponse ให้แปลงเป็นประเภทนี้เพื่ออ่าน userText ซึ่งเป็นสตริงที่ผู้ใช้พิมพ์

import UserNotifications
func handle(_ response: UNNotificationResponse) {
    if let textResponse = response
        as? UNTextInputNotificationResponse {
        let message = textResponse.userText
        print("reply:", message)
    }
}

ตัวเลือกของหมวดหมู่

ตัวเลือกของหมวดหมู่ช่วยปรับพฤติกรรมให้ละเอียดขึ้น: .customDismissAction จะส่งเหตุการณ์การยกเลิกไปยังผู้รับมอบหมายของคุณ .hiddenPreviewsShowTitle จะแสดงชื่อเรื่องแม้ซ่อนตัวอย่างบนหน้าจอล็อก และ .allowInCarPlay จะอนุญาตให้แสดงใน CarPlay

import UserNotifications
let category = UNNotificationCategory(
    identifier: "MESSAGE",
    actions: [reply],
    intentIdentifiers: [],
    options: [.customDismissAction,
              .hiddenPreviewsShowTitle])
_ = category

การกระทำเบื้องหลังและเบื้องหน้า

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

import UserNotifications
let snooze = UNNotificationAction(
    identifier: "SNOOZE",
    title: String(localized: "Snooze"),
    options: []) // background, no app launch
let open = UNNotificationAction(
    identifier: "OPEN",
    title: String(localized: "Open"),
    options: [.foreground]) // launches app
_ = (snooze, open)

ลำดับการตอบกลับที่สมบูรณ์

นำการกระทำที่รับข้อความ หมวดหมู่ และตัวจัดการที่แยกการตอบ reply ที่พิมพ์จากการเปิดแบบปกติมารวมกัน รูปแบบนี้เป็นพื้นฐานของการตอบข้อความในบรรทัด

import UserNotifications
func handle(_ response: UNNotificationResponse) async {
    switch response.actionIdentifier {
    case "REPLY":
        let text = (response as?
            UNTextInputNotificationResponse)?.userText ?? ""
        print("send reply:", text)
    case UNNotificationDefaultActionIdentifier:
        print("open conversation")
    default:
        break
    }
}

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทบทวนว่าระบบทราบได้อย่างไรว่าควรแสดงปุ่มใด

สรุปทบทวน

คุณได้เรียนรู้การแจ้งเตือนแบบโต้ตอบแล้ว:

  • สร้าง UNNotificationAction รวมถึง UNTextInputNotificationAction แล้วจัดกลุ่มเป็น UNNotificationCategory
  • Register หมวดหมู่เมื่อเปิดแอป ตั้งค่า categoryIdentifier ในเนื้อหา หรือ category ในการแจ้งเตือนแบบพุช เพื่อแสดงปุ่ม
  • จัดการ response.actionIdentifier รวมถึงตัวระบุเริ่มต้นและยกเลิกการแสดง และอ่าน userText สำหรับการตอบกลับ
  • ไม่ใส่ .foreground สำหรับการกระทำเบื้องหลัง เช่น การเลื่อนการเตือน

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

บทเรียน “แอ็กชันและหมวดหมู่การแจ้งเตือน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แอ็กชันและหมวดหมู่การแจ้งเตือน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แอ็กชันและหมวดหมู่การแจ้งเตือน”

เพิ่มแอ็กชันแบบโต้ตอบให้การแจ้งเตือน คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “แอ็กชันและหมวดหมู่การแจ้งเตือน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การลงทะเบียนรับการแจ้งเตือนแบบพุช
  2. การจัดการข้อมูลการแจ้งเตือน
  3. งานเบื้องหลังและการรีเฟรช
  4. แอ็กชันและหมวดหมู่การแจ้งเตือน
← กลับไปที่ Swift Academy