“Rejected” หรือ “รีเจ็ค” เป็นคำที่นักพัฒนาแอพพลิเคชั่นสำหรับอุปกรณ์พกพาไม่อยากได้ยินเลย
ซึ่งทางฝั่ง iOS จะมีการรีเจ็คสูงกว่าฝั่งของ Android มาก ปัญหามันก็อยู่ที่ว่า ทำไม Apple ถึงรีเจ็คแอพพลิเคชั่นของเรา?
ทาง Apple คงได้รับคำถามนี้กันอย่างท่วมท้น เลยรวบรวมกรณีที่เขาใช้ในการรีเจ็คแอพกันบ่อยๆ มาเผยแพร่ให้นักพัฒนาเอาไปดูกัน จะได้ไม่ต้องโดนรีเจ็คอีก (สงสัยทางคนตรวจก็คงเริ่มขี้เกียจเหมือนกันครับ ฮา)
1. แอพอุดมไปด้วยข้อผิดพลาด (Crashes and Bugs)
อันนี้ค่อนข้างแน่นอนว่าจะผ่านการตรวจไปไม่ได้แน่นอน แอพที่ทดสอลแล้วว่ามีข้อผิดพลาด (หรือ “บั้ก”) ที่ร้านแรงที่สุดคงแอพพัง (Crash) ออกมาที่หน้า Home screen จะโดนรีเจ็ค
วิธีแก้ก็คือทดสอบแอพพลิเคชั่นให้รัดกุม มากกว่าที่จะเสียเวลารอตรวจเพื่อที่จะเจอข้อผิดพลาดจาก App Store
2. ส่วนติดต่อผู้ใช้ห่วย ไม่ตรงตามเกณฑ์ของ Apple (Substandard User Interface)
เรื่องของหน้าตา และประสบการณ์การใช้งาน (หรือที่เรียกกันว่า “User Experience”) ของแอพพลิเคชั่นจาก Apple จะมีแนวทางไว้ให้ศึกษาอยู่แล้ว ไม่ว่าจะใช้ภาษา Native อย่าง Objective-C หรือ Swift หรือใช้ Framework อื่นๆ อย่าง Unity, PhoneGap, หรือ Ionic ก็ควรที่จะทำตามแนวทางที่เขาวางกรอบไว้
ดู Design Guide ของ Apple ที่นี่ หรือ อะไรควร อะไรไม่ควรในการออกแบบ UI ที่นี่
3. ลิงค์ไม่ติด (Broken Links)
Link ทุกอันที่เราใส่ไว้ในแอพพลิเคชั่นต้องสามารถใช้งานได้
ในที่นี้รวมถึง link ติดต่อฝ่าย support หรือแม้แต่เอกสารอ้างอิงทางกฎหมายที่เกี่ยวข้องกับแอพด้วยครับ
4. ลืม Content จำลองไว้ในแอพ (Placeholder Content)
ในการสร้างแอพพลิเคชั่น ผมชอบใช้ content พวก place holder (ข้อความที่ไม่มีความหมายจาก lorem ipsum หรือภาพสีเทาเพื่อบอกขนาดของตัวภาพ) เพื่อสร้าง “ตัวต้นแบบ” ของแอพอย่างรวดเร็ว
แต่ถ้าคุณลืมเอาข้อความ หรือพวกภาพดังกล่าวออกจากแอพ ก่อนส่งให้ App Store พิจารณาล่ะก็ เขาจะถือว่าแอพนี้ยังไม่พร้อม (เพราะดันมีข้อมูลจำลองอยู่นี่นา) และรีเจ็คครับ
5. ข้อมูลไม่ครบ (Incomplete Information)
อันนี้สำคัญ เพราะบางแอพพลิเคชั่นไม่สามารถทดสอบโดยการเปิดใช้ในเครื่องอย่างเดียวได้ ผมสรุปมาให้ 2 กรณีครับ
กรณีที่ 1 แอพที่ต้องลงชื่อเข้าใช้ (sign in หรือ log in)
สำหรับแอพที่ต้องมีการลงชื่อเข้าใช้ ต้องมีการเตรียมบัญชีผู้ใช้สำหรับทดสอบให้ทางผู้ตรวจด้วย
Apple อยากตรวจทุกซอกมุม ที่จะถูกใช้จริงตอนที่แอพถูกปล่อยให้ดาวน์โหลดแล้ว ถ้าเขาไม่สามารถลงชื่อเข้าใช้ได้ ก็จะรีเจ็คกลับมา (ไม่ยอมให้ตรวจนิ)
กรณีที่ 2 ต้องการสภาพแวดล้อมพิเศษเพิ่มเติม
บางแอพพลิเคชั่นออกแบบมาให้ทำงานกับอุปกรณ์อื่นๆ อย่างเช่น แอพควบคุมโดรน หรือแอพที่สั่งถ่ายภาพกับกล้อง GoPro
ถ้าเป็นจำพวกนี้ต้องมี link ไปยังวิดีโอที่สาธิตการใช้งานให้ทีมตรวจสอบดู และทำตามได้ด้วย ไม่งั้น ไม่ผ่านครับ
6. มีโฆษณา แต่ไม่ดำเนินการให้ถูกต้อง (Advertisements)
สำหรับแอพที่มีการแทรกโฆษณามาในแอพ ในขั้นตอนการส่งตรวจ จะมีการถามข้อมูลเกี่ยวกับ Advertising Identifier (IDFA) ด้วย
ซึ่งถ้าคุณระบุว่ามีการใช้งาน IDFA แต่ตัวโฆษณากลับไม่ได้ใช้งานตรงตามที่กำหนด ก็จะถูกรีเจ็ค
ทีมตรวจสอบบอกว่าให้ทดสอบว่าตัวโฆษณาแสดงผลได้อย่างถูกต้องบนอุปกรณ์ iOS ให้เรียบร้อยก่อนส่งให้ตรวจครับ
และในกรณีที่เราไม่ได้แจ้งว่าแอพเรามี Ads แบบ IDFA (แต่จริงๆ เรามี) ทีมตรวจสอบจะเปลี่ยนสถานะของการพิจารณาเป็น Invalid Binary แทน
7. การแสดงผลเว็บไซต์ หรือเนื้อหาจากเว็บที่ไม่เหมาะสมกับ iOS (Web clippings, content aggregators, or a collections of links)
การทำงานของแอพส่วนใหญ่จะมีการนำ content หรือข้อมูลจาก Internet มาแสดง ซึ่งถ้าการแสดงผลข้อมูลนั้น ไม่เหมาะสมที่จะแสดงบนอุปกรณ์ iOS ก็มีสิทธ์เหมือนกัน
ส่วนใหญ่ที่พบก็อาจจะเป็นแอพที่ดึง feed เนื้อหาข่าว หรือรวม link จาก internet มาแสดงผลนั่นเอง ซึ่งทีมตรวจสอบ จะพิจารณาเป็นพิเศษว่าเหมาะสมหรือไม่
8. ส่งแอพคล้ายๆ กันบ่อยๆ (Repeated Submission of Similar Apps)
การส่งแอพลักษณะคล้ายๆ กัน (ยกตัวอย่างเช่นแอพดูทีวี ช่อง 3 แล้วก็สร้างแอพอีกตัวไว้ดูช่อง 7 โดยการเปลี่ยนรายละเอียดด้านในนิดเดียว) อาจจะโดนพิจารณาให้แอพทั้งหมดถูกรีเจ็ค
9. รายละเอียดที่แสดงไม่ชัดเจน (Inaccurate Descriptions)
อันนี้จะเป็นส่วนข้อมูลที่ต้องให้กับทาง App Store ครับ
ถ้าคำอธิบายความสามารถของแอพเรากำกวม ไม่ชัดเจนว่าแอพเราจริงๆ แล้วมีประโยชน์ หรือทำอะไรกันแน่ อาจถูกพิจารณาให้โดนรีเจ็ค
10. แอพทำไม่ได้อย่างที่โม้ (Misleading Users)
ในบางครั้งเราอธิบาย, ให้รายละเอียด, หรือโฆษณาแอพของเราอย่างสวยหรู แต่ตัวแอพจริงๆ กลับทำไม่ได้อย่างที่อ้างไว้ ก็จะถูกรีเจ็ค
11. แอพไม่มีคุณค่าพอที่จะอยู่บน App Store (Not enough lasting value)
ถ้าแอพพลิเคชั่นของเราถูกพิจารณาว่ามีความสามารถในการทำงานน้อยมาก (อย่างเช่น กดปุ่มแล้วมีคำว่า “สวัสดี” โผล่ขึ้นมา) ก็จะถูกรีเจ็ค
สัดส่วนของกรณีแอพพลิเคชั่นโดนรีเจ็ค
กราฟด้านล่างนี้ Apple สรุปมาให้ดูว่าในรอบ 7 วันมีแอพโดนรีเจ็คเพราะอะไรบ้าง
ที่มา – Apple Developer