ลงเกมใน App Store โดยไม่ใช้ Mac: บิลด์บนคลาวด์
วิธีที่เราพาเกม HTML5 จากคอมพิวเตอร์ Windows ไปถึงการรีวิวของ App Store ด้วย Capacitor, Codemagic และ TestFlight พร้อมความผิดพลาดที่ทำให้เราเสียบิลด์ไปหลายรอบ

ได้ คุณลงเกมใน App Store โดยไม่ใช้ Mac ได้ ยังต้องใช้ Mac อยู่ แต่เป็นการเช่า: เกม HTML5 ถูกห่อด้วย Capacitor บนพีซีของคุณ บริการคลาวด์อย่าง Codemagic คอมไพล์และเซ็นบนเครื่อง Mac ของเขา บิลด์ถูกส่งไปที่ App Store Connect และ TestFlight แล้วคุณทำหน้าร้าน ข้อมูลความเป็นส่วนตัว และการส่งรีวิวให้เสร็จในเบราว์เซอร์ สิ่งที่ข้ามไม่ได้คือ iPhone เพราะต้องมีคนเล่นบิลด์ก่อน Apple
เราทำแบบนี้จาก Windows กับเกมแอ็กชันของเราเอง Little Ninja Dash บิลด์คลาวด์ครั้งแรกที่สำเร็จใช้เวลาประมาณหกนาที และแอปถูกส่งเข้า App Review เมื่อวันที่ 19 ตุลาคม 2026 ซึ่งบันทึกของเราแสดงสถานะเป็น Waiting for Review คู่มือนี้ไม่ได้รายงานผลการรีวิว ข้อมูลเกี่ยวกับ Apple และ Codemagic มาจากหน้าทางการ ซึ่งอ่านเมื่อวันที่ 30 ตุลาคม 2026 ส่วนที่เหลือคือสิ่งที่บันทึกของเราจดไว้ รวมถึงส่วนที่ผิดพลาด
สิ่งที่ต้องมีเพื่อลงเกมใน App Store โดยไม่ใช้ Mac
- สมาชิก Apple Developer Program: 99 ดอลลาร์สหรัฐต่อปีสมาชิก สมัครได้ทั้งบุคคลและองค์กร องค์กรต้องมีหมายเลข D-U-N-S และเว็บไซต์สาธารณะ
- บัญชี Codemagic แพ็กเกจส่วนบุคคลแบบฟรีมีนาทีบิลด์ macOS M2 500 นาทีต่อเดือน และบิลด์ได้ทีละหนึ่งงาน หลังจากนั้นนาที Mac mini M2 คิดนาทีละ 0.095 ดอลลาร์สหรัฐ นาทีฟรีสำหรับผู้ใช้คนเดียว ไม่ใช่ทีม
- Git repository แบบส่วนตัวที่มีโปรเจกต์ของคุณ Codemagic บิลด์จาก repository ที่คุณเชื่อมไว้ สำหรับเทมเพลตของเรา repository ต้องเป็นแบบส่วนตัว เพราะแบบสาธารณะถือเป็นการแจกจ่ายซอร์สโค้ด ซึ่งไลเซนส์ห้าม
- iPhone ที่มีแอป TestFlight สำหรับทดสอบบิลด์จริง
- เกมที่เล่นออฟไลน์ได้จากโฟลเดอร์ของตัวเอง ห่อด้วย Capacitor แล้ว
ตั้งแต่วันที่ 28 เมษายน 2026 Apple กำหนดให้แอปที่อัปโหลดขึ้น App Store Connect ต้องบิลด์ด้วย Xcode 26 ขึ้นไปและ iOS 26 SDK หน้า iOS ของ Capacitor ก็ระบุ Xcode 26.0 ขึ้นไป และรองรับ iOS 15 ขึ้นไป Xcode รันได้บน macOS เท่านั้น บิลด์จึงเกิดขึ้นบนเครื่องของ Codemagic ไม่ใช่บนพีซีของคุณ
เทมเพลตของเราเป็นเกมบนเบราว์เซอร์ ทุกหน้าของแต่ละเวอร์ชันระบุว่าไม่รวมบิลด์แอปเนทีฟ หนึ่งไลเซนส์ใช้กับผลิตภัณฑ์ปลายทางหนึ่งชิ้น และคุณนำเกมนั้นไปเผยแพร่ที่ไหนก็ได้ รวมถึง App Store และ Google Play แต่ห้ามขายต่อตัวเทมเพลตเอง ถ้าวางแผนจะเก็บเงินผู้เล่น ไม่ว่าจะเป็นแอปเสียเงินหรือการซื้อในแอป ให้ถามเราก่อน
ดูเทมเพลตและสิ่งที่แต่ละเวอร์ชันมีให้
ขั้นที่ 1: เพิ่มโปรเจกต์ iOS บน Windows
ถ้ามีโปรเจกต์ Capacitor สำหรับ Android อยู่แล้ว ให้ติดตั้ง @capacitor/ios และรัน npx cap add ios จะได้โฟลเดอร์ ios/ แม้บน Windows คุณเปิดใน Xcode บนเครื่องไม่ได้ ทุกการแก้โปรเจกต์เนทีฟจึงเป็นการแก้ไฟล์ที่ต้องไปตรวจในบิลด์คลาวด์รอบถัดไป
- ไอคอน: PNG ขนาด 1024 x 1024 หนึ่งไฟล์ ไม่มีพื้นโปร่งใส
- อุปกรณ์และแนวจอ: เกมของเรารองรับ iPhone เท่านั้น และแนวนอนเท่านั้น การรองรับ iPad หมายถึงต้องมีภาพหน้าจอ iPad และมีเลย์เอาต์ให้ทดสอบมากขึ้น
- การเข้ารหัส: หน้าช่วยเหลือเรื่องการปฏิบัติตามข้อกำหนดการส่งออกของ Apple แนะนำให้แก้ Info.plist ของแอป เพื่อไม่ต้องตอบคำถามการเข้ารหัสทุกครั้งที่ส่ง เกมของเราใช้เพียง HTTPS ของระบบ เราจึงตั้ง ITSAppUsesNonExemptEncryption เป็น false
- ใช้ไฟล์ในแอปเท่านั้น: เกมอยู่ในแอปและไม่เคยโหลดเว็บไซต์ของเรา แนวทาง 4.2 ของ Apple ต้องการแอปที่มากกว่าเว็บไซต์ที่ถูกแพ็กใหม่
เริ่มจากเทมเพลตใช่ไหม Velvet Pool เป็นเทมเพลตที่เราห่อด้วย Capacitor สำหรับ Google Play แล้ว โฟลเดอร์เกมของมันจึงผ่านขั้นนี้บน Android มาแล้ว ยังไม่มีเทมเพลตใดของเราผ่านการรีวิวของ App Store
ดู Velvet Pool เทมเพลตที่เราห่อด้วย Capacitor แล้ว
ขั้นที่ 2: เซ็นแอปโดยไม่ใช้ Mac หรือ Keychain
การเซ็นแอปคือส่วนที่เคยต้องใช้ Mac ด้วย App Store Connect API key ทำให้ Codemagic ทำงานนี้บนคลาวด์ได้
- ในเว็บไซต์ Apple Developer สร้าง App ID (bundle identifier) สำหรับเกม พร้อม In-App Purchase ถ้าจะขายอะไรในเกม
- ใน App Store Connect สร้างเรคคอร์ดแอปด้วย bundle ID นั้น SKU และภาษาหลัก
- สร้าง App Store Connect API key เอกสารของ Codemagic แนะนำให้ใช้คีย์เฉพาะสำหรับ Codemagic เพิ่มคีย์ในการตั้งค่าการเชื่อมต่อของ Codemagic และห้ามใส่ไฟล์คีย์ใน repository
- ให้ Codemagic สร้างใบรับรองสำหรับเผยแพร่ และดึง provisioning profile ด้วยคีย์ มันดึงใบรับรองที่เคยสร้างไว้ และโปรไฟล์จาก Apple Developer portal ได้
สิ่งที่ผิดพลาดในกรณีของเรา
- สองบิลด์แรกล้มเหลว เพราะยังไม่ได้ตั้ง provisioning profile สำหรับ bundle ID ให้ตั้งใบรับรองและโปรไฟล์ก่อนบิลด์แรก
- โปรไฟล์ที่นำเข้า Codemagic โดยไม่มีชื่ออ้างอิงใช้งานไม่ได้ และปุ่มล้มเหลวแบบเงียบๆ ให้กรอกชื่อทุกครั้ง
- การตั้งค่า API key ครั้งแรกล้มเหลว เพราะเราพิมพ์ Issuer ID ผิด ให้คัดลอกและวางจากหน้าคีย์ของ Apple
- เลขบิลด์ต้องเพิ่มขึ้นเสมอ การขอเลขล่าสุดจาก Apple ล้มเหลวระหว่างที่การอัปโหลดก่อนหน้ายังประมวลผลอยู่ เราจึงเปลี่ยนไปใช้เลขที่คำนวณจากนาฬิกา
ขั้นที่ 3: บิลด์บน Codemagic และทดสอบบน TestFlight
สูตรการบิลด์อยู่ในไฟล์ codemagic.yaml ใน repository ของเราติดตั้ง dependency เตรียมไฟล์เกม ซิงก์เข้าโปรเจกต์ iOS ด้วย npx cap sync ios ใช้โปรไฟล์ และบิลด์ IPA บนเครื่อง Mac mini M2 จากนั้น Codemagic ส่งบิลด์ไปที่ App Store Connect บิลด์แรกที่สำเร็จใช้เวลาประมาณหกนาที และบิลด์ใช้งานจริงในภายหลังใช้ไม่ถึงสี่นาที
เรื่องที่ไม่คาดคิด: แม้ตั้ง submit_to_testflight เป็น false แล้ว Codemagic ก็ยังอัปโหลดบิลด์ขึ้น App Store Connect เอกสารของ Codemagic อธิบายตัวเลือกนี้ว่าเป็นตัวเลือกที่จำเป็นสำหรับการแจกจ่ายให้กลุ่มเบต้า
ข้อจำกัดของ TestFlight
- ผู้ทดสอบภายใน: ผู้ใช้ App Store Connect ในทีมได้สูงสุด 100 คน
- ผู้ทดสอบภายนอก: สูงสุด 10,000 คน หลังจาก App Review อนุมัติบิลด์แรกสำหรับการทดสอบภายนอก
- บิลด์หนึ่งเปิดให้ผู้ทดสอบใช้ได้สูงสุด 90 วัน
คำเชิญผู้ทดสอบภายในจะค้างอยู่จนกว่าจะกดยอมรับจากอีเมล TestFlight และแอปจะไม่ขึ้นใน TestFlight ก่อนหน้านั้น อย่าลืมดูโฟลเดอร์สแปม
สิ่งที่ iPhone เจอแต่ Windows ไม่เจอ
- ไฟล์เสียงที่อัดไว้โหลดไม่ขึ้น ภายในแอป fetch คืนค่าสถานะ 0 พร้อมไบต์ที่ถูกต้อง และโค้ดของเรามองว่าเป็นข้อผิดพลาด การยอมรับสถานะ 0 สำหรับไฟล์ในเครื่องแก้ปัญหาได้
- ปุ่มถูกตัดในแนวนอนใกล้รอยบาก เราปรับเลย์เอาต์หน้าผลลัพธ์ใหม่และทดสอบทุกมุม
- หน้าซื้อที่ใช้ร่วมกับ Android ยังเขียนว่า Google Play ตอนนี้บน iOS เขียนว่า App Store แล้ว
- การซื้อทดสอบใน TestFlight รีเซ็ตไม่ได้ บิลด์ทดสอบจึงมีปุ่มจำลองสถานะยังไม่ได้ซื้อ บิลด์สำหรับสโตร์ไม่มีปุ่มนี้
ขั้นที่ 4: หน้า App Store Connect ความเป็นส่วนตัว และเรตอายุ
ส่วนที่เหลือทำในเบราว์เซอร์ นี่คือลำดับที่ได้ผลสำหรับเรา
- App Information: คำบรรยายรอง หมวดหมู่ และแบบสอบถามเรตอายุ ตอบตามจริงตามสิ่งที่เกมแสดงจริงๆ
- Pricing and Availability: ราคาและประเทศ การเปิดให้ใช้บน Mac และ Apple Vision Pro ถูกเปิดไว้เป็นค่าเริ่มต้น เราปิดเพราะเกมของเราทำมาสำหรับหน้าจอสัมผัส
- App Privacy: Apple กำหนดให้ต้องกรอกข้อมูลนี้สำหรับแอปใหม่และอัปเดต รวมถึงแนวปฏิบัติของพาร์ทเนอร์บุคคลที่สามที่มีโค้ดอยู่ในแอป เช่น เครือข่ายโฆษณาและ SDK และต้องมี URL นโยบายความเป็นส่วนตัวแบบสาธารณะ
- การซื้อในแอป ถ้ามี: ชื่อ คำอธิบาย ภาพหน้าจอสำหรับรีวิว และบันทึกถึงผู้รีวิว
- หน้าเวอร์ชัน: คำอธิบาย คีย์เวิร์ด URL ซัพพอร์ตและการตลาด ลิขสิทธิ์ บิลด์ บันทึกรีวิว และตัวเลือกการเผยแพร่ เราเลือกเผยแพร่เอง
- ภาพหน้าจอ แล้วตามด้วยแต่ละภาษาเพิ่มเติมพร้อมข้อความและภาพของตัวเอง
- ภาพหน้าจอ: แนวทาง 2.3.3 ระบุว่าควรแสดงแอปขณะใช้งาน ไม่ใช่แค่ภาพชื่อเกมหรือหน้าจอเปิด ภาพของเราเป็นภาพจริงจากเกม
- ชื่อแอป: ชื่อหนึ่งที่เราอยากได้มีคนใช้แล้วบน App Store ให้เตรียมชื่อที่สอง หรือชื่อที่มีคำอธิบายสั้นๆ ต่อท้ายไว้
- บันทึกรีวิว: เราเขียนว่าเกมสมบูรณ์อยู่ในแอป เล่นออฟไลน์ได้ ไม่ต้องล็อกอิน และบอกตำแหน่งของปุ่มซื้อและปุ่มกู้คืนการซื้อ
อ่านเงื่อนไขไลเซนส์ก่อนเผยแพร่เทมเพลตเป็นแอป
ขั้นที่ 5: ส่งรีวิว และสิ่งที่ Apple ตรวจ
ตอนส่ง ระบบจะให้เผยแพร่คำตอบ App Privacy และยืนยันว่าเป็นความจริง แล้วจึงส่งร่างการส่งรีวิว ของเราส่งไปเมื่อวันที่ 19 ตุลาคม 2026 พร้อมเวอร์ชันแอปและการซื้อแบบครั้งเดียว และสถานะเปลี่ยนเป็น Waiting for Review ถ้ารีวิวกลับมาพร้อมการปฏิเสธ ให้ตอบผ่าน Resolution Center ด้วยข้อเท็จจริง ไม่ใช่ส่งใหม่แบบไม่รู้สาเหตุ
สำหรับเกมที่ทำจากเทมเพลต มีสามแนวทางที่สำคัญที่สุด 4.2 ต้องการมากกว่าเว็บไซต์ที่ถูกแพ็กใหม่ จึงต้องเก็บเกมไว้ในแอป 4.3(a) ขอไม่ให้สร้างหลาย bundle ID สำหรับแอปเดียวกัน 4.3(b) ระบุว่า Apple ไม่ต้องการแอปที่แยกไม่ออกจากสิ่งที่มีอยู่ทั่วไปแล้ว การรีสกินต้องเปลี่ยนกติกา เนื้อหา และอินเทอร์เฟซ ไม่ใช่แค่ภาพ
เทมเพลตของเรามีอะไรบ้าง และส่วนที่เราทำแทนคุณได้
ทุกเทมเพลตมาพร้อมโฟลเดอร์เกมที่พร้อมโฮสต์ ซอร์สโค้ดที่อ่านง่าย คู่มือ และซัพพอร์ต 6 เดือน หรือ 12 เดือนถ้าซื้อส่วนขยาย ซัพพอร์ตครอบคลุมการติดตั้งและใช้ไฟล์ที่ให้ไป และการแก้บั๊กที่ทำซ้ำได้ ตัวห่อ iOS โฆษณาเนทีฟ การซื้อในแอป การตั้งค่าบิลด์คลาวด์ และหน้า App Store เป็นบริการแยก
ถ้าไม่อยากตั้งค่าการเซ็นแอปและ Codemagic เอง ส่งเทมเพลต แผนบัญชี Apple และกำหนดส่งมาให้เรา เราจะตอบเรื่องขอบเขต ราคา และระยะเวลา ก่อนเริ่มงาน เราไม่ได้เผยแพร่ราคางานสั่งทำ
ขอใบเสนอราคานำเกมของคุณขึ้น App Store
คำถามที่พบบ่อย
เผยแพร่เกม iPhone โดยไม่มี Mac ได้ไหม
ได้ ยังต้องใช้ macOS และ Xcode ในการบิลด์ แต่บริการคลาวด์อย่าง Codemagic มีให้ ส่วนอื่นทั้งหมดตั้งแต่ App Store Connect ถึง TestFlight ทำได้ในเบราว์เซอร์และบน iPhone
เผยแพร่บน App Store มีค่าใช้จ่ายเท่าไร
Apple Developer Program ราคา 99 ดอลลาร์สหรัฐต่อปีสมาชิก แพ็กเกจส่วนบุคคลแบบฟรีของ Codemagic มี 500 นาที macOS M2 ต่อเดือน และนาทีเพิ่มเติมคิดเป็นรายนาที บวกค่าไลเซนส์เกมและภาพสำหรับหน้าร้าน
ต้องมี iPhone ไหม
ถ้าจะทดสอบจริงก็ต้องมี iPhone ของเราเจอเสียงหาย ปุ่มถูกตัด และชื่อสโตร์ผิด ซึ่งบิลด์บน Windows และการทดสอบในเบราว์เซอร์ไม่ได้แสดงให้เห็น
Apple จะยอมรับเกม HTML5 ที่ห่อเป็นแอปไหม
เราสัญญาผลลัพธ์ไม่ได้ แนวทาง 4.2 ต้องการมากกว่าเว็บไซต์ที่แพ็กใหม่ เราจึงใส่เกมทั้งหมดไว้ในแอป ทำให้เล่นออฟไลน์ได้ และเพิ่มฟีเจอร์เนทีฟ แนวทาง 4.3 ก็ใช้กับการรีสกินด้วย
เทมเพลตของคุณมีบิลด์ iOS มาให้ไหม
ไม่มี เวอร์ชันของเราเป็นเกมบนเบราว์เซอร์ และหน้าสินค้าระบุว่าไม่รวมบิลด์แอปเนทีฟ คุณทำตามเส้นทางนี้เองได้ หรือสั่งให้เราทำโดยเสนอราคา
