การลงทะเบียนรับการแจ้งเตือนแบบพุช
ขอสิทธิ์และรับโทเค็นของอุปกรณ์
การลงทะเบียนรับการแจ้งเตือนแบบพุช เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
การทำงานของพุชตั้งแต่ต้นจนจบ
การแจ้งเตือนแบบพุชเดินทางจากเซิร์ฟเวอร์ของคุณ ผ่านบริการแจ้งเตือนแบบพุชของ Apple (APNs) ไปยังอุปกรณ์ที่ระบุ อุปกรณ์จะยืนยันตัวตนด้วย โทเค็นอุปกรณ์ ที่ APNs ออกให้ ก่อนดำเนินการทั้งหมดนี้ ผู้ใช้ต้องอนุญาต และแอปต้องลงทะเบียนก่อน
// Flow: App registers -> APNs returns device token ->
// you send token to your server -> server pushes via APNsศูนย์การแจ้งเตือน
UNUserNotificationCenter เป็นออบเจ็กต์เดียวที่ใช้จัดการทุกอย่างทั้งการแจ้งเตือนภายในเครื่องและจากระยะไกล เช่น การขออนุญาต การตั้งค่าผู้รับมอบหมาย การกำหนดเวลาการแจ้งเตือนภายในเครื่อง และการอ่านการตั้งค่า ให้รับอินสแตนซ์ที่ใช้ร่วมกัน
import UserNotifications
let center = UNUserNotificationCenter.current()
// All notification configuration goes through centerการขออนุญาต
คุณต้องขอผู้ใช้ก่อนแสดงการแจ้งเตือน requestAuthorization(options:) จะแสดงข้อความแจ้งเตือนของระบบและส่งกลับว่าผู้ใช้ยอมรับหรือไม่ ให้ขอเฉพาะตัวเลือกที่จำเป็น ได้แก่ .alert, .sound และ .badge
import UserNotifications
func requestAuth() async throws -> Bool {
let center = UNUserNotificationCenter.current()
return try await center.requestAuthorization(
options: [.alert, .sound, .badge])
}การลงทะเบียนกับ APNs
การอนุญาตแยกจากการลงทะเบียน หลังจากได้รับอนุญาตหรือดำเนินการพร้อมกัน ให้เรียก registerForRemoteNotifications() บนตัวดำเนินการหลัก การเรียกนี้จะขอโทเค็นอุปกรณ์จาก APNs และต้องทำงานบนเธรดหลัก
import UIKit
@MainActor
func registerForPush() {
UIApplication.shared.registerForRemoteNotifications()
}การรับโทเค็นอุปกรณ์
เมื่อสำเร็จ เมธอด didRegisterForRemoteNotificationsWithDeviceToken ของตัวมอบหมายแอปจะทำงานพร้อมโทเค็น Data คุณจะแปลงโทเค็นนี้เป็นสตริงเลขฐานสิบหกแล้วส่งไปยังเซิร์ฟเวอร์ ซึ่งจะใช้โทเค็นเพื่อระบุอุปกรณ์นี้
import UIKit
func application(
_ app: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data) {
let token = deviceToken.map {
String(format: "%02x", $0) }.joined()
print("APNs token:", token)
// send token to your backend
}การจัดการเมื่อลงทะเบียนไม่สำเร็จ
การลงทะเบียนอาจไม่สำเร็จได้ เช่น ไม่มีเครือข่าย ไม่มีสิทธิ์ APNs หรือทำงานในสภาพแวดล้อมที่ไม่รองรับ ให้ใช้งาน didFailToRegisterForRemoteNotificationsWithError เพื่อบันทึกข้อผิดพลาดและกู้คืนอย่างเหมาะสม แทนที่จะทำให้แอปล่ม
import UIKit
func application(
_ app: UIApplication,
didFailToRegisterForRemoteNotificationsWithError
error: Error) {
print("Push registration failed:", error)
}โทเค็นอาจเปลี่ยนแปลงได้
โทเค็นอุปกรณ์ไม่ใช่ค่าถาวร โทเค็นจะเปลี่ยนเมื่อผู้ใช้กู้คืนข้อมูลจากข้อมูลสำรอง ติดตั้งแอปใหม่ หรือย้ายไปยังอุปกรณ์เครื่องใหม่ ให้ลงทะเบียนทุกครั้งที่เปิดแอปและอัปโหลดโทเค็นล่าสุดเสมอ โดยแทนที่โทเค็นเก่าบนเซิร์ฟเวอร์
// Best practice: register on each launch,
// always upload the freshly received token,
// never cache a token as permanent.
let rule = "re-register every launch"
_ = ruleการตรวจสอบการตั้งค่าปัจจุบัน
ผู้ใช้อาจยกเลิกการอนุญาตภายหลังในการตั้งค่า ก่อนพึ่งพาการแจ้งเตือน ให้เรียกใช้ getNotificationSettings เพื่ออ่านสถานะการอนุญาตปัจจุบันและตรวจสอบว่าฟีเจอร์ใดได้รับอนุญาต
import UserNotifications
func currentStatus() async -> UNAuthorizationStatus {
let settings = await UNUserNotificationCenter
.current().notificationSettings()
return settings.authorizationStatus
}การอนุญาตชั่วคราว
ตัวเลือก .provisional ช่วยให้การแจ้งเตือนมาถึงศูนย์การแจ้งเตือนแบบเงียบ ๆ โดยไม่แสดงข้อความขออนุญาตตั้งแต่แรก เหมาะสำหรับให้ผู้ใช้ลองใช้การแจ้งเตือนก่อนตัดสินใจ พร้อมตัวเลือกว่าจะเก็บไว้หรือปิดการแจ้งเตือน
import UserNotifications
func requestQuiet() async throws -> Bool {
try await UNUserNotificationCenter.current()
.requestAuthorization(
options: [.alert, .sound, .provisional])
}ความสามารถที่จำเป็น
ทั้งหมดนี้จะไม่ทำงานหากไม่ได้เปิดความสามารถ การแจ้งเตือนแบบพุช ในเป้าหมาย Xcode ซึ่งจะเพิ่มสิทธิ์ aps-environment หากต้องการส่งข้อมูลเบื้องหลัง คุณต้องเปิดความสามารถโหมดเบื้องหลังพร้อมการแจ้งเตือนระยะไกลด้วย
// Xcode target > Signing & Capabilities:
// + Push Notifications
// + Background Modes > Remote notifications
let caps = "entitlements required"
_ = capsการรวมขั้นตอนการลงทะเบียน
ลำดับการเริ่มต้นที่สะอาดคือ ขออนุญาต และหากได้รับอนุญาต ให้ลงทะเบียนรับการแจ้งเตือนระยะไกลบนตัวดำเนินการหลัก จากนั้นโทเค็นจะมาถึงในเมธอดเรียกกลับของตัวมอบหมายเพื่ออัปโหลด
import UIKit
import UserNotifications
func setupPush() async {
let center = UNUserNotificationCenter.current()
let granted = (try? await center.requestAuthorization(
options: [.alert, .sound, .badge])) ?? false
if granted {
await MainActor.run {
UIApplication.shared.registerForRemoteNotifications()
}
}
}ตรวจสอบอย่างรวดเร็ว
ทบทวนความสัมพันธ์ระหว่างการอนุญาตและการลงทะเบียน
สรุป
คุณได้เรียนรู้วิธีสมัครรับการแจ้งเตือนแบบพุชแล้ว:
- ใช้
UNUserNotificationCenterเพื่อขอสิทธิ์.alert/.sound/.badge - การขอสิทธิ์และการ register เป็นคนละขั้นตอนกัน โดยเรียก
registerForRemoteNotifications()บน main actor - แปลงโทเค็น
Dataเป็นเลขฐานสิบหกแล้วอัปโหลด โดย register ใหม่ทุกครั้งที่เปิดแอป เพราะโทเค็นอาจเปลี่ยนได้ - เปิดใช้ความสามารถ Push Notifications และพิจารณาขอสิทธิ์แบบ
.provisional
เรียนรู้ Swift ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 122
- บทเรียน
- 409
คำถามที่พบบ่อย
บทเรียน “การลงทะเบียนรับการแจ้งเตือนแบบพุช” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การลงทะเบียนรับการแจ้งเตือนแบบพุช” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การลงทะเบียนรับการแจ้งเตือนแบบพุช”
ขอสิทธิ์และรับโทเค็นของอุปกรณ์ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การลงทะเบียนรับการแจ้งเตือนแบบพุช” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การลงทะเบียนรับการแจ้งเตือนแบบพุช
- การจัดการข้อมูลการแจ้งเตือน
- งานเบื้องหลังและการรีเฟรช
- แอ็กชันและหมวดหมู่การแจ้งเตือน