แอปถูก Apple รีเจ็กต์: สาเหตุจริงจาก 5 เคสของผม
โดย Mehdi Azizi
อัปเดตเมื่อ , 8 นาที
Apple รีเจ็กต์แอปตาม guideline ที่ระบุเป็นข้อ เช่น 2.1, 5.1.1, 2.3.2, 5.6.3 นี่คือสาเหตุจริงจากแอปของผม วิธีตอบกลับ และเช็กลิสต์ก่อนส่ง
การที่ Apple รีเจ็กต์แอปแทบทุกครั้งมีเหตุผลชัดเจน ซึ่งเขียนไว้ในข้อความจากการรีวิว: เป็น guideline ที่มีหมายเลขกำกับ และมักแนบภาพหน้าจอมาด้วย สำหรับแอปตัวแรก เหตุผลที่เจอบ่อยที่สุดคือแอปที่ยังทำไม่เสร็จ (2.1) การแจ้งเรื่องความเป็นส่วนตัวไม่ถูกต้อง (5.1.1) metadata ที่ทำให้เข้าใจผิด (2.3.2) การชำระเงินที่เลี่ยงระบบซื้อในแอป (3.1.1) หรือการขอให้ให้คะแนนผิดจังหวะ (5.6.3) ส่วนใหญ่แล้ว reviewer เข้าใจแอปของคุณดี ปัญหาคือการส่งของคุณมีจุดให้ติได้ต่างหาก
ผมรู้เพราะโดนรีเจ็กต์แบบนี้มากับตัว ผมเผยแพร่แอป iOS ของตัวเอง: Solys (นาฬิกาปลุกที่มีมินิเกม) และ TradaZen (เครื่องจำลองการเทรด) อยู่บน App Store แล้ว Solys โดนรีเจ็กต์สองครั้ง ครั้งแรกก่อนเปิดตัว อีกครั้งตอนอัปเดต และอีกสองแอปคือ Clic กับ Nolera ก็โดนรีเจ็กต์ แก้ไข แล้วส่งกลับไปให้ Apple ใหม่ นี่คือการรีเจ็กต์ทั้งห้าครั้ง สาเหตุจริงของแต่ละครั้ง ตามด้วยวิธีตอบกลับและเช็กลิสต์ที่ผมใช้ก่อนส่งทุกครั้ง
ทำไม Apple ถึงรีเจ็กต์แอป: 5 ครั้งที่ผมโดนมา
รีเจ็กต์ 2.1 ที่ Solys: เดโมที่ไม่มีทางชนะได้
onboarding ของ Solys มีเดโมให้เล่น: ต้องชนะมินิเกมหนึ่งเกม เหมือนตอนตื่นนอน บนโทรศัพท์ของผมทุกอย่างทำงานได้ แต่ reviewer ทดสอบบน iPad ซึ่งแอป iPhone จะรันในโหมดความเข้ากันได้ (compatibility mode) ในหน้าต่างที่เล็กกว่า ที่ขนาดนั้น ช่องที่เว้นให้นกในมินิเกมบินผ่านแคบกว่าตัวนกเอง และปุ่ม "ดำเนินการต่อ" จะกดได้ก็ต่อเมื่อชนะเท่านั้น Apple จึงขอให้มีวิธีข้ามภารกิจเกมนี้
วิธีแก้: ทำเดโมที่คำนวณขนาดองค์ประกอบจากขนาดหน้าจอจริง และเพิ่มลิงก์ให้ข้ามเดโมได้ถ้าเล่นไม่ผ่าน
บทเรียน: ทุกขั้นตอนที่บังคับต้องมีทางออก และทุกหน้าจอที่บังคับต้องทดสอบบนขนาดจอที่เล็กที่สุดก่อนส่งทุกครั้ง
รีเจ็กต์ 5.6.3 ที่ Solys: ขอให้ให้คะแนนระหว่าง onboarding
รีเจ็กต์ครั้งที่สอง ในอัปเดตถัดมา Apple เขียนว่าแอปขอให้ให้คะแนนตอนเปิดครั้งแรกหรือระหว่าง onboarding หน้าจอให้คะแนนโผล่มาทันทีหลังเดโม ก่อนที่ผู้ใช้จะได้สัมผัสอะไรในแอปเลย
วิธีแก้: ย้ายการขอคะแนนไปไว้ท้ายเส้นทาง และให้แสดงเฉพาะเมื่อผู้ใช้เพิ่งชนะเดโมเท่านั้น
บทเรียน: คำขอที่อ่อนไหวทุกอย่าง (คะแนน, การแจ้งเตือน, การสมัครสมาชิก, การติดตาม) ต้องมาหลังจากผู้ใช้เห็นคุณค่าแล้ว ห้ามมาก่อน
รีเจ็กต์ 5.1.1 ที่ Clic: นโยบายความเป็นส่วนตัวออนไลน์ไม่อัปเดต
Clic สร้างเนื้อหาด้วย AI และในแอปก็มีหน้าจอขอความยินยอมครบ ปัญหาอยู่ที่อื่น: นโยบายความเป็นส่วนตัวที่เผยแพร่บนเว็บไซต์เป็นเวอร์ชันเก่า และไม่ได้อธิบายทุกอย่างที่แอปเก็บ
วิธีแก้: เผยแพร่นโยบายฉบับสมบูรณ์ เพิ่มบทสรุปภาษาอังกฤษ และอัปเดตโน้ตสำหรับการรีวิว
บทเรียน: Apple อ่านนโยบายที่อยู่ออนไลน์ ไม่ใช่ไฟล์ที่นอนอยู่ใน repo ของคุณ ก่อนส่งทุกครั้ง ให้เปิด URL ที่แจ้งไว้แล้วเช็กว่าเนื้อหาตรงกับสิ่งที่แอปทำจริง
รีเจ็กต์ 5.1.1 ที่ Nolera: ปุ่ม "อนุญาต" ก่อนคำขอของระบบ
ก่อนคำขอเข้าถึงกล้องจริงของ iOS แอป Nolera แสดงหน้าจออธิบายที่มีปุ่ม "อนุญาต" สำหรับ Apple ข้อความนี้เป็นการกดดันให้ผู้ใช้ยอมรับก่อนคำขออย่างเป็นทางการของระบบ
วิธีแก้: ตอนนี้ปุ่มเปลี่ยนเป็น "ดำเนินการต่อ" ในทั้ง 8 ภาษาของแอป
บทเรียน: หน้าจอที่เตรียมผู้ใช้ก่อนขอสิทธิ์มีหน้าที่อธิบาย ไม่ใช่ตัดสินใจแทนผู้ใช้ คำแนะนำของ Apple อยู่ในหลักการออกแบบด้านความเป็นส่วนตัว
รีเจ็กต์ 2.3.2 ที่ Nolera: ใช้ไอคอนซ้ำเป็นภาพโปรโมต
การสมัครสมาชิกสามารถมีภาพโปรโมตใน App Store Connect ได้ ในการสมัครสมาชิกสองรายการของ Nolera ภาพนั้นก็แค่ไอคอนของแอป Apple มองว่าไม่เป็นไปตามข้อกำหนด
วิธีแก้: ลบภาพออกจากการสมัครสมาชิกทั้งสองรายการ แล้วสร้างการส่งใหม่
บทเรียน: ทุกองค์ประกอบในหน้าแอปของคุณถูกตรวจ รวมถึงส่วนที่คุณกรอกไปโดยไม่ได้คิด เช่นการจัดระดับอายุ
guideline ไหนที่โดนบ่อยที่สุด?
กฎทั้งหมดอยู่ใน App Review Guidelines ข้อที่มักเป็นกับดักของแอปตัวแรกที่สุดคือ:
2.1: App Completeness แอปแครช ปุ่มกดแล้วไม่ไปไหน หน้าจอที่บังคับใช้งานไม่ได้บนจอบางขนาด ถ้าแอปของคุณต้องล็อกอิน ให้ใส่บัญชีเดโมไว้ในโน้ตสำหรับการรีวิว ไม่อย่างนั้น reviewer จะติดอยู่ที่หน้าล็อกอิน ทุกอย่างที่ต้องรู้เกี่ยวกับข้อนี้อยู่ในคู่มือ guideline 2.1ของผม
2.3: Metadata ภาพหน้าจอที่ไม่ได้แสดงแอปจริง คำอธิบายที่สัญญาฟีเจอร์ที่ไม่มีอยู่ ภาพโปรโมตที่ไม่เป็นไปตามข้อกำหนด
3.1.1: In-App Purchase การปลดล็อกเนื้อหาหรือฟีเจอร์ดิจิทัลในแอป กฎทั่วไปคือต้องใช้ระบบซื้อในแอปของ Apple ข้อยกเว้นขึ้นอยู่กับแต่ละประเทศและมีการเปลี่ยนแปลง: อ่าน guidelines เวอร์ชันล่าสุดก่อนวางแผนใช้ช่องทางชำระเงินอื่น เรื่องทั้งหมดอยู่ในหน้าการสมัครสมาชิกในแอป iOS
3.1.2: Subscriptions แอปแบบสมัครสมาชิกต้องแสดงให้ชัดว่าผู้ใช้ได้อะไรและราคาเท่าไร ข้อผิดพลาดคลาสสิกของหน้าจอชำระเงินอยู่ใน paywall iOS: 7 ข้อผิดพลาดของมือใหม่
4.3: Spam แอปเหมือนแอปอื่นอีกเป็นพัน หรือไม่มีคุณค่ามากพอในตัวเอง นี่คือการรีเจ็กต์ที่แก้ยากที่สุด: ต้องป้องกันตั้งแต่ตอนเลือกไอเดีย ผมอธิบายละเอียดไว้ในคู่มือ guideline 4.3
5.1.1: Privacy การแจ้งข้อมูลที่เก็บไม่ตรงกับพฤติกรรมของแอป นโยบายความเป็นส่วนตัวไม่ครบ ขอสิทธิ์โดยไม่มีคำอธิบายที่ชัดเจน
จะตอบกลับการรีเจ็กต์ของ Apple อย่างไรไม่ให้เสียเวลาหลายวัน?
การรีเจ็กต์ไม่ใช่คำตัดสิน มันคือการส่งกลับไปกลับมา ขั้นตอนที่ได้ผลคือ:
- อ่านเหตุผลสองรอบ ข้อความจะอ้างถึง guideline และมักแนบภาพหน้าจอมาด้วย นักพัฒนาหลายคนตอบไม่ตรงประเด็นเพราะอ่านเร็วเกินไป
- หาสาเหตุที่แท้จริง ทั้งที่ Clic และ Nolera สาเหตุจริงไม่ใช่สิ่งที่ข้อความทำให้เข้าใจในตอนแรก ลองทำให้ปัญหาเกิดซ้ำในสภาพเดียวกับ reviewer: อุปกรณ์ประเภทเดียวกัน บัญชีใหม่ เปิดแอปครั้งแรก
- แก้ตามเหตุผลที่ถูกรีเจ็กต์ ไม่ใช่เรื่องอื่น นี่ไม่ใช่เวลาเพิ่มฟีเจอร์อีกสามอย่าง: ทุกการเปลี่ยนแปลงเพิ่มพื้นที่ให้ถูกตรวจ
- ตอบกลับใน App Store Connect อธิบายสิ่งที่คุณแก้ไขเป็นข้อเท็จจริงสั้นๆ สองประโยค โดยตอบกลับข้อความของ App Review
- อุทธรณ์เฉพาะเมื่อมั่นใจ Apple ให้คุณยื่นเรื่องต่อ App Review Boardได้ถ้าคิดว่าแอปถูกเข้าใจผิด โดยอุทธรณ์ได้ครั้งเดียวต่อการส่งที่ถูกรีเจ็กต์ การโต้แย้งการรีเจ็กต์ที่สมควรแล้วมีแต่เสียเวลาเปล่า
เรื่องระยะเวลา Apple ระบุว่ารีวิวการส่งอย่างน้อย 50% ภายใน 24 ชั่วโมง และ 90% ภายใน 48 ชั่วโมง สิ่งที่ทำให้กำหนดการยืดออกคือการรีเจ็กต์ ไม่ใช่คิวรอ: รายละเอียดอยู่ในระยะเวลาการอนุมัติ App Store ขั้นตอนทั้งหมดหลังโดนรีเจ็กต์อยู่ในหน้าแอปถูก Apple รีเจ็กต์
การรีเจ็กต์ที่หลีกเลี่ยงได้ทำให้เสียรอบรีวิวไปทั้งรอบ คำตอบที่ดีที่สุดสำหรับ Apple คือการส่งที่ไม่เหลืออะไรให้ติเลย
เช็กลิสต์ที่ผมใช้ก่อนส่งทุกครั้ง
สร้างขึ้นจากการโดนรีเจ็กต์ทีละครั้ง กับแอปของผมเอง:
- ทุกหน้าจอที่บังคับทดสอบแล้วบน iPhone ที่เล็กที่สุด ใหญ่ที่สุด และบน iPad ในโหมดความเข้ากันได้ ตามตารางของ guideline 4.0 design
- มีทางออกในทุกขั้นตอนของ onboarding แม้ในกรณีที่ทำไม่ผ่าน
- บัญชีเดโมในโน้ตสำหรับการรีวิว ถ้าแอปมีระบบล็อกอิน
- ทดสอบการซื้อใน sandbox แล้ว รวมถึงการกู้คืนการซื้อ
- ราคา ระยะเวลา และลิงก์ไปยังเงื่อนไขการใช้งานและนโยบายความเป็นส่วนตัว อยู่ในจุดที่ Apple กำหนด ในทุกภาษา
- อ่านนโยบายความเป็นส่วนตัวออนไลน์ซ้ำในวันที่ส่ง
- การแจ้งด้านความเป็นส่วนตัวตรงกับสิ่งที่แอปเก็บจริง รวมถึง privacy manifest
- หน้าจอก่อนขอสิทธิ์ไม่มีปุ่ม "อนุญาต"
- การขอคะแนนและการแจ้งเตือนวางไว้หลังจากผู้ใช้เห็นคุณค่าแล้ว และไม่ปลดล็อกอะไรเพื่อแลกกับคะแนน (guideline 3.2.2)
- ภาพโปรโมตและภาพหน้าจอที่แสดงแอปจริง รวมถึงในหน้าผลิตภัณฑ์แบบกำหนดเองของคุณ
ถ้านี่เป็นการเผยแพร่ครั้งแรกของคุณ หน้าเผยแพร่แอปบน App Storeรวบรวมทุกขั้นตอนก่อนส่งไว้แล้ว
เทมเพลตสำหรับอธิบายเส้นทางในแอปให้ App Review
ดาวน์โหลดเทมเพลตโน้ต App Review: มีคำแนะนำเป็นภาษาฝรั่งเศส โน้ตภาษาอังกฤษให้กรอก และโครงคำตอบเมื่อถูกรีเจ็กต์ เทมเพลตจะให้คุณระบุเวอร์ชัน เส้นทางผ่านหน้าจอต่างๆ และผลลัพธ์ที่คาดหวัง เก็บไว้เฉพาะสิ่งที่มีอยู่จริงใน build ของคุณ
แทนที่ "แอปบันทึกข้อมูลได้ถูกต้อง" ด้วยสถานการณ์ที่ทำซ้ำได้: หน้าจอเริ่มต้น การกระทำ ปิดแล้วเปิดแอปใหม่ ผลลัพธ์ที่ยังอยู่ หลังโดนรีเจ็กต์ ให้ระบุพฤติกรรมที่แก้แล้วและอุปกรณ์ที่คุณใช้ตรวจสอบ ถ้าคุณทำให้ปัญหาเกิดซ้ำไม่ได้ ให้อธิบายว่าขาดอะไรถึงจะทำซ้ำได้
ข้อมูลล็อกอินของบัญชีเดโมให้กรอกในช่องเฉพาะของ App Store Connect ห้ามใส่ในไฟล์สาธารณะเด็ดขาด คุณเตรียมหลักฐานได้ด้วยตารางทดสอบ TestFlight และดูเทมเพลตฟรีทั้งห้าแบบได้
หลีกเลี่ยงการรีเจ็กต์เหล่านี้ก่อนส่ง
Apple Review Kit รวมเช็กลิสต์ก่อนส่งของผม การรีเจ็กต์จาก Apple ที่ผมแก้แล้ว และ skills ของ Claude Code ที่ช่วยตรวจโปรเจกต์ paywall และหน้าแอปของคุณก่อนส่ง
แอปของคุณโดนรีเจ็กต์ไปแล้ว? kit นี้ช่วยให้คุณหากฎที่ถูกอ้างถึง สิ่งที่กฎนั้นต้องการ และตัวอย่างการแก้ไขกับการตอบกลับ ถ้าอยากให้เราดูเรื่องของคุณด้วยกันตั้งแต่ตอนนี้ จองเวลาหนึ่งชั่วโมงกับผม ผ่านวิดีโอคอล
ไม่มีใครรับประกันได้ว่า Apple จะอนุมัติแอปของคุณ การเริ่มจากการรีเจ็กต์ที่เคยเจอมาแล้วแค่ช่วยลดโอกาสที่คุณจะพลาดแบบเดียวกัน
ยังไม่ได้ส่งแอป? การวินิจฉัยฟรีจะส่งเช็กลิสต์กันรีเจ็กต์จาก Apple ของผมให้คุณ และบอกว่ายังเหลืออะไรต้องทำ ถ้าคุณยังสร้างแอปอยู่ หน้าแรกจะแสดงวิธีสร้างแอปมือถือโดยคำนึงถึงการรีเจ็กต์เหล่านี้ไว้ด้วย
คำถามที่พบบ่อย
ทำไมแอปของฉันถึงถูก Apple รีเจ็กต์?
แทบทุกครั้งมีเหตุผลชัดเจนที่เขียนไว้ในข้อความจากการรีวิว: เป็น guideline ที่มีหมายเลขกำกับ และมักแนบภาพหน้าจอมาด้วย สำหรับแอปตัวแรก เหตุผลที่เจอบ่อยที่สุดคือแอปที่ยังทำไม่เสร็จ (2.1) การแจ้งเรื่องความเป็นส่วนตัวไม่ถูกต้อง (5.1.1) และ metadata ที่ทำให้เข้าใจผิด (2.3.2) นอกจากนี้ยังมีการชำระเงินที่เลี่ยงระบบซื้อในแอป (3.1.1) และการขอให้ให้คะแนนผิดจังหวะ (5.6.3)
ทำไมแอปถูกรีเจ็กต์ทั้งที่ใช้งานได้บน iPhone ของฉัน?
เพราะ reviewer อาจทดสอบในสภาพที่ต่างจากของคุณ กับ Solys นาฬิกาปลุกมินิเกมของผม เขาทดสอบบน iPad ซึ่งแอป iPhone รันในโหมดความเข้ากันได้ในหน้าต่างที่เล็กกว่า เดโมจึงไม่มีทางชนะได้ วิธีแก้คือ เดโมที่คำนวณจากขนาดหน้าจอจริง และลิงก์ให้ข้ามได้ถ้าเล่นไม่ผ่าน
ควรทำอย่างไรเมื่อ Apple รีเจ็กต์แอป?
อ่านเหตุผลสองรอบ แล้วหาสาเหตุที่แท้จริงโดยทำให้ปัญหาเกิดซ้ำในสภาพเดียวกับ reviewer: อุปกรณ์ประเภทเดียวกัน บัญชีใหม่ เปิดแอปครั้งแรก แก้ตามเหตุผลนั้นและไม่แก้อย่างอื่น เพราะทุกการเปลี่ยนแปลงเพิ่มพื้นที่ให้ถูกตรวจ จากนั้นตอบกลับใน App Store Connect ด้วยข้อเท็จจริงสองประโยคเกี่ยวกับสิ่งที่คุณแก้
โต้แย้งการรีเจ็กต์ของ Apple ได้ไหม?
ได้ แต่เฉพาะเมื่อคุณมั่นใจจริงๆ Apple ให้คุณยื่นเรื่องต่อ App Review Boardได้ถ้าคิดว่าแอปถูกเข้าใจผิด โดยอุทธรณ์ได้ครั้งเดียวต่อการส่งที่ถูกรีเจ็กต์ การโต้แย้งการรีเจ็กต์ที่สมควรแล้วมีแต่เสียเวลาเปล่า ไม่อย่างนั้นก็แก้ตามเหตุผลแล้วตอบกลับใน App Store Connect
การถูกรีเจ็กต์ทำให้เผยแพร่ช้าลงไหม?
ใช่ Apple ระบุว่ารีวิวการส่งอย่างน้อย 50% ภายใน 24 ชั่วโมง และ 90% ภายใน 48 ชั่วโมง ดังนั้นสิ่งที่ทำให้กำหนดการยืดออกคือการรีเจ็กต์ ไม่ใช่คิวรอ การรีเจ็กต์ที่หลีกเลี่ยงได้ทำให้เสียรอบรีวิวไปทั้งรอบ รายละเอียดเรื่องระยะเวลาอยู่ในระยะเวลาการอนุมัติ App Store
ควรตรวจอะไรบ้างก่อนส่งแอปให้ Apple?
ทดสอบทุกหน้าจอที่บังคับบน iPhone ที่เล็กที่สุด ใหญ่ที่สุด และ iPad ในโหมดความเข้ากันได้ แล้วทดสอบการซื้อใน sandbox รวมถึงการกู้คืนการซื้อ อ่านนโยบายความเป็นส่วนตัวออนไลน์ซ้ำในวันที่ส่ง และใส่บัญชีเดโมไว้ในโน้ตสำหรับการรีวิวถ้าแอปมีระบบล็อกอิน เช็กลิสต์นี้สร้างขึ้นจากการโดนรีเจ็กต์ทีละครั้ง กับแอปของผมเอง