RevenueCat: ตั้งค่าการสมัครสมาชิกแบบ in-app บน iOS
โดย Mehdi Azizi
อัปเดตเมื่อ , 7 นาที
RevenueCat เชื่อมผลิตภัณฑ์ใน App Store Connect เข้ากับแอปของคุณและจัดการสิทธิ์การเข้าถึง นี่คือขั้นตอนตั้งค่าการสมัครสมาชิก iOS ครั้งแรก
ทำไมควรใช้ RevenueCat แทนการใช้ StoreKit อย่างเดียว
StoreKit ซึ่งเป็นเฟรมเวิร์กของ Apple ทำให้คุณขายการสมัครสมาชิกได้โดยไม่ต้องพึ่งบริการภายนอกเลย แต่สำหรับมือใหม่ การเขียนลอจิกการซื้อ การกู้คืน และการตรวจสอบสิทธิ์การเข้าถึงเองทั้งหมดหมายถึงโค้ดจำนวนมากที่ต้องดูแล และมีกรณีพิเศษที่ลืมได้ง่าย เช่น การเปลี่ยนอุปกรณ์ การหมดอายุ หรือการคืนเงิน
RevenueCat จะคั่นกลางระหว่าง App Store Connect กับแอปของคุณ มันอ่านผลิตภัณฑ์ของคุณ จัดการการสมัครสมาชิกที่ยังใช้งานอยู่ และทำให้คุณไม่ต้องเขียนเลเยอร์นี้เอง คุณยังควบคุมราคาและข้อเสนอต่าง ๆ ได้จากแดชบอร์ด โดยไม่ต้องเผยแพร่แอปใหม่ทุกครั้งที่เปลี่ยน
ขั้นตอนที่ 1: สร้างผลิตภัณฑ์ใน App Store Connect
ก่อนจะไปที่ RevenueCat ผลิตภัณฑ์ต้องมีอยู่ฝั่ง Apple ก่อน ใน App Store Connect ให้สร้างกลุ่มการสมัครสมาชิก (subscription group) จากนั้นสร้างระดับหนึ่งหรือหลายระดับพร้อมระยะเวลา เช่น รายเดือนหรือรายปี และราคาตามแต่ละภูมิภาค อย่าลืมกรอกข้อความที่แสดงต่อผู้ใช้สำหรับแต่ละระดับด้วย เพราะApple ต้องการข้อมูลนี้ก่อนจะยอมรับผลิตภัณฑ์ในการรีวิว
สิ่งที่มักลืมในขั้นนี้คือ ผลิตภัณฑ์ที่สร้างไว้แล้วแต่ไม่เคยถูกส่งไปพร้อมกับการรีวิวแอปครั้งแรกและเวอร์ชันที่เกี่ยวข้อง ผลิตภัณฑ์ที่รอดำเนินการและไม่เคยถูกรวมอยู่ในการส่งแอปจะมองไม่เห็นสำหรับผู้ใช้ของคุณ แม้ว่า RevenueCat จะเห็นมันแล้วก็ตาม
ขั้นตอนที่ 2: เชื่อม RevenueCat เข้ากับแอปของคุณ
ใน RevenueCat คุณจะสร้างโปรเจกต์ เชื่อมคีย์ API ของ App Store Connect เพื่อให้ RevenueCat ซิงก์ผลิตภัณฑ์ของคุณโดยอัตโนมัติ แล้วกำหนด "entitlements" หรือสิทธิ์การเข้าถึง entitlement หนึ่งตัวแทนสิ่งที่การสมัครสมาชิกปลดล็อก เช่น การเข้าถึงแอปแบบเต็ม โดยไม่ขึ้นกับว่าผลิตภัณฑ์ตัวไหนเป็นตัวที่ทำให้ได้สิทธิ์นั้น
การมีชั้นคั่นกลางนี้มีประโยชน์มาก ถ้าวันหลังคุณเปลี่ยนโครงสร้างข้อเสนอ เช่น เพิ่มระดับรายปี คุณแค่เชื่อมผลิตภัณฑ์ใหม่เข้ากับ entitlement เดิม โดยไม่ต้องแตะโค้ดที่ตรวจสอบสิทธิ์ในแอปเลย
ฝั่งแอป SDK ของ RevenueCat สำหรับ React Native ติดตั้งในโปรเจกต์ Expo ได้ด้วยปลั๊กอินเฉพาะ และมีฟังก์ชันง่าย ๆ ให้เช็กว่าผู้ใช้ปัจจุบันมี entitlement ที่ใช้งานอยู่หรือไม่
ขั้นตอนที่ 3: สร้าง paywall ของคุณ
paywall คือหน้าจอที่นำเสนอข้อเสนอ และเริ่มการซื้อ RevenueCat มี paywall ที่ตั้งค่าได้จากแดชบอร์ดและแก้ไขได้โดยไม่ต้องเผยแพร่แอปใหม่ หรือคุณจะสร้างเองด้วย SDK ก็ได้ถ้าอยากควบคุมดีไซน์ทั้งหมด
ตำแหน่งที่วางสำคัญพอ ๆ กับดีไซน์ paywall ที่แสดงก่อนผู้ใช้จะเห็นคุณค่าของแอปมักจะมีอัตราการแปลงต่ำกว่า paywall ที่วางไว้หลังจากผู้ใช้ทำสิ่งแรกสำเร็จ คู่มือข้อผิดพลาดเรื่อง paywall บน iOS สำหรับมือใหม่ อธิบายกับดักที่พบบ่อยที่สุดในขั้นนี้ ซึ่งมีมากกว่าแค่การเชื่อมต่อทางเทคนิค
ขั้นตอนที่ 4: ทดสอบการซื้อ การกู้คืน และการหมดอายุ
นี่คือขั้นตอนที่คนทำลวก ๆ บ่อยที่สุด แต่กลับเป็นสิ่งที่ Apple ตรวจมากที่สุด มีสามสถานการณ์ที่ต้องทำงานได้ก่อนส่ง:
การซื้อ เมื่อใช้บัญชีผู้ทดสอบ sandbox การซื้อต้องปลดล็อก entitlement ทันที และแอปต้องตอบสนองต่อการเปลี่ยนแปลงนี้โดยไม่ต้องรีสตาร์ตแอป
การกู้คืน บนอุปกรณ์ใหม่หรือหลังติดตั้งใหม่ด้วยบัญชี Apple เดิม ปุ่ม "กู้คืนการซื้อ" ต้องดึงการสมัครสมาชิกที่ใช้งานอยู่กลับมาได้ Apple ตรวจเส้นทางนี้ทุกครั้งในการรีวิว และการไม่มีปุ่มนี้หรือปุ่มทำงานไม่ถูกต้องเป็นสาเหตุการปฏิเสธที่พบบ่อยภายใต้ guideline 3.1.1
การหมดอายุ ในสภาพแวดล้อม sandbox การสมัครสมาชิกจะหมดอายุภายในไม่กี่นาทีแทนที่จะเป็นหลายเดือน คุณจึงตรวจได้ว่าการเข้าถึงถูกปิดอย่างถูกต้องเมื่อหมดรอบ โดยไม่ต้องรอรอบการเรียกเก็บเงินจริง
สิ่งที่ RevenueCat ทดแทนไม่ได้
RevenueCat จัดการกลไกการซื้อ แต่ไม่ได้ดูแลความถูกต้องของหน้าแอปหรือ paywall ของคุณตาม guideline 3.1.2 คุณยังต้องอธิบายการสมัครสมาชิกให้ถูกต้องในคำอธิบายบน App Store ระบุราคาและระยะเวลาที่แน่นอน และใส่ข้อกำหนดการใช้งานของคุณ หน้าสมัครสมาชิกหรือซื้อครั้งเดียวบน iOS ช่วยให้คุณเลือกโมเดลที่เหมาะสมได้ตั้งแต่ก่อนมาถึงขั้นตอนทางเทคนิคนี้
นอกจากนี้ RevenueCat ยังเก็บค่าคอมมิชชันจากรายได้เมื่อเกินเกณฑ์รายเดือนที่กำหนด ซึ่งเพิ่มจากค่าคอมมิชชันของ Apple สำหรับการสมัครสมาชิกที่ขายในแอป ให้ตรวจสอบระดับราคาปัจจุบันบนเว็บไซต์ของพวกเขาเองก่อนจะวางโมเดลธุรกิจโดยคำนึงถึงค่าคอมมิชชันทั้งสองนี้
ข้อผิดพลาดที่มือใหม่ทำบ่อยที่สุด
ลืมสถานะกำลังโหลด ตอนเปิดแอป RevenueCat ต้องใช้เวลาสั้น ๆ เพื่อดึงสิทธิ์การเข้าถึงของผู้ใช้ ถ้าแอปของคุณแสดงเนื้อหาแบบเสียเงินเป็นค่าเริ่มต้นก่อนได้คำตอบนี้ ผู้ใช้ที่ไม่ได้สมัครอาจเห็นเนื้อหาที่ไม่ได้จ่ายเงินชั่วขณะ ควรมีสถานะกำลังโหลดที่ชัดเจนแทนการแสดงผลเริ่มต้นแบบมองโลกในแง่ดี
ตรวจสิทธิ์ผิดที่ entitlement ที่ใช้งานอยู่ต้องถูกตรวจใหม่ทุกครั้งที่เปิดหน้าจอแบบเสียเงิน ไม่ใช่แค่ครั้งเดียวตอนเริ่มแอป ถ้าผู้ใช้ยกเลิกหรือการสมัครสมาชิกหมดอายุระหว่างใช้แอป หน้าจอถัดไปต้องสะท้อนการเปลี่ยนแปลงนี้
สับสนระหว่าง sandbox กับ production ตัวระบุผลิตภัณฑ์และบัญชีผู้ทดสอบ sandbox แยกจาก production การทดสอบที่ผ่านใน sandbox ด้วยบัญชี Apple ที่ผิด หรือผลิตภัณฑ์ที่สร้างไว้แค่ใน production อาจทำให้เข้าใจผิดว่าทุกอย่างพร้อมแล้ว
แอปที่ผ่านการตรวจสอบ ไม่ใช่แค่แอปที่คอมไพล์ผ่าน
การสมัครสมาชิกที่ "ใช้ได้" ในการทดสอบเร็ว ๆ บนบัญชีของคุณเอง ไม่ได้รับประกันว่าจะรอดจากการกู้คืนบนอุปกรณ์อื่นหรือการหมดอายุจริง และนี่คือสิ่งที่ reviewer ของ Apple ตรวจพอดี หน้าการสมัครสมาชิกแบบ in-app บน iOS อธิบายกระบวนการทั้งหมดนี้ ตั้งแต่การสร้างผลิตภัณฑ์จนถึงการตรวจสอบขั้นสุดท้าย
ถ้าคุณอยากเริ่มจากโค้ดที่มี paywall และการสมัครสมาชิกอยู่แล้ว นั่นคือสิ่งที่อยู่ในโค้ดเริ่มต้นของ iOS Kit และถ้าอยากตรวจการสมัครสมาชิกแบบเดียวกับที่ reviewer จะตรวจ Apple Review Kit รวมเช็กลิสต์ก่อนส่งของผมและโน้ตที่ควรฝากไว้ให้ผู้ทดสอบเรื่องการซื้อในแอปไว้ให้แล้ว
คำถามที่พบบ่อย
ตั้งค่าการสมัครสมาชิกด้วย RevenueCat บน iOS อย่างไร?
ทำได้ในสี่ขั้นตอน เริ่มจากสร้างผลิตภัณฑ์ของคุณใน App Store Connect จากนั้นเชื่อม RevenueCat ด้วยคีย์ API ของ App Store Connect และกำหนด entitlements (สิทธิ์การเข้าถึง) แล้วสร้าง paywall สุดท้ายทดสอบการซื้อ การกู้คืน และการหมดอายุ ซึ่งเป็นขั้นที่มักทำลวก ๆ แต่ Apple ตรวจจริง
จำเป็นต้องใช้ RevenueCat เพื่อขายการสมัครสมาชิกบน iOS ไหม?
ไม่จำเป็น StoreKit ซึ่งเป็นเฟรมเวิร์กของ Apple ทำให้ขายการสมัครสมาชิกได้โดยไม่ต้องใช้บริการภายนอก แต่คุณต้องเขียนลอจิกการซื้อ การกู้คืน และการตรวจสอบสิทธิ์เองทั้งหมด พร้อมกรณีพิเศษที่ลืมได้ง่าย เช่น การเปลี่ยนอุปกรณ์ การหมดอายุ และการคืนเงิน RevenueCat คั่นกลางระหว่าง App Store Connect กับแอปของคุณเพื่อให้คุณไม่ต้องเขียนเลเยอร์นี้
entitlement ใน RevenueCat คืออะไร?
entitlement คือสิทธิ์การเข้าถึง มันแทนสิ่งที่การสมัครสมาชิกปลดล็อก เช่น การเข้าถึงแอปแบบเต็ม ไม่ว่าผลิตภัณฑ์ตัวไหนจะเป็นตัวที่ทำให้ได้สิทธิ์นั้น ถ้าวันหลังคุณเพิ่มระดับรายปี คุณแค่เชื่อมผลิตภัณฑ์ใหม่เข้ากับ entitlement เดิม โค้ดที่ตรวจสิทธิ์ในแอปไม่ต้องเปลี่ยน
ทดสอบการสมัครสมาชิก RevenueCat ก่อนส่งให้ Apple อย่างไร?
มีสามสถานการณ์ที่ต้องทำงานได้ก่อนส่ง การซื้อ: เมื่อใช้บัญชีผู้ทดสอบ sandbox การเข้าถึงต้องปลดล็อกทันทีโดยไม่ต้องรีสตาร์ตแอป การกู้คืน: บนอุปกรณ์ใหม่หรือหลังติดตั้งใหม่ด้วยบัญชี Apple เดิม ปุ่มกู้คืนต้องดึงการสมัครสมาชิกที่ใช้งานอยู่กลับมาได้ การหมดอายุ: ใน sandbox การสมัครสมาชิกหมดอายุภายในไม่กี่นาที คุณจึงตรวจได้ว่าการเข้าถึงถูกปิดจริง
ทำไมผลิตภัณฑ์ที่เห็นใน RevenueCat ถึงมองไม่เห็นสำหรับผู้ใช้?
ส่วนใหญ่เป็นเพราะผลิตภัณฑ์นั้นไม่เคยถูกรวมอยู่ในการส่งแอป ผลิตภัณฑ์ที่สร้างใน App Store Connect แต่ไม่เคยถูกส่งไปกับการรีวิวครั้งแรกพร้อมเวอร์ชันที่เกี่ยวข้องจะมองไม่เห็นสำหรับผู้ใช้ แม้ RevenueCat จะเห็นแล้วก็ตาม เป็นสิ่งที่ลืมบ่อยในขั้นสร้างผลิตภัณฑ์
RevenueCat เก็บค่าคอมมิชชันจากการสมัครสมาชิกไหม?
RevenueCat เก็บค่าคอมมิชชันจากรายได้เมื่อเกินเกณฑ์รายเดือนที่กำหนด ซึ่งเพิ่มจากค่าคอมมิชชันของ Apple สำหรับการสมัครสมาชิกที่ขายในแอป ให้ตรวจสอบระดับราคาปัจจุบันบนเว็บไซต์ของ RevenueCat ก่อนวางโมเดลธุรกิจโดยคำนึงถึงค่าคอมมิชชันทั้งสองนี้