ใช้ Google Play Instant กับ Unity

คำเตือน: Google Play Instant จะไม่มีให้บริการอีกต่อไป ตั้งแต่เดือนธันวาคม 2025 เป็นต้นไป คุณจะไม่สามารถเผยแพร่ Instant Apps ผ่าน Google Play ได้ และ Instant API ของบริการ Google Play ทั้งหมดจะหยุดทำงาน Play จะไม่แสดงแอปด่วนต่อผู้ใช้โดยใช้กลไกใดๆ อีกต่อไป

เราทำการเปลี่ยนแปลงนี้ตามความคิดเห็นของนักพัฒนาแอปและการลงทุนอย่างต่อเนื่อง เพื่อปรับปรุงระบบนิเวศตั้งแต่เปิดตัว Google Play Instant

เราขอแนะนำให้นักพัฒนาแอปนำผู้ใช้ไปยัง แอปหรือเกมปกติของตนโดยใช้ Deep Link เพื่อเปลี่ยนเส้นทางผู้ใช้ไปยังเส้นทางหรือฟีเจอร์ที่เฉพาะเจาะจงเมื่อเกี่ยวข้อง เพื่อเพิ่มประสิทธิภาพในการเพิ่มผู้ใช้อย่างต่อเนื่อง

ปลั๊กอิน Google Play Instant สำหรับ Unity จะกำหนดค่าโปรเจ็กต์ Unity เพื่อสร้าง เกมเวอร์ชัน Instant App คู่มือนี้จะอธิบายวิธีการติดตั้งและใช้ปลั๊กอินนี้

ดาวน์โหลดและนำเข้าปลั๊กอิน

ปลั๊กอินนี้เป็นส่วนหนึ่งของปลั๊กอิน Google Play สำหรับ Unity หากต้องการนำเข้า ปลั๊กอิน ให้ทำตามขั้นตอนต่อไปนี้

  1. ดาวน์โหลดรุ่นล่าสุดจากรุ่นปลั๊กอินของ Google Play สำหรับ Unity
  2. นำเข้าไฟล์ .unitypackage โดยเลือกตัวเลือกเมนู Unity IDE ชิ้นงาน > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง แล้วนำเข้าทุกรายการ

ฟีเจอร์ของ Unity Editor

นำเข้าปลั๊กอินเพื่อเพิ่มเมนูย่อย Google > Play Instant ใน Unity เมนูย่อยนี้มีตัวเลือกต่อไปนี้

การตั้งค่าบิลด์

เปิดหน้าต่างที่ช่วยให้สลับระหว่างโหมดการพัฒนาติดตั้งและทันที ได้ การเปลี่ยนไปใช้ Instant จะทำให้เกิดการเปลี่ยนแปลงต่อไปนี้

  • สร้างสัญลักษณ์การกำหนดสคริปต์ที่ชื่อ PLAY_INSTANT ซึ่งใช้สำหรับการ เขียนสคริปต์ด้วย #if PLAY_INSTANT และ #endif ได้
  • จัดการการอัปเดต AndroidManifest.xml สำหรับการเปลี่ยนแปลงที่จำเป็นบางอย่าง เช่น android:targetSandboxVersion

การตั้งค่าเพลเยอร์

กล่องโต้ตอบการตั้งค่า Player ที่แสดงในรูปที่ 1 จะแสดงคำแนะนำเพื่อช่วย คุณเพิ่มประสิทธิภาพการรองรับ Google Play Instant, พัฒนาโดยใช้ Graphics API ที่เข้ากันได้มากขึ้น และลดขนาด APK

คำแนะนำที่เฉพาะเจาะจง ได้แก่ การใช้ OpenGL ES 2.0 เท่านั้นและ
  การปิดใช้การแสดงผลแบบหลายเธรด
รูปที่ 1 กล่องโต้ตอบการตั้งค่าเพลเยอร์

การตั้งค่าเพลเยอร์เหล่านี้แบ่งออกเป็นต้องระบุและแนะนำ หากการตั้งค่ามีปุ่มอัปเดตที่เกี่ยวข้อง ให้คลิกปุ่มดังกล่าวเพื่อ เปลี่ยนการตั้งค่าเป็นค่าที่ต้องการ

หากต้องการลดขนาด APK เพิ่มเติม ให้เปิด Unity Package Manager แล้วนำแพ็กเกจที่ไม่ได้ใช้ออก

การติดตั้งใช้งานอย่างรวดเร็ว

การติดตั้งใช้งานด่วนช่วยลดขนาดของ Instant App ที่สร้างด้วย Unity ได้โดยการแพ็กเกจชิ้นงานบางรายการใน AssetBundle เมื่อใช้การติดตั้งใช้งานด่วน ระบบจะแพ็กเกจเครื่องมือเกมของ Unity และหน้าจอการโหลด เป็น APK ของ Instant App และหลังจากที่ Instant App เริ่มทำงานแล้ว ระบบจะดึงข้อมูล AssetBundle จากเซิร์ฟเวอร์

รองรับเวิร์กโฟลว์การติดตั้ง

เป้าหมายของ Instant App หลายๆ แอปคือการให้โอกาสผู้ใช้ได้สัมผัสประสบการณ์การใช้งานแอป ก่อนที่จะติดตั้งเวอร์ชันเต็ม ปลั๊กอิน Google Play Instant สำหรับ Unity มี API สำหรับแสดงกล่องโต้ตอบการติดตั้ง Play Store และสำหรับการโอนสถานะจาก แอปชั่วคราวไปยังแอปที่ติดตั้ง

