Guideline 2.1 App Store: เข้าใจและแก้ไขเมื่อแอปถูกปฏิเสธ
โดย Mehdi Azizi
อัปเดตเมื่อ , 9 นาที
Guideline 2.1 App Completeness ครอบคลุมอะไร Apple ทดสอบแอปอย่างไร ตอบ reviewer อย่างไร พร้อมเคสถูกปฏิเสธจริง 3 ครั้งจากแอปของผม
Guideline 2.1 คือกฎที่ทำให้แอปถูกปฏิเสธมากที่สุด Apple เขียนไว้เองในหน้า App Review ว่าโดยเฉลี่ยแล้ว ปัญหาที่ยังไม่ได้รับการแก้ไขมากกว่า 40% เกี่ยวกับข้อ 2.1 ซึ่งครอบคลุมเรื่องแอปแครช เนื้อหาชั่วคราว และข้อมูลที่ไม่ครบถ้วน
บทความนี้พูดถึงกฎข้อนี้ข้อเดียว: มันครอบคลุมอะไร มีสองรูปแบบอย่างไร reviewer ทดสอบแอปของคุณอย่างไร และควรตอบเขาอย่างไร พร้อมเคสถูกปฏิเสธสามครั้งที่ผมเจอกับแอปของตัวเอง ถ้าอยากเห็นภาพรวมของเหตุผลการปฏิเสธทั้งหมด แนะนำให้อ่านทำไม Apple ถึงปฏิเสธแอปแทน
Guideline 2.1 App Completeness คืออะไร?
Guideline 2.1 กำหนดให้แอปที่ส่งให้ Apple ต้องเป็นเวอร์ชันสุดท้ายที่สมบูรณ์: ไม่แครช ไม่มีลิงก์เสีย ไม่มีข้อความชั่วคราว มีบัญชีเดโมถ้าแอปต้องล็อกอิน และ in-app purchase ต้องมองเห็นได้และใช้งานได้จริง ถ้า reviewer ไม่สามารถใช้งานแอปของคุณได้จนสุดทาง ก็จะโดนปฏิเสธด้วยข้อ 2.1
ข้อความทางการอยู่ใน App Review Guidelines หมวด 2 "Performance" แบ่งเป็นสองข้อย่อย
2.1(a) กำหนดให้ทุกการส่งต้องเป็นเวอร์ชันสุดท้าย มี metadata ครบ และ URL ใช้งานได้ ข้อความชั่วคราว เว็บไซต์ว่างเปล่า และเนื้อหาชั่วคราวทุกอย่างต้องถูกเอาออกก่อนส่ง แอปต้องผ่านการทดสอบบนอุปกรณ์จริงเรื่องบั๊กและความเสถียร ถ้าแอปต้องล็อกอิน คุณต้องให้บัญชีเดโมและเปิดเซิร์ฟเวอร์ทิ้งไว้ โหมดเดโมในตัวแอปใช้แทนบัญชีนี้ได้ แต่ต้องได้รับอนุญาตจาก Apple ก่อน และต้องแสดงทุกฟังก์ชันของแอป ประโยคที่สรุปทุกอย่างคือ: "We will reject incomplete app bundles and binaries that crash"
2.1(b) เกี่ยวกับ in-app purchase: ต้องครบถ้วน อัปเดต reviewer มองเห็นได้ และใช้งานได้ ถ้ารายการซื้อที่ตั้งค่าไว้ใน App Store Connect หาไม่เจอในแอป คุณต้องอธิบายเหตุผลไว้ใน review notes
สิ่งที่ Guideline 2.1 ครอบคลุมในทางปฏิบัติ
ในทางปฏิบัติ การปฏิเสธด้วยข้อ 2.1 จะเกิดจากเหตุผลข้อใดข้อหนึ่งต่อไปนี้:
- แอปแครช ตอนเปิดแอป หลังผู้ใช้ปฏิเสธ permission หรือตอนไม่มีเน็ต แค่ครั้งเดียวก็พอแล้ว
- ลิงก์เสีย นโยบายความเป็นส่วนตัว ข้อกำหนดการใช้งาน หน้าซัพพอร์ต: ทุก URL ที่คุณระบุไว้จะถูกเปิดดู
- ฟังก์ชันที่เข้าถึงไม่ได้ ปุ่มที่กดแล้วไม่ไปไหน หน้าจอบังคับที่ผ่านไม่ได้ onboarding ที่ไม่มีทางออก แบบที่ร้ายที่สุดคือแบบที่มองไม่เห็นบนมือถือของคุณเอง
- บัญชีเดโมไม่มีหรือหมดอายุ reviewer ติดอยู่ที่หน้าล็อกอิน หรือบัญชีที่ให้ไว้ใช้ไม่ได้แล้ว หรือเซิร์ฟเวอร์ปิดอยู่
- เนื้อหาเติมช่องว่าง Lorem ipsum, "เร็วๆ นี้", หน้าจอว่าง, ข้อมูลทดสอบที่มองเห็นได้
- หา in-app purchase ไม่เจอ subscription มีอยู่ใน App Store Connect แต่ reviewer หาหน้าที่ขายไม่เจอ หรือการซื้อล้มเหลวใน sandbox ข้อผิดพลาดที่พบบ่อยที่สุดของหน้าจ่ายเงินอยู่ในpaywall iOS: 7 ข้อผิดพลาดของมือใหม่
2.1 Information Needed กับ 2.1(a) ต่างกันอย่างไร?
ข้อความจาก Apple ไม่ได้มีหัวข้อเหมือนกันทั้งหมด และความต่างนี้ทำให้วิธีตอบของคุณเปลี่ยนไป
"Guideline 2.1 - Information Needed" หมายความว่า reviewer รีวิวไม่จบและมีคำถามถึงคุณ ขาดข้อมูลล็อกอิน คำอธิบาย หรือวิธีเข้าถึงฟังก์ชันบางอย่าง ยังไม่ใช่การยืนยันว่าเจอบั๊ก แต่เป็นคำขอ บางครั้งแค่ตอบให้ชัดเจนใน App Store Connect ก็พอ แต่ถ้าคำถามนั้นเผยให้เห็นว่ามีจุดติดจริงในแอป คุณต้องส่ง build ใหม่
"Guideline 2.1(a) - Performance - App Completeness" หมายความว่า reviewer เจอปัญหาจริง: แอปแครช บั๊ก หรือหน้าจอไม่ตอบสนอง ข้อความมักจะระบุอุปกรณ์ที่ใช้ และมักแนบภาพหน้าจอมาด้วย กรณีนี้คุณต้องแก้ไข ส่ง build ใหม่ แล้วค่อยตอบกลับ
Apple ทดสอบแอปของคุณอย่างไร
ลองคิดแบบ reviewer ดู มีสามจุดที่สำคัญ
เขาทดสอบบนอุปกรณ์ที่คุณอาจไม่มี ข้อความปฏิเสธมักระบุรุ่นมาด้วย กฎข้อ 2.4.1 ระบุว่าแอป iPhone ควรรันบน iPad ได้เท่าที่ทำได้ และแอปที่ออกแบบมาสำหรับ iPhone จะแสดงผลบน iPad ในโหมด compatibility ในหน้าต่างขนาด iPhone การปฏิเสธข้อ 2.1 ครั้งล่าสุดของผมมาจาก iPad Air: ถ้าคุณทดสอบแค่บน iPhone ของตัวเอง คุณจะไม่เห็นสิ่งที่ reviewer เห็น
เขาเริ่มจากการเปิดแอปครั้งแรก แอปใหม่ ไม่มี cache ไม่มี session ไม่มีอัปเดตที่ดาวน์โหลดมา
เครือข่ายต้องใช้งานได้บน IPv6 อย่างเดียว กฎข้อ 2.5.5 ซึ่งอยู่ใกล้กับ guideline 2.5.4 เรื่อง background modes กำหนดให้แอปทำงานได้เต็มที่บนเครือข่าย IPv6 อย่างเดียว และหน้าซัพพอร์ตของ Apple เรื่อง IPv6 ก็ระบุว่าเป็นข้อบังคับสำหรับทุกแอปที่ส่งตั้งแต่วันที่ 1 มิถุนายน 2016 ความเสี่ยงมาจากที่อยู่ IPv4 ที่เขียนฝังไว้ในโค้ด Apple แนะนำให้ทดสอบบนเครือข่าย IPv6 อย่างเดียว โดยปิดข้อมูลมือถือ
ถ้าอยากจำลองสภาพเหล่านี้ก่อนส่ง วิธีที่ง่ายที่สุดคือใช้ TestFlight บนหลายอุปกรณ์ ดูได้ที่ TestFlight: ทดสอบแอป iPhone ของคุณ
การถูกปฏิเสธสามครั้งของผม และสาเหตุที่แท้จริง
การถูกปฏิเสธสามครั้งล่าสุดกับแอปของผมเอง พร้อมสาเหตุที่แท้จริง
Solys: เดโมมินิเกมที่ไม่มีทางชนะได้บน iPad
Solys คือแอปนาฬิกาปลุกที่มีมินิเกมของผม วันที่ 18 สิงหาคม 2026 build หนึ่งถูกปฏิเสธด้วย "2.1 Information Needed": Apple ขอวิธีผ่านภารกิจในเกม reviewer ทดสอบบน iPad Air โดยใช้แอป iPhone ในโหมด compatibility
สาเหตุจริงอยู่ที่เดโมมินิเกมใน onboarding ความสูงของสิ่งกีดขวางถูกเขียนเป็นค่า point ตายตัว พอเจอความสูงของการ์ดที่มีบน iPad ในโหมด compatibility ช่องทางผ่านเลยแคบกว่าตัวละคร: เดโมนี้ไม่มีทางชนะได้ และปุ่ม "ดำเนินการต่อ" จะเปิดใช้งานเฉพาะตอนชนะเท่านั้น ไม่มีทางออก: reviewer จึงไม่ได้เห็นแอปเลย
วิธีแก้: ใช้ขนาดที่เป็นสัดส่วนกับขนาดจริงที่วัดได้ของการ์ด และเพิ่มลิงก์ "ข้ามเดโม" ที่จะโผล่มาหลังแพ้
บทเรียน: ทุกขั้นตอนที่ต้องอาศัยฝีมือต้องมีทางออกแบบไม่มีเงื่อนไข และทุกหน้าจอบังคับต้องทดสอบบนหน้าจอเล็กที่สุดที่รองรับ และบน iPad ในโหมด compatibility ด้วย
Nolera: การแก้ไขที่ reviewer มองไม่เห็น
วันที่ 17 กันยายน 2026 Nolera ถูกปฏิเสธหลังรีวิวบน iPad Air ข้อความรวมข้อ 2.1(a) กับประเด็นอื่นๆ ไว้ด้วยกัน การแก้ปัญหาที่ถูกแจ้งมาถูกส่งผ่านการอัปเดตจากระยะไกล (OTA) โดยไม่มี build ใหม่
ปัญหาคือ: ตอนเปิดแอปครั้งแรกสุด reviewer จะเห็นโค้ดที่ฝังอยู่ใน build ไม่ใช่อัปเดตที่ดาวน์โหลดมาทีหลัง สำหรับเขาแล้ว การแก้ไขนั้นไม่มีอยู่จริง
บทเรียน: การแก้ไขที่ตั้งใจให้ reviewer เห็นต้องอยู่ใน binary ที่ส่งให้ Apple
Clic: สาเหตุไม่ได้อยู่ในแอป
วันที่ 16 กันยายน 2026 Clic ถูกปฏิเสธ ตัวแอปเองอัปเดตแล้ว สาเหตุจริงอยู่ที่อื่น: นโยบายความเป็นส่วนตัวที่เผยแพร่ออนไลน์ยังไม่อัปเดตเรื่องผู้ให้บริการ AI ที่ใช้ การปฏิเสธครั้งนี้เข้าข่ายเรื่องความเป็นส่วนตัวมากกว่าข้อ 2.1 แต่สะท้อนเรื่องเดียวกัน: สาเหตุที่แท้จริงไม่ได้เป็นอย่างที่ข้อความทำให้เข้าใจเสมอไป
บทเรียน: ตรวจสอบสิ่งที่อยู่ออนไลน์ ไม่ใช่สิ่งที่อยู่ใน repo ของคุณ เปิดทุก URL ที่ระบุไว้ในวันที่ส่ง
ควรตอบอะไรใน Resolution Center
หลังถูกปฏิเสธ การส่งของคุณจะเปลี่ยนสถานะเป็น "Unresolved Issues" และการสนทนากับ Apple จะเกิดขึ้นในส่วน App Review ของแอป ซึ่งยังเรียกกันว่า Resolution Center ขั้นตอนทางการในการตอบกลับ App Review อนุญาตให้ส่งข้อความได้สูงสุด 4,000 ตัวอักษร พร้อมไฟล์แนบหนึ่งไฟล์
เขียนเป็นภาษาอังกฤษ แบบเรียบๆ reviewer ต้องการข้อมูลสามอย่าง: อะไรที่ทำให้ติด อะไรที่เปลี่ยนไป และตรวจสอบได้อย่างไร นี่คือเทมเพลตที่ผมใช้ (เปลี่ยนหมายเลข build และรายละเอียดการแก้ไขเป็นของคุณ):
Hello,
Thank you for your review.
Issue: the onboarding game demo could not be completed on iPad
(iPhone app running in compatibility mode), so the user could
not continue.
Fix in build 1.0.3 (42):
- The game layout now scales to the measured screen size.
- A "Skip demo" link appears after a failed attempt, so the
onboarding can always be completed.
How to verify: launch the app, start the onboarding demo,
lose once, then tap "Skip demo".
A screen recording is attached.
Best regards,
กฎบางข้อ:
- ตอบคำถามที่ถูกถาม ถ้าเป็น "Information Needed" ให้เริ่มด้วยคำตอบตรงๆ ไม่ใช่เริ่มด้วยบริบท
- ระบุ build และบอกเส้นทางไปยังหน้าจอที่แก้ไขแล้ว ในสามหรือสี่ขั้นตอน
- แนบหลักฐาน วิดีโอสั้นๆ บนอุปกรณ์ที่ใกล้เคียงกับของ reviewer ช่วยลดการส่งกลับไปกลับมาอีกรอบ
- ไม่ต้องแก้ต่าง การอุทธรณ์ต่อ App Review Board มีอยู่จริง แต่ถ้าการปฏิเสธข้อ 2.1 นั้นสมเหตุสมผล มันจะแค่ทำให้รอนานขึ้น รายละเอียดเรื่องระยะเวลาอยู่ในระยะเวลาการรีวิว App Store
ถ้าอ่านแล้วยังไม่เข้าใจเหตุผล ขั้นตอนทั้งหมดอยู่ในหน้าแอปถูก Apple ปฏิเสธ
Review notes และบัญชีเดโม
ส่วน App Review Information ของเวอร์ชันคุณใน App Store Connect คือเกราะป้องกันข้อ 2.1 ที่ดีที่สุด ตามข้อมูลอ้างอิงทางการของช่องเหล่านี้ ประกอบด้วย:
- Sign-in required: ชื่อผู้ใช้และรหัสผ่านของบัญชีเดโม บัญชีนี้ต้องไม่หมดอายุ ถ้าแอปของคุณใช้การล็อกอินผ่านบริการภายนอก ให้ใส่ข้อมูลล็อกอินของบริการนั้น
- Notes: สูงสุด 4,000 ไบต์ เป็นภาษาอะไรก็ได้ ทุกอย่างที่ช่วยในการทดสอบ
- Contact: ชื่อ อีเมล และเบอร์โทรในรูปแบบสากล
สิ่งที่ผมใส่ใน notes ทุกครั้ง:
- เส้นทางไปยัง in-app purchase แต่ละรายการ ตามที่กฎข้อ 2.1(b) กำหนด
- ฟังก์ชันที่ไม่ชัดเจน: ท่าทางการใช้งาน permission หรือเนื้อหาที่ผูกกับเวลา
- สถานะของบัญชีเดโม: สมัครสมาชิกแล้วหรือยัง มีข้อมูลกรอกไว้แล้วหรือว่างเปล่า
- ข้อจำกัดที่ทราบ: สำหรับฮาร์ดแวร์หรือสภาพแวดล้อมที่จำลองได้ยาก Apple ขอให้เตรียมวิดีโอไว้
และกฎอีกข้อที่อยู่นอกฟอร์ม: เปิดเซิร์ฟเวอร์ทิ้งไว้ตลอดการรีวิว เซิร์ฟเวอร์ทดสอบที่ปิดอยู่ ก็คือบัญชีเดโมที่ใช้ไม่ได้ ซึ่งแปลว่าโดนปฏิเสธข้อ 2.1
เช็กลิสต์ข้อ 2.1 ก่อนส่งแอป
เช็กลิสต์ที่ผมใช้ก่อนส่งทุกครั้ง สร้างจากการถูกปฏิเสธของผมเอง:
- ติดตั้งแอปใหม่ตั้งแต่ต้นบน iPhone ที่เล็กที่สุดที่รองรับ ใหญ่ที่สุด และ iPad ในโหมด compatibility
- ใช้งาน onboarding จนจบ โดยตั้งใจทำพลาดในทุกขั้นตอนที่ต้องอาศัยฝีมือ
- ทุกหน้าจอบังคับมีทางออกแบบไม่มีเงื่อนไข
- ไม่มีการแก้ไขสำหรับการรีวิวที่ส่งผ่านการอัปเดตจากระยะไกลเพียงอย่างเดียว
- เปิดแอปในโหมดเครื่องบิน แล้วตามด้วยบนเครือข่าย IPv6 อย่างเดียว
- เปิดทุก URL ที่ระบุไว้ในวันเดียวกัน: ความเป็นส่วนตัว ข้อกำหนด ซัพพอร์ต
- ไม่มีข้อความชั่วคราว หน้าจอว่าง หรือข้อมูลทดสอบที่มองเห็นได้
- ทดสอบบัญชีเดโมในวันที่ส่ง ไม่มีวันหมดอายุ เซิร์ฟเวอร์เปิดอยู่
- in-app purchase ทุกรายการหาเจอจากในแอปและทดสอบใน sandbox แล้ว รวมถึงการ restore
- Review notes ระบุว่า in-app purchase และฟังก์ชันที่ไม่ชัดเจนอยู่ตรงไหน
ถ้านี่คือการเผยแพร่แอปครั้งแรกของคุณ ทุกขั้นตอนก่อนหน้านี้อยู่ในเผยแพร่แอปบน App Store
ส่งแอปไปพร้อมกับคนที่เคยโดนปฏิเสธแบบนี้มาแล้ว
Apple Review Kit รวบรวมเช็กลิสต์ก่อนส่งของผม เทมเพลต notes สำหรับผู้ทดสอบ และ skills ของ Claude Code ที่ช่วยตรวจโปรเจกต์ของคุณก่อนส่ง
เพิ่งโดนปฏิเสธข้อ 2.1 มาใช่ไหม? ชุดนี้ยังช่วยให้คุณหากฎที่ถูกอ้างถึง สิ่งที่กฎนั้นต้องการ และตัวอย่างการแก้ไขกับการตอบกลับได้ด้วย ถ้าอยากให้เราดูเรื่องของคุณด้วยกันตอนนี้เลย จองเวลาหนึ่งชั่วโมงกับผม ผ่านวิดีโอคอล
ไม่มีใครรับประกันได้ว่า Apple จะอนุมัติแอปของคุณ สิ่งที่ผมทำได้คือช่วยให้คุณหลีกเลี่ยงการปฏิเสธข้อ 2.1 ที่ผมเคยเสียรอบการรีวิวไปแล้ว
ยังไม่ได้ส่งแอปใช่ไหม? การวินิจฉัยฟรีจะส่งเช็กลิสต์กันการปฏิเสธของ Apple ของผมให้คุณ รวมถึงข้อ 2.1 และบอกว่ายังเหลืออะไรต้องทำก่อนส่ง ถ้าคุณยังอยู่ในช่วงสร้างแอป หน้าแรกจะแสดงวิธีสร้างแอปมือถือโดยคิดถึงการรีวิวตั้งแต่เริ่มต้น
คำถามที่พบบ่อย
"Guideline 2.1 - Information Needed" หมายความว่าอะไร?
reviewer รีวิวไม่จบและมีคำถามถึงคุณ: ข้อมูลล็อกอิน คำอธิบาย หรือวิธีเข้าถึงฟังก์ชันบางอย่าง ตอบให้ชัดเจนใน App Store Connect ถ้าคำถามเผยให้เห็นจุดติดจริงในแอป เหมือนกรณี Solys ให้แก้ไขแล้วส่ง build ใหม่
ต้องส่ง build ใหม่หลังถูกปฏิเสธข้อ 2.1 ไหม?
ถ้าเป็นแอปแครช บั๊ก หรือหน้าจอที่ติด ต้องส่ง: การแก้ไขต้องอยู่ใน binary การอัปเดตจากระยะไกลไม่พอ เพราะ reviewer เห็นโค้ดที่ฝังอยู่ตอนเปิดแอปครั้งแรก ถ้าแค่ขาดข้อมูล การตอบกลับอย่างเดียวอาจเพียงพอ
แอปของผมต้องล็อกอิน ต้องให้อะไรกับ reviewer?
บัญชีเดโมที่ไม่หมดอายุ กรอกไว้ในส่วน App Review Information และเซิร์ฟเวอร์ที่เปิดอยู่ตลอดการรีวิว โหมดเดโมในตัวแอปใช้แทนบัญชีนี้ได้เฉพาะเมื่อได้รับอนุญาตจาก Apple ก่อน และต้องแสดงทุกฟังก์ชัน
การปฏิเสธข้อ 2.1 มาจากสิ่งอื่นนอกจากตัวแอปได้ไหม?
ได้ URL เสียในหน้าแอป บัญชีเดโมหมดอายุ เซิร์ฟเวอร์ปิด หรือ in-app purchase ตั้งค่าผิดก็เพียงพอแล้ว และบางครั้ง เหมือนกรณี Clic สาเหตุจริงอยู่ออนไลน์ ไม่ได้อยู่ในโค้ด: ตรวจสอบทุกอย่างที่ reviewer เปิดดูได้