ใช้ Google Play Instant กับ Unity

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

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

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

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

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

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

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

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

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

การตั้งค่าโปรแกรมเล่น

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

วันที่ คำแนะนำเฉพาะรวมถึงการใช้ OpenGL ES 2.0 เท่านั้นและ
  กำลังปิดใช้การแสดงผลแบบมัลติเธรด
รูปที่ 1 กล่องโต้ตอบการตั้งค่าโปรแกรมเล่น

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

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

ทำให้ใช้งานได้อย่างรวดเร็ว

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

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

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

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

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

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

เมธอด ShowInstallPrompt() มีโอเวอร์โหลดที่อนุญาต ดังต่อไปนี้

  • พิจารณาว่าผู้ใช้ยกเลิกออกจากขั้นตอนการติดตั้งหรือไม่ ลบล้าง 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 รายการ สถานะคุกกี้จะพร้อมใช้งานแม้ว่าผู้ใช้ จะไม่เปิดแอปที่ติดตั้งไว้ทันที เช่น 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.
}