· Publishing · อ่าน 5 นาที

อัปโหลดสกรีนช็อตหลายภาษาแบบเป็นชุดขึ้นทั้งสองสโตร์

อัปโหลดสกรีนช็อตหลายภาษาแบบเป็นชุดขึ้นทั้งสองสโตร์
TL;DR. ไม่มีสโตร์ไหนรองรับการอัปโหลดสกรีนช็อตแบบชุดข้ามภาษาจริง ๆ ทั้งใน App Store Connect และ Google Play Console คุณต้องอัปโหลดทีละภาษา ทีละกลุ่มขนาดอุปกรณ์ ทีละช่องในหน้าเว็บ วิธีเดียวที่จะเลี่ยงการลากวางคือ App Store Connect API และ Google Play Developer API (หรือ fastlane deliver/supply ที่ทำงานอยู่บนสองตัวนี้) Mokbi จะเรนเดอร์ทุกภาษา × ทุกอุปกรณ์ แล้วเผยแพร่ชุดทั้งหมดขึ้นทั้งสองสโตร์ให้คุณ — ส่งตรงขึ้น Google Play ผ่าน Play Developer API และเตรียมชุดไว้ใน App Store Connect พร้อมให้คุณกดส่งขั้นตอนสุดท้าย

คุณกำลังอยู่กลางขั้นตอนออกเวอร์ชันใหม่ สกรีนช็อตเสร็จแล้ว ตอนนี้ต้องเอาขึ้นทั้งสองสโตร์ ทุกภาษาที่รองรับ ทุกขนาดอุปกรณ์ที่แต่ละสโตร์กำหนด นี่คือส่วนที่ไม่มีใครเตือนล่วงหน้า — และเป็นจุดที่หลายคนแอบค้นหาว่า "bulk upload localized screenshots app store connect / google play all languages"

ขอตอบตรง ๆ ก่อนเลยเพื่อให้เลิกหาต่อ: ไม่มีสโตร์ไหนมีระบบอัปโหลดแบบชุดที่ครอบคลุมหลายภาษาในตัวจริง ๆ คุณต้องอัปโหลดทีละภาษา ทีละกลุ่มขนาดอุปกรณ์ ในหน้าเว็บ ทีละช่อง

"ไม่มีการอัปโหลดแบบชุด" หมายความว่าอย่างไรกันแน่

ใน App Store Connect คุณเปิดแอป เลือกเวอร์ชัน เลื่อนไปที่ส่วนสกรีนช็อต แล้วลากไฟล์ PNG ใส่ช่องประเภทหน้าจอที่กำหนด — 6.9", 6.5", iPad 13" และอื่น ๆ จากนั้นสลับดรอปดาวน์ภาษาไปอีกภาษาแล้วทำซ้ำ Apple ให้ใส่สกรีนช็อตได้สูงสุด 10 รูป ต่ออุปกรณ์หนึ่งประเภท ต่อการแปลหนึ่งภาษา ไม่มีปุ่ม "ใช้กับทุกภาษา" สำหรับรูปภาพ

Google Play Console ก็ทำงานคล้ายกัน ในส่วน Main store listing คุณเลือกภาษาหนึ่ง แล้วอัปโหลดสกรีนช็อตเข้าแต่ละหมวดอุปกรณ์ — โทรศัพท์, แท็บเล็ต 7 นิ้ว, แท็บเล็ต 10 นิ้ว และอาจรวม Chromebook, Wear OS, Android TV และประเภทใหม่ ๆ ได้สูงสุด 8 รูปต่ออุปกรณ์หนึ่งประเภท สลับภาษาแล้วทำซ้ำ

ดังนั้นหน่วยของงานจึงไม่ใช่ "ชุดสกรีนช็อต" แต่คือ หนึ่งช่อง = หนึ่งภาษา × หนึ่งกลุ่มขนาดอุปกรณ์ และคุณต้องกรอกทุกช่องด้วยมือ

ขนาดของงานลากวาง เมื่อคิดเป็นตัวเลข

