แอ็กชันและหมวดหมู่การแจ้งเตือน
เพิ่มแอ็กชันแบบโต้ตอบให้การแจ้งเตือน
แอ็กชันและหมวดหมู่การแจ้งเตือน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การลงทะเบียนรับการแจ้งเตือนแบบพุช
- การจัดการข้อมูลการแจ้งเตือน
- งานเบื้องหลังและการรีเฟรช
- แอ็กชันและหมวดหมู่การแจ้งเตือน