از Google Play Instant با Unity استفاده کنید

افزونه Google Play Instant برای Unity پروژه Unity شما را برای ایجاد نسخه برنامه فوری از بازی شما پیکربندی می کند. این راهنما نحوه نصب و استفاده از این افزونه را شرح می دهد.

افزونه را دانلود و وارد کنید

این افزونه بخشی از افزونه های گوگل پلی برای یونیتی است. برای وارد کردن افزونه، مراحل زیر را دنبال کنید:

  1. آخرین نسخه را از Google Play Plugins for Unity دانلود کنید.
  2. فایل .unitypackage را با انتخاب گزینه منوی Unity IDE Assets > Import package > Custom Package و وارد کردن همه موارد وارد کنید.

ویژگی های ویرایشگر یونیتی

برای افزودن زیرمنوی Google > Play Instant در Unity، افزونه را وارد کنید. این زیر منو گزینه های زیر را ارائه می دهد.

تنظیمات ساخت

پنجره‌ای را باز می‌کند که امکان جابجایی بین حالت‌های برنامه‌نویسی نصب‌شده و فوری را فراهم می‌کند. جابجایی به Instant تغییرات زیر را انجام می دهد:

  • یک نماد تعریف اسکریپت به نام PLAY_INSTANT ایجاد می کند که می تواند برای اسکریپت نویسی با #if PLAY_INSTANT و #endif استفاده شود.
  • به‌روزرسانی‌های AndroidManifest.xml را برای برخی تغییرات مورد نیاز مانند android:targetSandboxVersion مدیریت می‌کند.

تنظیمات پخش کننده

کادر گفتگوی تنظیمات پخش کننده ، که در شکل 1 نشان داده شده است، پیشنهادهایی را برای کمک به شما در بهینه سازی پشتیبانی از Google Play Instant، توسعه در برابر APIهای گرافیکی سازگارتر و کاهش اندازه APK نمایش می دهد.

پیشنهادات خاص شامل استفاده از OpenGL ES 2.0 فقط و غیرفعال کردن Multithreaded Rendering است.
شکل 1. گفتگوی تنظیمات پخش کننده

این تنظیمات پخش کننده به تنظیمات مورد نیاز و توصیه شده تقسیم می شوند. اگر یک تنظیم دارای دکمه به‌روزرسانی مربوطه است، روی آن کلیک کنید تا تنظیمات به مقدار ترجیحی تغییر یابد.

برای کاهش بیشتر اندازه APK، Unity Package Manager را باز کنید و بسته های استفاده نشده را حذف کنید.

استقرار سریع

Quick Deploy می‌تواند با بسته‌بندی برخی از دارایی‌ها در AssetBundle ، اندازه یک برنامه فوری مبتنی بر Unity را کاهش دهد. هنگام استفاده از Quick Deploy، موتور بازی Unity و صفحه بارگیری در یک APK برنامه فوری بسته بندی می شوند و پس از شروع برنامه فوری، AssetBundle را از یک سرور بازیابی می کند.

پشتیبانی از گردش کار نصب

هدف بسیاری از برنامه‌های فوری این است که به کاربران فرصتی برای تجربه برنامه قبل از نصب نسخه کامل بدهند. افزونه Google Play Instant برای Unity API هایی را برای نمایش گفتگوی نصب فروشگاه Play و برای انتقال وضعیت از برنامه فوری به برنامه نصب شده ارائه می دهد.

نمایش درخواست نصب

یک برنامه فوری با دکمه Install می‌تواند با فراخوانی موارد زیر از کنترل‌کننده کلیک دکمه نصب، گفتگوی نصب Play Store را نمایش دهد:

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

متد ShowInstallPrompt() دارای اضافه بار است که امکان یک یا چند مورد از موارد زیر را فراهم می کند:

  • تعیین اینکه آیا کاربر از فرآیند نصب انصراف می دهد یا خیر. onActivityResult() را در فعالیت اصلی برنامه فوری لغو کنید و 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 با استفاده از postInstallIntent ارائه شده، برنامه را دوباره راه اندازی می کند. برنامه نصب شده می تواند با استفاده از موارد زیر یک مقدار تنظیم شده در postInstallIntent را بازیابی کند:

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

یادداشت ها:

  • اگر کاربر برنامه را نصب کند اما راه اندازی پس از نصب را لغو کند، ممکن است موارد اضافی موجود در postInstallIntent به برنامه نصب شده نرسد. گذراندن اضافات قصد برای حفظ حالت جلسه فعال بهتر از آن برای حفظ حالت پایدار مناسب است. برای مورد دوم به Cookie API مراجعه کنید.
  • هرکسی می‌تواند یک intent با فیلدهای اضافی برای راه‌اندازی برنامه نصب‌شده بسازد، بنابراین اگر محموله چیزی ارزشمند می‌دهد، محموله را طوری طراحی کنید که فقط یک بار بتوان از آن استفاده کرد، آن را به صورت رمزنگاری امضا کرد و امضای آن را در سرور تأیید کرد.

Cookie API روش‌هایی را برای ارسال یک کوکی (مثلاً شناسه بازیکن یا داده‌های تکمیل سطح) از یک برنامه فوری به برنامه نصب شده مربوطه ارائه می‌کند. برخلاف موارد اضافی postInstallIntent ، وضعیت کوکی در دسترس است حتی اگر کاربر بلافاصله برنامه نصب شده را راه اندازی نکند. به عنوان مثال، یک برنامه فوری می تواند کد زیر را از کنترل کننده کلیک دکمه نصب فراخوانی کند:

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.
}