ลองนับช่องอย่างตรงไปตรงมา ฝั่ง Apple การส่งเวอร์ชันปกติต้องกรอกอย่างน้อยกลุ่ม iPhone และกลุ่ม iPad — นับเป็น 2 ช่อง หรือมากกว่านั้นถ้าคุณเก็บชุด iPhone 6.5" แยกจาก 6.9" ฝั่ง Play การส่งปกติต้องกรอกโทรศัพท์บวกแท็บเล็ตสองขนาด — นับเป็น 3 ช่อง หรือมากกว่านั้นถ้าเพิ่ม Chromebook หรือ Wear OS

  • หนึ่งภาษา ทั้งสองสโตร์: ประมาณ 2 ช่องฝั่ง Apple + 3 ช่องฝั่ง Play = 5 ครั้งของการอัปโหลดด้วยมือ
  • สิบภาษา: ประมาณ 20 + 30 = 50 ช่องที่ต้องกรอก แต่ละช่องมีได้ถึง 8–10 รูป
  • ห้าสิบภาษา: ประมาณ 100 + 150 = 250 ครั้งของการลากวางแยกกัน ก่อนที่คุณจะได้ตรวจด้วยซ้ำว่ารูปที่ถูกต้องอยู่ในช่องที่ถูกต้อง

ตัวเลขที่คนมักพูดกันคือ 30 นาทีของการลากวางต่อหนึ่งภาษา และก็มีเหตุผล เมื่อจำนวนภาษาเยอะขึ้นจริง สิ่งนี้จะไม่ใช่แค่ "งานหนึ่งอย่าง" อีกต่อไป แต่กลายเป็นครึ่งวัน — ครึ่งวันที่คุณต้องทำซ้ำทุกครั้งที่ออกเวอร์ชันใหม่

สองเส้นทางระบบอัตโนมัติที่มีอยู่จริง

ถ้าอยากข้ามหน้าเว็บไปเลย มีประตูที่รองรับอย่างเป็นทางการอยู่แค่สองบาน บานละหนึ่งสโตร์:

  • App Store Connect API ทรัพยากร screenshots ให้คุณสร้างชุดและอัปโหลดรูปด้วยโค้ดสำหรับการแปลภาษาหนึ่งและประเภทหน้าจอหนึ่งได้ คุณยืนยันตัวตนด้วย API key แล้วส่งรูปทีละภาษา ทีละกลุ่มหน้าจอ
  • Google Play Developer API เมธอด edits.images.upload อัปโหลดรูปหนึ่งรูปของภาษาและประเภทรูปที่ระบุ (phoneScreenshots, sevenInchScreenshots, tenInchScreenshots และอื่น ๆ) เข้าไปในการแก้ไขที่ค้างอยู่ ซึ่งคุณค่อยคอมมิตทีหลัง

ทีมส่วนใหญ่ไม่เรียก API ตรง ๆ แต่ใช้ fastlane ครอบไว้อีกที: deliver (หรือชื่อเรียกอีกอย่างคือ upload_to_app_store) ขับเคลื่อน App Store Connect API ส่วน supply (upload_to_play_store) ขับเคลื่อน Play Developer API ด้วยซ้ำ supply ยังแตกหลายเธรดอัปโหลดพร้อมกันเพื่อส่งรูปหลายภาษาพร้อมกันได้ นั่นแหละคือ "การอัปโหลดแบบชุด" ที่แท้จริง — มันคือลูป API ไม่ใช่ปุ่มในแดชบอร์ด

ควรพูดให้ชัดถึงต้นทุน: fastlane หมายถึงต้องมี Ruby toolchain, ไฟล์ fastfile, ข้อมูลรับรอง API ของสโตร์ และ (ฝั่ง Apple) งานเดินท่อ code-signing และ simulator ตามปกติ มันคุ้มค่าเมื่อคุณออกเวอร์ชันบ่อย สำหรับแอปที่ส่งไม่กี่ครั้งต่อปี การตั้งระบบขึ้นมาแค่เพื่ออัปโหลดรูปอาจเป็นงานที่มากกว่าการลากวางที่มันมาแทนที่ แต่ถ้าคุณใช้มันสำหรับ build อยู่แล้ว การเพิ่มขั้นตอนสกรีนช็อตแทบไม่มีต้นทุนเพิ่ม

ต้นตอของสกรีนช็อตต่างหากคือคอขวดตัวจริง

