Korzystanie z aplikacji błyskawicznej w Google Play w Unity

Wtyczka Aplikacja błyskawiczna w Google Play do aplikacji Unity konfiguruje projekt w Unity tak, by stworzył błyskawiczną wersję Twojej gry. Z tego przewodnika dowiesz się, jak zainstalować wtyczkę i z niej korzystać.

Pobierz i zaimportuj wtyczkę

Wtyczka jest częścią wtyczki Google Play dla Unity. Aby zaimportować wtyczkę, wykonaj te czynności:

  1. Pobierz najnowszą wersję ze wtyczek Google Play dla wersji Unity.
  2. Zaimportuj plik .unitypackage, wybierając w menu Unity IDE opcję Assets (Zasoby) > Import package > Custom Package (Zasoby > Importuj pakiet > Custom Package) i zaimportuj wszystkie elementy.

Funkcje Edytora Unity

Zaimportuj wtyczkę, aby dodać w Unity menu podrzędne Google > Play błyskawiczne. To menu podrzędne zawiera następujące opcje.

Ustawienia kompilacji

Otwiera okno, które umożliwia przełączanie się między trybami Zainstalowane i Błyskawiczne. Przełączenie na Wyszukiwanie dynamiczne powoduje takie zmiany:

  • Tworzy symbol definiowania skryptów o nazwie PLAY_INSTANT, który można wykorzystać na potrzeby obsługi skryptów w usługach #if PLAY_INSTANT i #endif.
  • Umożliwia zarządzanie aktualizacjami pliku AndroidManifest.xml w przypadku określonych wymaganych zmian, takich jak android:targetSandboxVersion.

Ustawienia odtwarzacza

W oknie Ustawienia odtwarzacza, widocznym na ilustracji 1, znajdziesz sugestie ułatwiające zoptymalizowanie obsługi aplikacji błyskawicznych w Google Play, tworzenie aplikacji pod kątem bardziej zgodnych interfejsów API graficznych oraz zmniejszenie rozmiaru pliku APK.

Konkretne sugestie to m.in. korzystanie tylko z OpenGL ES 2.0 i wyłączenie renderowania wielowątkowego.
Rysunek 1. Okno Ustawienia odtwarzacza

Ustawienia odtwarzacza są podzielone na Wymagane i Zalecane. Jeśli ustawienie ma odpowiedni przycisk Aktualizuj, kliknij je, aby zmienić jego wartość na preferowaną.

Aby jeszcze bardziej zmniejszyć rozmiar pliku APK, otwórz Menedżera pakietów Unity i usuń wszystkie nieużywane pakiety.

Szybkie wdrażanie

Szybkie wdrażanie może zmniejszyć rozmiar aplikacji błyskawicznej opartej na Unity przez umieszczenie niektórych zasobów w obiekcie AssetBundle. W przypadku korzystania z szybkiego wdrożenia silnik gry Unity i ekran wczytywania są spakowane do pliku APK aplikacji błyskawicznej, która po uruchomieniu pobiera obiekt AssetBundle z serwera.

Obsługa przepływów pracy związanych z instalacją

W przypadku wielu aplikacji błyskawicznych celem jest umożliwienie użytkownikom wypróbowania aplikacji przed zainstalowaniem jej pełnej wersji. Wtyczka błyskawiczna w Google Play do Unity udostępnia interfejsy API, które pozwalają wyświetlać okno instalacji ze Sklepu Play oraz przenosić stan z aplikacji błyskawicznej do zainstalowanej.

Pokaż prośbę o instalację

Aplikacja błyskawiczna z przyciskiem Zainstaluj może wyświetlić okno instalacji ze Sklepu Play, wywołując ten kod z modułu obsługi kliknięcia przycisku instalacji:

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

W metodzie ShowInstallPrompt() występuje przeciążenie, które umożliwia wystąpienie co najmniej 1 z tych przyczyn:

  • Ustalam, czy użytkownik anuluje proces instalacji. Zastąp onActivityResult() w głównej aktywności aplikacji błyskawicznej i sprawdź RESULT_CANCELED w określonym requestCode.
  • Przekazywanie ciągu odsyłającego do instalacji za pomocą parametru referrer.
  • Stan zaliczenia dotyczący bieżącej sesji gry przez PutPostInstallIntentStringExtra().

W tym przykładzie:

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

Jeśli użytkownik zakończy instalację, Sklep Play uruchomi ją ponownie przy użyciu podanego postInstallIntent. Zainstalowana aplikacja może pobrać wartość ustawioną w postInstallIntent za pomocą:

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

Uwagi:

  • Jeśli użytkownik zainstaluje aplikację, dodatki w pakiecie postInstallIntent mogą nie dotrzeć do zainstalowanej aplikacji, ale anulują jej uruchomienie po zainstalowaniu. Bonusy za intencje przekazywania lepiej nadają się do zachowania aktywnego stanu sesji niż do zachowania stanu trwałego. W tym drugim przypadku chodzi o interfejs Cookie API.
  • Każdy może utworzyć intencję z dodatkowymi polami, aby uruchomić zainstalowaną aplikację. Jeśli więc ładunek zapewnia coś wartościowego, zaprojektuj ładunek w taki sposób, aby mógł zostać użyty tylko raz, podpisz go kryptograficznie i zweryfikuj podpis na serwerze.

Interfejs Cookie API udostępnia metody przekazywania pliku cookie (np. identyfikatora odtwarzacza lub danych ukończenia poziomu) z aplikacji błyskawicznej do odpowiedniej aplikacji zainstalowanej. W przeciwieństwie do dodatków postInstallIntent stan pliku cookie jest dostępny nawet wtedy, gdy użytkownik nie uruchomi od razu zainstalowanej aplikacji. Na przykład aplikacja błyskawiczna może wywołać następujący kod z modułu obsługi kliknięcia przycisku instalacji:

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

Jeśli użytkownik zainstaluje aplikację, może ona pobrać dane plików cookie za pomocą tego kodu:

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