Retention Messaging API: ข้อความก่อนผู้ใช้ยกเลิกสมัครสมาชิก
โดย Mehdi Azizi
เผยแพร่เมื่อ , 10 นาที
Retention Messaging API ของ Apple จะแสดงข้อความของคุณเมื่อสมาชิกแตะ Cancel Subscription บทความนี้อธิบายรูปแบบ เงื่อนไข การขอสิทธิ์ และการตั้งค่า
Retention Messaging API คือบริการแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์ของ Apple ที่แสดงข้อความของคุณให้สมาชิกเห็นตอนที่เขาแตะ Cancel Subscription ข้อความจะขึ้นบนหน้ายืนยัน ก่อนการยกเลิกจะมีผล ข้อความนี้ใช้เตือนถึงคุณค่าของการสมัครสมาชิก เสนอแพ็กเกจอื่น หรือเสนอข้อเสนอโปรโมชันก็ได้ แต่ปุ่มยกเลิกจะยังอยู่ตรงนั้นเสมอ API นี้อยู่ในช่วงพรีวิวมาตั้งแต่เดือนกรกฎาคม 2025 ต้องยื่นขอสิทธิ์ก่อนใช้ และ Apple ประกาศว่าจะมีเวอร์ชันที่ใช้ง่ายกว่าใน App Store Connect ช่วงฤดูใบไม้ร่วงปี 2026
คู่มือนี้อธิบายว่า API แสดงอะไร มีมาตั้งแต่เมื่อไร ใครใช้ได้ มีเงื่อนไขอะไร และตั้งค่าอย่างไร ข้อมูลทั้งหมดมาจากเอกสารของ Apple และเซสชัน WWDC26 ที่พูดถึงเรื่องนี้โดยตรง ผมอ่านทวนล่าสุดเมื่อวันที่ 3 พฤศจิกายน 2026
ผมขายการสมัครสมาชิกในแอป iOS ของผมเอง ได้แก่ Solys แอปบล็อกโซเชียลมีเดีย, TradaZen แอปจำลองการเทรด, Nolera แอปลองชุดด้วย AI และ Vigie ผมยื่นขอสิทธิ์ใช้ API ให้ทั้งสี่แอปเมื่อวันที่ 25 ตุลาคม 2026 และเตรียมข้อความไว้ครบทุกภาษาที่แอปรองรับ จนถึงวันที่ 28 ตุลาคม Apple ก็ยังไม่อนุมัติ คู่มือนี้จึงอธิบายกติกาและสิ่งที่ผมเตรียมไว้ ยังไม่ใช่ผลลัพธ์จริง
Retention Messaging API ทำอะไร
ตามเอกสารของ Apple API นี้ให้คุณเลือกข้อความที่ระบบจะแสดงเมื่อลูกค้าเปิดหน้ารายละเอียดการสมัครสมาชิกและอาจกำลังจะยกเลิก คุณเตรียมข้อความไว้ล่วงหน้าได้ แยกตามแต่ละสินค้าและแต่ละภาษา
ขั้นตอนจะเป็นแบบนี้เสมอ:
- สมาชิกเปิดหน้าการสมัครสมาชิกของตัวเอง เช่น ใน Apple Account > Subscriptions หรือจาก App Store
- เขาแตะ Cancel Subscription
- ระบบแสดงหน้ายืนยัน (Confirm Cancellation) พร้อมข้อความของคุณ
- เขาจะยกเลิกต่อก็ได้ เก็บการสมัครไว้ก็ได้ หรือรับสิ่งที่ข้อความของคุณเสนอก็ได้
ข้อความจะแสดงบน iOS 15.1 และ iPadOS 15.1 ขึ้นไป, บน visionOS 1 และบน macOS 14 ขึ้นไป
มีมาตั้งแต่เมื่อไร และใช้ได้กับใคร
| วันที่ | สิ่งที่เปลี่ยน ตามข้อมูลของ Apple |
|---|---|
| 16 ก.ค. 2025 | เวอร์ชัน 1.0: API พรีวิวครั้งแรก |
| 9 ธ.ค. 2025 | การทดสอบประสิทธิภาพเซิร์ฟเวอร์สำหรับโหมดเรียลไทม์ |
| 31 มี.ค. 2026 | รองรับบูลเล็ตในข้อความ และตั้งค่าที่อยู่เรียลไทม์ผ่าน API |
| 27 เม.ย. 2026 | รองรับการสมัครสมาชิกรายเดือนแบบผูกสัญญา 12 เดือน |
| มิ.ย. 2026 | WWDC26: ประกาศโมดูลใน App Store Connect |
วันที่ทั้งหมดมาจากบันทึกเวอร์ชันของ API ยกเว้นแถวสุดท้ายที่มาจากเซสชัน WWDC26 ตอนนี้ API ยังเป็นพรีวิวอยู่ เอกสารจะพาคุณไปที่แบบฟอร์มขอสิทธิ์ ซึ่งต้องล็อกอินด้วยบัญชีนักพัฒนาของคุณ
ใน WWDC26 เซสชัน Explore Retention Messaging in App Store Connect แนะนำโมดูลที่ตั้งค่าได้โดยไม่ต้องเขียนโค้ดใน App Store Connect Apple บอกว่า "เปิดให้ทุกคนใช้" ส่วนเวอร์ชันเรียลไทม์ยังต้องยื่นขอสิทธิ์เหมือนเดิม หน้ามีอะไรใหม่ของ App Store ประกาศว่าโมดูลนี้จะมา "ฤดูใบไม้ร่วงนี้" ณ วันที่ 3 พฤศจิกายน 2026 หน้าช่วยเหลือของ App Store Connect ยังไม่มีหน้าไหนพูดถึงโมดูลนี้เลย และเมื่อวันที่ 28 ตุลาคม โมดูลก็ยังไม่ปรากฏในบัญชีของผม
API นี้ใช้กับแอปที่ขายการสมัครสมาชิกแบบต่ออายุอัตโนมัติ และไม่ได้สงวนไว้ให้ผู้พัฒนารายใหญ่เท่านั้น RevenueCat ระบุไว้ในงานศึกษาข้อความ 22 ล้านข้อความ ว่าแอปเล็กๆ ก็ยื่นขอสิทธิ์ได้เหมือนกัน
ข้อความ 4 ประเภท
| ประเภท | สิ่งที่สมาชิกเห็น | ข้อความเริ่มต้น | เรียลไทม์ |
|---|---|---|---|
| ข้อความ | หัวข้อ เนื้อหา และบูลเล็ตได้สูงสุดห้าข้อ | ได้ | ได้ |
| ข้อความพร้อมรูปภาพ | เหมือนแบบแรก แต่มีรูปภาพด้วย | ได้ | ได้ |
| เปลี่ยนแพ็กเกจ | ข้อความและการสมัครสมาชิกแบบอื่นในกลุ่มเดียวกัน | ไม่ได้ | ได้ |
| ข้อเสนอโปรโมชัน | ข้อความและข้อเสนอให้ใช้ต่อในราคาที่ถูกลง | ไม่ได้ | ได้ |
ตามหน้าการเตรียมข้อความ ข้อความเริ่มต้นเป็นได้แค่ข้อความ จะมีหรือไม่มีรูปภาพก็ได้ ถ้าใช้ API การเสนอข้อเสนอหรือแพ็กเกจอื่นต้องตอบกลับแบบเรียลไทม์ ส่วนโมดูลที่ประกาศไว้ใน App Store Connect จะให้ใส่ข้อความพร้อมข้อเสนอได้โดยไม่ต้องมีเซิร์ฟเวอร์
ข้อเสนอโปรโมชันคือข้อเสนอที่คุณสร้างใน App Store Connect ตามหน้าช่วยเหลือเรื่องข้อเสนอโปรโมชัน ข้อเสนอนี้มีไว้สำหรับสมาชิกปัจจุบันและอดีตสมาชิก ในข้อความรักษาสมาชิก เซิร์ฟเวอร์ของคุณจะเป็นผู้เซ็นข้อเสนอ ตามหน้าการเตรียมข้อความ ส่วนการเปลี่ยนแพ็กเกจจะเสนอการสมัครสมาชิกในกลุ่มเดียวกัน ถ้าคุณเพิ่งเริ่มใช้ข้อเสนอเหล่านี้ ลองอ่านคู่มือของผมเรื่องโค้ดข้อเสนอและข้อเสนอโปรโมชันก่อน
สิ่งที่แสดงได้: ขีดจำกัดที่แน่นอน
| องค์ประกอบ | ขีดจำกัดของ Apple |
|---|---|
| หัวข้อ | ไม่เกิน 66 ตัวอักษร |
| เนื้อหา | ไม่เกิน 144 ตัวอักษร |
| บูลเล็ต | ไม่เกิน 5 ข้อ |
| รูปภาพเต็มความกว้าง | PNG ไม่มีพื้นโปร่งใส กว้าง 3,840 px สูง 160 ถึง 2,160 |
| รูปภาพของบูลเล็ต | 1,024 × 1,024 px |
| รูปภาพต่อแอป | ไม่เกิน 2,000 รูป |
ความยาวมาจากคำอธิบายเนื้อหาคำขอสำหรับส่งข้อความ ส่วนรูปแบบไฟล์มาจากหน้าการส่งรูปภาพ Apple ยังขอให้ใช้รูปที่ดูดีทั้งในโหมดสว่างและโหมดมืด
Apple จะตรวจทุกข้อความและทุกรูปภาพ สถานะจะเปลี่ยนจาก PENDING เป็น APPROVED และระบบจะแสดงเฉพาะสิ่งที่อนุมัติแล้ว ใน sandbox การอนุมัติจะเกิดขึ้นอัตโนมัติ เอกสารวางกฎเรื่องเนื้อหาไว้ชัดเจน: ห้ามส่งอะไรที่ชวนเข้าใจผิดหรือไม่ถูกต้อง
เงื่อนไขที่ต้องทำให้ครบ
- ข้อความเริ่มต้นหนึ่งข้อความต่อหนึ่งสินค้า ในทุกภาษา ถ้าไม่มี ภาษานั้นจะไม่มีอะไรแสดงเลย ข้อความนี้ยังเป็นตัวสำรองในกรณีที่เซิร์ฟเวอร์ของคุณไม่ตอบด้วย
- ข้อความและรูปภาพต้องได้รับอนุมัติ ก่อนเปิดใช้งานจริง
- ถ้าใช้เรียลไทม์ เซิร์ฟเวอร์ต้องเร็ว หน้าการตั้งค่าที่อยู่เรียลไทม์ กำหนดให้มีใบรับรอง SSL ที่ถูกต้อง, TLS 1.2 และต้องตอบกลับภายใน 700 ms ใน production ถ้าช้ากว่านั้น คำขอจะล้มเหลวและระบบจะแสดงข้อความเริ่มต้นแทน
- ต้องผ่านการทดสอบประสิทธิภาพใน sandbox ก่อนลงทะเบียนที่อยู่สำหรับ production
- ต้องตรวจสอบแอป ทุกคำขอจาก Apple จะมีรหัสของแอป คือ
appAppleIdถ้าไม่ตรงกับของคุณ Apple ขอให้ไม่ต้องตอบกลับ
คำขอแบบเรียลไทม์จะส่งรหัสธุรกรรมต้นฉบับ สินค้า และภาษาของอุปกรณ์มาให้คุณ จากนั้นคุณเลือกข้อความเองตามกฎของคุณ
ตั้งค่า Retention Messaging: สามทางเลือก
| ทางเลือก | เหมาะกับใคร | สิ่งที่ต้องมี |
|---|---|---|
| โมดูลใน App Store Connect | ทุกคน เมื่อเปิดให้ใช้แล้ว | ไม่ต้องเขียนโค้ด ใช้ข้อความ รูปภาพ หรือข้อเสนอ |
| API ผ่านเซิร์ฟเวอร์ของคุณ | คนที่มี back-end | สิทธิ์จาก Apple, ที่อยู่ HTTPS, การทดสอบประสิทธิภาพ |
| API ผ่าน RevenueCat | แอปที่ใช้ RevenueCat อยู่แล้ว | สิทธิ์จาก Apple, ตั้งค่าในแดชบอร์ด |
เมื่อมีการตั้งค่าหลายแบบพร้อมกัน Apple อธิบายลำดับไว้ในเซสชัน WWDC26 ว่า: ใช้คำตอบเรียลไทม์ก่อน ถ้าไม่มีหรือรูปแบบผิด จะใช้การตั้งค่าใน App Store Connect ถ้าไม่มีอีก จะใช้ข้อความเริ่มต้นที่ตั้งไว้ผ่าน API
ใช้เซิร์ฟเวอร์ของคุณเอง
- ยื่นขอสิทธิ์ด้วยแบบฟอร์มของ Apple
- ส่งรูปภาพ แล้วตามด้วยข้อความ โดยแต่ละข้อความมีหัวข้อและเนื้อหา
- รอให้อนุมัติ แล้วกำหนดข้อความเริ่มต้นให้แต่ละการสมัครสมาชิกในแต่ละภาษา
- ถ้าใช้เรียลไทม์ ให้สร้างที่อยู่
Get Retention Messageบนเซิร์ฟเวอร์ แล้วลงทะเบียนใน sandbox - รันการทดสอบประสิทธิภาพ ใน sandbox ด้วยธุรกรรมทดสอบ
- เมื่อผ่านแล้ว ค่อยลงทะเบียนที่อยู่สำหรับ production
ใช้ RevenueCat
ผมเลือกทางนี้ เพราะไม่ต้องเขียนเซิร์ฟเวอร์ และแอปของผมก็ใช้ RevenueCat อยู่แล้ว ตามที่อธิบายไว้ในRevenueCat กับการสมัครสมาชิกในแอป iOS ตามเอกสารของ RevenueCat:
- ในแบบฟอร์มของ Apple ให้กรอกที่อยู่ที่ RevenueCat แสดงไว้ในการตั้งค่าแอป App Store ของคุณ
- หลังได้รับอนุมัติ เปิด Lifecycle แล้วไปที่ Retention และเชื่อมที่อยู่ sandbox
- รันการทดสอบประสิทธิภาพโดยมีการสมัครสมาชิก sandbox หรือ TestFlight ที่ยังใช้งานอยู่ การทดสอบอาจใช้เวลาถึงหนึ่งชั่วโมง
- สร้างข้อความเริ่มต้นก่อน ทีละภาษา
- จากนั้นเพิ่มข้อความเรียลไทม์พร้อมกฎ หนึ่งในกฎคือ "Is in free trial" สำหรับคนที่อยู่ในช่วงทดลองใช้ฟรี
- ย้ายไป production: การตั้งค่าใน sandbox จะไม่ถูกคัดลอกมา คุณต้องสร้างข้อความใหม่อีกรอบ
เขียนข้อความที่รักษาสมาชิกไว้โดยไม่หลอกล่อ
ข้อความเป็นแบบตายตัวและ Apple ตรวจก่อนแสดง จึงพูดถึงตัวคนที่อ่านหรือวันที่เขาอ่านไม่ได้ นี่คือข้อความเริ่มต้นที่ผมเตรียมไว้ให้ TradaZen เป็นภาษาฝรั่งเศส (แปลเป็นไทยด้านล่าง):
หัวข้อ (57 ตัวอักษรในต้นฉบับภาษาฝรั่งเศส):
คุณอยากเรียนเทรด แล้วจะกลับไปเทรดแบบมืดบอดเหรอ?
เนื้อหา (127 ตัวอักษรในต้นฉบับภาษาฝรั่งเศส):
ถ้าไม่ฝึก เงินจริงของคุณจะต้องจ่ายให้ทุกความผิดพลาด ที่นี่ความผิดพลาดไม่มีค่าใช้จ่าย สถิติต่อเนื่อง ลีก และบทเรียนของคุณจะหยุดลง
กฎที่ผมตั้งไว้สำหรับทั้งสี่แอป:
- หัวข้อพาคนอ่านกลับไปที่เป้าหมายของเขา ในรูปคำถาม ไม่ทำให้เขาอับอาย
- เนื้อหาบอกให้ชัดว่าอะไรจะหยุดลง ผมเขียนว่าการเข้าถึง "ถูกล็อก" เมื่อข้อมูลยังอยู่ ไม่เคยเขียนว่าข้อมูลจะ "ถูกลบ"
- ไม่มีคำบอกเวลา อย่าง "พรุ่งนี้" หรือ "วันนี้" เพราะข้อความเดียวกันจะแสดงในช่วงเวลาไหนของรอบบิลก็ได้
- ไม่สัญญาเรื่องรายได้ ไม่สร้างความเร่งรีบปลอมๆ หัวข้อแรกที่สัญญาว่าจะเปลี่ยนชีวิตด้วยการเทรดถูกตัดทิ้งก่อนส่ง guideline 5.6 ห้ามพฤติกรรมชักจูงทุกรูปแบบ และ paywall ของ TradaZen ก็เคยโดนปฏิเสธด้วยเหตุผลนี้มาแล้ว ตามที่ผมเล่าไว้ในguideline 5.6 กับ paywall
- แต่ละภาษามีข้อความของตัวเอง ใช้คำศัพท์เดียวกับแอปที่แปลแล้ว และนับทีละตัวอักษร
สำหรับ TradaZen ผมยังวางแผนข้อความเรียลไทม์สำหรับคนที่กำลังทดลองใช้แพ็กเกจรายปี ข้อความนี้จะเสนอแพ็กเกจรายปีที่ถูกกว่าในกลุ่มเดียวกัน เพราะตัวเลขของผมบอกว่าคนกลุ่มนี้ใช้แอปพอๆ กับคนที่จ่ายเงิน สิ่งที่พวกเขาไม่ยอมรับคือราคา การตั้งค่านี้ยังรอ Apple อนุมัติอยู่
คาดหวังอะไรได้บ้าง
อย่าหวังปาฏิหาริย์ Apple เรียกสัดส่วนสมาชิกที่ยังเก็บการสมัครไว้หลังเข้ามาถึงหน้ายืนยันว่าอัตราการรักษาสมาชิก (save rate) ในเซสชัน WWDC26 Apple ระบุว่าการสมัครสมาชิกที่ใช้ Retention Messaging มีอัตรานี้เพิ่มขึ้นเฉลี่ย 1.4 จุด ข้อความที่มีข้อเสนอโปรโมชันให้ผลดีที่สุดที่เคยเห็น คือเพิ่ม 5.5 จุด และผลลัพธ์ต่างกันไปในแต่ละนักพัฒนา ส่วนงานศึกษาของ RevenueCat พบว่าสมาชิกยอมรับข้อเสนอโปรโมชันเพียงประมาณ 1.1% และยอมรับการเปลี่ยนแพ็กเกจเพียง 0.6%
ข้อความนี้จึงแทนงานที่ต้องทำตั้งแต่ต้นทางไม่ได้ การทดลองใช้ฟรีที่ถูกยกเลิกภายในนาทีเดียวตัดสินกันที่ paywall และการใช้งานช่วงแรกๆ สาเหตุและวิธีแก้อยู่ในคู่มือของผมเรื่องการทดลองใช้ฟรีที่ถูกยกเลิก ส่วนการสร้างช่วงทดลองใช้อยู่ในข้อเสนอแนะนำ
เตรียมการสมัครสมาชิกให้พร้อมก่อนเขียนข้อความ
iOS & Android Kit เริ่มจากโค้ดตั้งต้นของแอปผมเอง ทั้ง onboarding, paywall และการสมัครสมาชิกเขียนไว้ให้แล้ว และเส้นทางสี่ขั้นตอนจะพาคุณไปจนถึง App Store ตามจังหวะของคุณเอง กระบวนการทั้งหมด ตั้งแต่สร้างสินค้าใน App Store Connect ไปจนถึง paywall อธิบายไว้ในหน้าการสมัครสมาชิกในแอป iOS
ถ้าคุณกำลังเตรียมปล่อยแอปแรก ทำแบบประเมินฟรี แบบประเมินจะบอกว่าอะไรที่ขวางโปรเจกต์ของคุณอยู่จริงๆ และส่งเช็กลิสต์กันโดน Apple ปฏิเสธของผมให้คุณ
คำถามที่พบบ่อย
Retention Messaging API ของ Apple คืออะไร?
เป็นบริการแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์ที่เลือกข้อความแสดงให้สมาชิกเห็นเมื่อเขาแตะ Cancel Subscription ข้อความจะขึ้นบนหน้ายืนยันก่อนการยกเลิก ใช้เตือนถึงคุณค่าของการสมัครสมาชิก เสนอแพ็กเกจอื่น หรือเสนอข้อเสนอโปรโมชันได้
นักพัฒนาทุกคนใช้ Retention Messaging ได้ไหม?
API ยังเป็นพรีวิว ต้องยื่นขอสิทธิ์จาก Apple ใน WWDC26 Apple ประกาศโมดูลใน App Store Connect ที่เปิดให้ทุกคนใช้ โดยมีกำหนดในฤดูใบไม้ร่วงปี 2026 ณ วันที่ 3 พฤศจิกายน 2026 หน้าช่วยเหลือของ App Store Connect ยังไม่ได้อธิบายโมดูลนี้
ข้อความแสดงบน iOS เวอร์ชันไหนบ้าง?
บน iOS 15.1 และ iPadOS 15.1 ขึ้นไป, บน visionOS 1 และบน macOS 14 ขึ้นไป บนอุปกรณ์ที่เก่ากว่านั้น การยกเลิกจะเกิดขึ้นโดยไม่มีข้อความ
ข้อความนี้ทำให้สมาชิกยกเลิกไม่ได้หรือเปล่า?
ไม่ หน้ายืนยันยังมีปุ่มยกเลิกเสมอ สมาชิกยังเลือกเก็บการสมัครไว้ หรือรับข้อเสนอหรือแพ็กเกจที่เสนอให้ก็ได้
เสนอส่วนลดตอนที่ผู้ใช้กำลังยกเลิกได้ไหม?
ได้ ถ้าใช้ API จะเป็นข้อความแบบข้อเสนอโปรโมชัน ซึ่งทำได้เฉพาะแบบเรียลไทม์: สร้างข้อเสนอใน App Store Connect และให้เซิร์ฟเวอร์ของคุณเซ็น โมดูลที่ประกาศไว้ใน App Store Connect ก็ให้ใส่ข้อความพร้อมข้อเสนอได้เช่นกัน ส่วนการเปลี่ยนแพ็กเกจจะเสนอการสมัครสมาชิกแบบอื่นในกลุ่มเดียวกัน
ข้อความรักษาสมาชิกยาวได้กี่ตัวอักษร?
หัวข้อไม่เกิน 66 ตัวอักษร เนื้อหาไม่เกิน 144 ���ัวอักษร เพิ่มบูลเล็ตได้สูงสุดห้าข้อและรูปภาพ PNG ที่ไม่มีพื้นโปร่งใส แต่ละภาษาต้องมีข้อความเริ่มต้นของตัวเอง
ต้องมีเซิร์ฟเวอร์ถึงจะใช้ Retention Messaging ได้ไหม?
สำหรับข้อความเริ่มต้นไม่ต้องโฮสต์ที่อยู่ใดๆ แค่เรียก API เพื่อส่งและกำหนดข้อความก็พอ ถ้าใช้ RevenueCat ก็ทำหน้าที่เป็นเซิร์ฟเวอร์ให้ ส่วนแบบเรียลไทม์ต้องมีที่อยู่ HTTPS ที่ตอบกลับภายใน 700 ms โมดูลที่ประกาศไว้ใน App Store Connect ตั้งค่าได้โดยไม่ต้องเขียนโค้ด