สังเกตว่าทุกเส้นทางข้างต้นสมมติว่าไฟล์มีอยู่แล้ว — ขนาดถูกต้อง หนึ่งชุดต่อกลุ่มอุปกรณ์ แปลครบทุกภาษา นั่นคือส่วนที่ยากจริง ๆ App Store Connect API และ Play Developer API เป็นแค่ตัวเคลื่อนย้ายรูปที่เสร็จแล้ว มันไม่ได้ออกแบบ ปรับขนาด หรือแปลคำบรรยายให้คุณ ถ้าคุณกำลังผลิต 50 ภาษาใน 5 ขนาดอุปกรณ์ด้วยมือในเครื่องมือออกแบบ การอัปโหลดไม่เคยเป็นคอขวดของคุณเลย

นี่คือช่องว่างที่ Mokbi มาปิด คุณออกแบบเพียงครั้งเดียว แล้วมันจะเรนเดอร์ทุกขนาดอุปกรณ์และครบทั้ง 50 ภาษาจากต้นแบบเดียวนั้น — คำบรรยายแปลแล้ว เลย์เอาต์จัดใหม่ให้พอดี แต่ละเฟรมส่งออกด้วยขนาดพิกเซลตรงตามที่ช่องของสโตร์ต้องการเป๊ะ ผลลัพธ์คือชุดไฟล์ที่จัดระเบียบและตั้งชื่อไว้เรียบร้อย พร้อมนำไปใส่ในช่องที่ถูกต้องได้ทันที

เผยแพร่ขึ้นทั้งสองสโตร์ด้วยคลิกเดียว

Mokbi แก้ปัญหานี้ตรงจุด คุณสร้างชุดเดียว แล้วมันจะเรนเดอร์ทุกภาษา × ทุกขนาดอุปกรณ์ และเผยแพร่ขึ้นทั้งสองสโตร์ — ส่งตรงขึ้น Google Play ผ่าน Play Developer API และเตรียมชุดไว้ใน App Store Connect พร้อมให้คุณกดส่ง เนื่องจาก Apple กำหนดให้ต้องกด Submit และผ่านการรีวิวขั้นสุดท้ายเอง ขั้นตอนสุดท้ายนั้นจึงยังอยู่ในมือคุณ ส่วนที่เหลือทั้งหมดถูกจัดการให้แล้ว ไม่ต้องอัปโหลดทีละภาษา ทีละอุปกรณ์ด้วยมืออีกต่อไป

ถ้าคุณใช้ fastlane หรือ store API ของตัวเองใน CI อยู่แล้ว ไฟล์ที่ส่งออกมาชุดเดียวกันนี้ก็ป้อนเข้า deliver และ supply ได้ตรง ๆ ไม่ว่าทางไหน การออกแบบ ปรับขนาด และแปล 50 ภาษาก็เสร็จให้คุณแล้ว — และตอนนี้ขั้นตอนเผยแพร่ก็เสร็จให้ด้วยเช่นกัน

เวิร์กโฟลว์ที่ประหยัดครึ่งวันได้จริง

  1. ออกแบบครั้งเดียว สร้างชุดสกรีนช็อตในตัวแก้ไขเพียงครั้งเดียว
  2. ส่งออกทั้งเมทริกซ์เป็นชุด ทุกขนาดอุปกรณ์ × ทุกภาษา ด้วยขนาดตรงตามสโตร์กำหนด ในการส่งออกครั้งเดียว
  3. เผยแพร่ขึ้นทั้งสองสโตร์ Mokbi ส่งชุดไฟล์ขึ้น Google Play และเตรียมไว้ใน App Store Connect พร้อมให้คุณกดส่งขั้นสุดท้าย — หรือส่งไฟล์ให้ fastlane deliver/supply ถ้าคุณมี CI ของตัวเอง
  4. เวอร์ชันถัดไป ส่งออกใหม่แล้วทำซ้ำ เปลี่ยนดีไซน์ครั้งเดียว สร้างทั้งเมทริกซ์ใหม่ อัปโหลดอีกครั้ง

สิ่งที่สำคัญในทางคณิตศาสตร์คือ จำนวนช่องไม่ได้ลดลง แต่เวลาต่อช่องหดตัวลงมากเมื่อคุณแค่วางไฟล์ที่เสร็จสมบูรณ์และมีขนาดถูกต้องอยู่แล้ว แทนที่จะต้องออกแบบและปรับขนาดมันก่อน นั่นคือความต่างระหว่างครึ่งวันกับเวลาพักดื่มกาแฟ

อ่านต่อ

เปิดตัวแก้ไข →