แสดงข้อความแจ้งให้ติดตั้ง

Instant App ที่มีปุ่มติดตั้งจะแสดงกล่องโต้ตอบการติดตั้ง Play Store ได้โดยเรียกใช้รายการต่อไปนี้จากตัวแฮนเดิลการคลิกปุ่มติดตั้ง

Google.Play.Instant.InstallLauncher.ShowInstallPrompt();

เมธอด ShowInstallPrompt() มีการโอเวอร์โหลดที่อนุญาตให้ทำสิ่งต่อไปนี้อย่างน้อย 1 อย่าง

  • การพิจารณาว่าผู้ใช้ยกเลิกกระบวนการติดตั้งหรือไม่ แทนที่ onActivityResult() ในกิจกรรมหลักของ Instant App และตรวจสอบ RESULT_CANCELED ใน requestCode ที่ระบุ
  • การส่งสตริงผู้แนะนำการติดตั้งผ่านพารามิเตอร์ referrer
  • ส่งสถานะเกี่ยวกับเซสชันเกมปัจจุบันผ่าน PutPostInstallIntentStringExtra()

ซึ่งแสดงในตัวอย่างต่อไปนี้

using Google.Play.Instant;
...
const int requestCode = 123;
var sessionInfo = /* Object serialized as a string representing player's current location, etc. */;
using (var activity = UnityPlayerHelper.GetCurrentActivity())
using (var postInstallIntent = InstallLauncher.CreatePostInstallIntent(activity))
{
    InstallLauncher.PutPostInstallIntentStringExtra(postInstallIntent, "sessionInfo", sessionInfo);
    InstallLauncher.ShowInstallPrompt(activity, requestCode, postInstallIntent, "test-referrer");
}

หากผู้ใช้ติดตั้งแอปเสร็จสมบูรณ์ Play Store จะเปิดแอปอีกครั้ง โดยใช้ postInstallIntent ที่ระบุ แอปที่ติดตั้งสามารถดึงค่าที่ตั้งไว้ใน postInstallIntent ได้โดยใช้สิ่งต่อไปนี้

var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");

หมายเหตุ

  • ไอเทมพิเศษที่รวมอยู่ใน postInstallIntent อาจไม่ไปถึงแอปที่ติดตั้ง หากผู้ใช้ติดตั้งแอปแต่ยกเลิกการเปิดแอปหลังการติดตั้ง การส่งส่วนเสริมของ Intent เหมาะกับการคงสถานะเซสชันที่ใช้งานอยู่มากกว่าการคงสถานะถาวร สำหรับสถานะถาวร โปรดดูที่ Cookie API
  • ทุกคนสามารถสร้าง Intent ที่มีฟิลด์พิเศษเพื่อเปิดแอปที่ติดตั้งได้ ดังนั้นหากเพย์โหลดให้สิทธิ์บางอย่างที่มีคุณค่า ให้ออกแบบเพย์โหลดเพื่อให้ใช้ได้เพียงครั้งเดียว ลงนามแบบเข้ารหัส และยืนยันลายเซ็นในเซิร์ฟเวอร์

Cookie API มีเมธอดสําหรับส่งคุกกี้ (เช่น รหัสผู้เล่นหรือข้อมูลระดับ ที่เล่นจบ) จาก Instant App ไปยังแอปที่ติดตั้งที่เกี่ยวข้อง ซึ่งต่างจาก postInstallIntent extras สถานะคุกกี้จะพร้อมใช้งานแม้ว่าผู้ใช้จะ ไม่ได้เปิดแอปที่ติดตั้งทันทีก็ตาม เช่น Instant App อาจเรียกใช้โค้ดต่อไปนี้จากตัวแฮนเดิลการคลิกปุ่มติดตั้ง

using Google.Play.Instant;
...
var playerInfo = /* Object serialized as a string representing game levels completed, etc. */;
var cookieBytes = System.Text.Encoding.UTF8.GetBytes(playerInfo);
try
{
    var maxCookieSize = CookieApi.GetInstantAppCookieMaxSize();
    if (cookieBytes.Length > maxCookieSize)
    {
        UnityEngine.Debug.LogErrorFormat("Cookie length {0} exceeds limit {1}.", cookieBytes.Length, maxCookieSize);
    }
    else if (CookieApi.SetInstantAppCookie(cookieBytes))
    {
        UnityEngine.Debug.Log("Successfully set cookie. Now display the app install dialog...");
        InstallLauncher.ShowInstallPrompt();
    }
    else
    {
        UnityEngine.Debug.LogError("Failed to set cookie.");
    }
}
catch (CookieApi.InstantAppCookieException ex)
{
    UnityEngine.Debug.LogErrorFormat("Failed to set cookie: {0}", ex);
}

หากผู้ใช้ติดตั้งแอปเสร็จแล้ว แอปที่ติดตั้งจะเรียกข้อมูลคุกกี้ได้โดยใช้โค้ดต่อไปนี้

var cookieBytes = CookieApi.GetInstantAppCookie();
var playerInfoString = System.Text.Encoding.UTF8.GetString(cookieBytes);
if (!string.IsNullOrEmpty(playerInfoString))
{
    // Initialize game state based on the cookie, e.g. skip tutorial level completed in instant app.
}