שימוש ב-'Google Play ללא התקנה' ב-Unity

הפלאגין של Google Play ללא התקנה ל-Unity מגדיר את הפרויקט ב-Unity ליצירת גרסת האפליקציה ללא התקנה של המשחק. במדריך הזה מוסבר איך להתקין את האפליקציה ולהשתמש בה את הפלאגין הזה.

הורדה וייבוא של הפלאגין

הפלאגין הוא חלק מיישומי הפלאגין של Google Play ל-Unity. כדי לייבא את הפלאגין, מבצעים את השלבים הבאים:

  1. מורידים את הגרסה האחרונה מGoogle Play Plugins עבור גרסאות Unity.
  2. כדי לייבא את הקובץ .unitypackage, בוחרים באפשרות התפריט Unity IDE נכסים > ייבא חבילה > חבילה מותאמת אישית וייבוא כל הפריטים.

תכונות של Unity Editor

ייבא את הפלאגין כדי להוסיף Google > תפריט המשנה 'הפעלה ללא התקנה' ב-Unity. הזה תפריט המשנה מספק את האפשרויות הבאות.

הגדרות Build

פתיחת חלון שמאפשר מעבר בין מותקנות לבין ללא התקנה מצבי פיתוח. המעבר לגרסה ללא התקנה יבצע את השינויים הבאים:

  • יוצרת סמל להגדרת סקריפטים בשם PLAY_INSTANT וניתן להשתמש בו כתיבת סקריפט עם #if PLAY_INSTANT ו-#endif.
  • ניהול העדכונים בקובץ AndroidManifest.xml עבור שינויים נדרשים מסוימים כמו בתור android:targetSandboxVersion

הגדרות הנגן

בתיבת הדו-שיח הגדרות הנגן, שמוצגת באיור 1, מוצגות הצעות לעזרה אופטימיזציה לתמיכה ב-'Google Play ללא התקנה', פיתוח כנגד התאמה משופרת ולהפחית את גודל ה-APK.

הצעות ספציפיות כוללות שימוש ב-OpenGL ES 2.0 בלבד
  השבתת עיבוד עם שרשורים מרובים.
איור 1. תיבת הדו-שיח הגדרות נגן

הגדרות הנגן האלה מתחלקות לקבוצות חובה ומומלצות הגדרות. אם להגדרה יש לחצן עדכון תואם, לוחצים עליו כדי לשנות את ההגדרה לערך המועדף.

כדי להקטין את ה-APK, פותחים את Unity Package Manager (מנהל החבילות של Unity) ומסירים חבילות שלא בשימוש.

פריסה מהירה

פריסה מהירה יכולה לצמצם את הגודל של אפליקציות ללא התקנה שמבוססות על Unity, על ידי אריזת חלק בנכס AssetBundle. כשמשתמשים בפריסה מהירה, מנוע המשחק של Unity ומסך הטעינה נארזים ב-APK של אפליקציה ללא התקנה, ולאחר שהאפליקציה ללא התקנה מופעלת היא מאחזרת את AssetBundle משרת.

תמיכה בתהליכי ההתקנה להתקנה

המטרה של הרבה אפליקציות ללא התקנה היא לתת למשתמשים הזדמנות להתנסות באפליקציה לפני התקנת הגרסה המלאה. הפלאגין של Google Play ללא התקנה ל-Unity מספק ממשקי API להצגת תיבת דו-שיח להתקנה של חנות Play ולהעברת מצב התקנה מיידית של האפליקציה.

הצגה של בקשת התקנה

אפליקציה ללא התקנה עם לחצן התקנה יכולה להציג התקנה מחנות Play על ידי קריאה לפעולה הבאה מתוך רכיב ה-handler של קליקים על לחצן ההתקנה:

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

ל-method 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 עם שדות נוספים כדי להפעיל את האפליקציות המותקנות כך שאם המטען הייעודי (payload) מעניק משהו בעל ערך, צריך לעצב את המטען הייעודי (payload) כך אפשר להשתמש בו רק פעם אחת, לחתום עליו באופן קריפטוגרפי ולאמת את לחתימה בשרת.

Cookie API מספק שיטות להעברת קובץ cookie (למשל מזהה נגן או רמה נתוני השלמה) מאפליקציה ללא התקנה לאפליקציה המותקנת המתאימה. ביטול הלייק postInstallIntent תוספות, המצב של קובץ ה-cookie זמין גם אם המשתמש לא מפעילה באופן מיידי את האפליקציה שמותקנת. לדוגמה, אפליקציה ללא התקנה יכולה מפעילים את הקוד הבא מ-handler של קליקים על לחצן התקנה:

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);
}

אם המשתמש משלים את התקנת האפליקציה, האפליקציה המותקנת יכולה לאחזר את קובצי Cookie באמצעות הקוד הבא:

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