ข้ามไปยังเนื้อหา

ข้อมูลเบื้องต้นเกี่ยวกับ Push สำหรับ iOS

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

พร้อมใช้งานตั้งแต่เวอร์ชัน 7.1.1 Primer เป็นส่วนหนึ่งของ PushwooshFramework ไม่จำเป็นต้องใช้โมดูลเพิ่มเติม

กล่องโต้ตอบ Push primer ที่แสดงก่อนหน้าจอขออนุญาตของระบบ
Push primer ที่แสดงก่อนหน้าจอขออนุญาตของระบบ iOS

วิธีการทำงาน

Anchor link to

Primer สามารถรับรู้สถานะได้อย่างสมบูรณ์ โดยจะอ่านสถานะการอนุญาตการแจ้งเตือนปัจจุบันและตัดสินใจว่าจะทำอะไร ดังนั้นจึงปลอดภัยที่จะเรียกใช้งานทุกครั้งที่เปิดแอป:

  • ยังไม่ได้ตัดสินใจ (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 เพื่อวางตำแหน่งชีตที่กำหนดเอง แต่ละตำแหน่งมีการออกแบบเริ่มต้นของตัวเอง

ค่าคำอธิบาย
.alertUIAlertController ของระบบ จะไม่สนใจค่า 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()
Push primer ในตำแหน่งล่าง, บน และกลาง

การปรับแต่ง

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 / imageURLUIImage ในเครื่องหรือ 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 ซ้ำเมื่อผู้ใช้ยอมรับ และจะไม่สร้างกระบวนการซ้ำซ้อน

ข้อมูลอ้างอิง

Anchor link to