ข้อมูลเบื้องต้นเกี่ยวกับ Push สำหรับ iOS
Push primer คือกล่องโต้ตอบการเลือกรับ (soft opt-in) ที่คุณแสดง ก่อน ที่ระบบ iOS จะแสดงหน้าจอขออนุญาตส่ง push iOS จะแสดงหน้าจอขออนุญาตของระบบเพียงครั้งเดียวต่อการติดตั้ง — หากผู้ใช้แตะ ไม่อนุญาต (Don’t Allow) การส่ง push จะถูกปิดใช้งานจนกว่าผู้ใช้จะเปิดใช้งานอีกครั้งในการตั้งค่า Primer ช่วยให้คุณสามารถอธิบายคุณค่าของการรับการแจ้งเตือนก่อน และถามในเวลาที่เหมาะสม ดังนั้นคุณจึงใช้หน้าจอขออนุญาตของระบบที่มีโอกาสเพียงครั้งเดียวกับผู้ใช้ที่ตอบตกลงแล้ว
พร้อมใช้งานตั้งแต่เวอร์ชัน 7.1.1 Primer เป็นส่วนหนึ่งของ PushwooshFramework ไม่จำเป็นต้องใช้โมดูลเพิ่มเติม

วิธีการทำงาน
Anchor link toPrimer สามารถรับรู้สถานะได้อย่างสมบูรณ์ โดยจะอ่านสถานะการอนุญาตการแจ้งเตือนปัจจุบันและตัดสินใจว่าจะทำอะไร ดังนั้นจึงปลอดภัยที่จะเรียกใช้งานทุกครั้งที่เปิดแอป:
- ยังไม่ได้ตัดสินใจ (Not determined) — แสดง primer; เมื่อผู้ใช้ยอมรับ จะเป็นการเรียกหน้าจอขออนุญาตของระบบ
- ได้รับอนุญาตแล้วหรือชั่วคราว (Authorized or provisional) — จะไม่แสดง primer (ไม่มีอะไรแสดงขึ้นมา)
- ปฏิเสธแล้ว (Denied) — แสดง primer; เมื่อผู้ใช้ยอมรับ จะนำผู้ใช้ไปยังหน้าการตั้งค่าการแจ้งเตือนของแอป (เมื่อเปิดใช้งาน
fallbackToSettings)
คุณเป็นผู้ตัดสินใจว่า เมื่อใด ที่จะเรียกใช้ primer (ตัวอย่างเช่น หลังจากขั้นตอนการเริ่มต้นใช้งาน (onboarding) หรือหลังจากการกระทำที่สำคัญ) SDK ไม่ได้กำหนดเวลาใดๆ ด้วยตัวเอง ยกเว้นการจำกัดความถี่ด้วย minInterval ที่เป็นตัวเลือกเสริมซึ่งจะอธิบายด้านล่าง
การใช้งานพื้นฐาน
Anchor link toกำหนดค่า primer ด้วย fluent builder และเรียกใช้ present การตั้งค่าขั้นต่ำต้องการชื่อเรื่อง (title), ข้อความ (message) และชื่อปุ่มสองปุ่ม
import PushwooshFramework
Pushwoosh.configure.pushPrimer .title("Stay in the loop") .message("Get notified about deals and order updates first") .acceptButton("Enable notifications") .declineButton("Not now") .present()สไตล์และตำแหน่ง
Anchor link toใช้ style เพื่อเลือกระหว่างการแจ้งเตือนของระบบ (system alert) และชีตที่กำหนดเอง (custom sheet) และใช้ position เพื่อวางตำแหน่งชีตที่กำหนดเอง แต่ละตำแหน่งมีการออกแบบเริ่มต้นของตัวเอง
| ค่า | คำอธิบาย |
|---|---|
.alert | UIAlertController ของระบบ จะไม่สนใจค่า position |
.sheet + .bottom | ชีตด้านล่างที่เลื่อนขึ้นมา พร้อมแถบสำหรับลากและปุ่มเต็มความกว้าง (ค่าเริ่มต้น) |
.sheet + .top | แบนเนอร์ขนาดกะทัดรัดที่เลื่อนลงมาจากด้านบน เหมือนกับการแจ้งเตือน |
.sheet + .center | กล่องโต้ตอบตรงกลางที่ขยายขนาดและค่อยๆ ปรากฏขึ้น |
Pushwoosh.configure.pushPrimer .style(.sheet) .position(.top) .title("Stay in the loop") .message("Get notified about deals and order updates first") .acceptButton("Enable notifications") .declineButton("Not now") .present()
การปรับแต่ง
Anchor link toการตั้งค่าการแสดงผลทั้งหมดเป็นทางเลือก — ละเว้นได้เพื่อใช้ค่าเริ่มต้นของระบบที่ปรับตามโหมดสว่างและมืด
Pushwoosh.configure.pushPrimer .style(.sheet) .position(.center) .title("Stay in the loop") .message("Get notified about deals and order updates first") .acceptButton("Enable notifications") .declineButton("Not now") .image(UIImage(named: "PrimerHero")) // รูปภาพในเครื่อง หรือ .imageURL("https://…") .backgroundColor(.systemBackground) .titleColor(.label) .messageColor(.secondaryLabel) .acceptButtonColor(.systemBlue) .acceptButtonTextColor(.white) .declineButtonColor(.clear) .declineButtonTextColor(.secondaryLabel) .cornerRadius(24) .buttonCornerRadius(14) .buttonBorderColor(.separator) .present()ข้อมูลอ้างอิงการปรับแต่ง:
| ตัวตั้งค่า | คำอธิบาย |
|---|---|
image / imageURL | UIImage ในเครื่องหรือ URL จากภายนอก แสดงผลเป็นวงกลมในเลย์เอาต์ตรงกลางและด้านล่าง และเป็นไอคอนบนแบนเนอร์ด้านบน รูปภาพในเครื่องจะมีความสำคัญกว่า URL |
backgroundColor | สีพื้นหลังทึบของการ์ด |
backgroundGradient | อาร์เรย์ของสีที่แสดงผลเป็นการไล่ระดับสีแบบหลายสีอย่างนุ่มนวล จะแทนที่ backgroundColor |
titleColor / messageColor | สีข้อความของชื่อเรื่องและข้อความ |
acceptButtonColor / acceptButtonTextColor | สีพื้นหลังและสีข้อความของปุ่มยอมรับ สีของปุ่มยอมรับยังใช้เป็นสีของไอคอนเริ่มต้นด้วย |
declineButtonColor / declineButtonTextColor | สีพื้นหลังและสีข้อความของปุ่มปฏิเสธ |
cornerRadius | รัศมีความโค้งของมุมการ์ด |
buttonCornerRadius / buttonBorderColor | รัศมีความโค้งของมุมและสีเส้นขอบของปุ่มทั้งสอง |
การตั้งค่าพฤติกรรม
Anchor link toการกลับไปที่การตั้งค่า (Settings fallback)
Anchor link toโดยค่าเริ่มต้น เมื่อการแจ้งเตือนถูกปฏิเสธไปแล้ว primer จะยังคงแสดงขึ้น และปุ่มยอมรับจะนำผู้ใช้ไปยังหน้าการตั้งค่าการแจ้งเตือนของแอป ส่งค่า false เพื่อไม่ให้แสดง primer เลยในสถานะที่ถูกปฏิเสธ
.fallbackToSettings(false)ความถี่ในการแสดงผล
Anchor link toโดยค่าเริ่มต้น primer ไม่มีการจำกัดความถี่ในตัว — จะแสดงทุกครั้งที่คุณเรียกใช้ present (และจะถูกซ่อนโดยอัตโนมัติเมื่อการแจ้งเตือนได้รับอนุญาตแล้ว) ใช้ minInterval เพื่อจำกัดความถี่ที่ primer จะปรากฏขึ้นอีกครั้ง เวลาที่แสดงล่าสุดจะถูกบันทึกไว้แม้จะปิดแอปไปแล้ว
.minInterval(7 * 24 * 60 * 60) // แสดงผลอย่างมากที่สุดสัปดาห์ละครั้งการจัดการผลลัพธ์
Anchor link toส่ง completion ไปยัง present เพื่อตอบสนองต่อผลลัพธ์
Pushwoosh.configure.pushPrimer .title("Stay in the loop") .message("Get notified about deals and order updates first") .acceptButton("Enable notifications") .declineButton("Not now") .present { outcome in switch outcome { case .accepted: break // แสดงแล้ว, ผู้ใช้ยอมรับ, มีการร้องขอหน้าจอของระบบ case .declined: break // แสดงแล้ว, ผู้ใช้ปฏิเสธ case .suppressed: break // ไม่ได้แสดง (ได้รับอนุญาตแล้ว หรือถูกจำกัดความถี่) case .redirectedToSettings: break // สถานะถูกปฏิเสธ, ผู้ใช้ถูกส่งไปยังการตั้งค่า @unknown default: break } }ผลลัพธ์สุดท้ายจากหน้าจอของระบบ (สถานะการอนุญาต/ปฏิเสธ และ device token) จะมาถึงผ่าน callback การลงทะเบียนปกติ — primer จะใช้ registerForPushNotifications ซ้ำเมื่อผู้ใช้ยอมรับ และจะไม่สร้างกระบวนการซ้ำซ้อน