Korzystanie z aplikacji błyskawicznej w Google Play w Unity

Wtyczka błyskawiczna Google Play do Unity konfiguruje projekt Unity tak, aby wersji aplikacji błyskawicznej. Z tego przewodnika dowiesz się, jak zainstalować i używać za pomocą tej wtyczki.

Pobieranie i importowanie wtyczki

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

  1. Pobierz najnowszą wersję z wtyczek Google Play w wersjach Unity.
  2. Zaimportuj plik .unitypackage, wybierając opcję menu Unity IDE Zasoby > Importuj pakiet > Pakiet niestandardowy i zaimportuj wszystkie elementy.

Funkcje edytora Unity

Zaimportuj wtyczkę, aby dodać Google > Odtwarzaj aplikację błyskawiczną w podmenu Unity. Ten zawiera następujące opcje.

Ustawienia kompilacji

Otwiera okno, które umożliwia przełączanie się między trybem Zainstalowane a Błyskawiczne. oraz trybach programistycznych. Przełączenie na Wyszukiwanie dynamiczne spowoduje wprowadzenie tych zmian:

  • Tworzy symbol definicji skryptów o nazwie PLAY_INSTANT, który można wykorzystać za pomocą skryptów #if PLAY_INSTANT i #endif.
  • Zarządza aktualizacjami pliku AndroidManifest.xml w przypadku określonych wymaganych zmian, takich jak jako android:targetSandboxVersion.

Ustawienia odtwarzacza

Okno Ustawienia odtwarzacza widoczne na rys. 1, zawiera sugestie pomocne optymalizować obsługę aplikacji błyskawicznych w Google Play, programować na podstawie interfejsów API związanych z grafiką i zmniejszyć rozmiar pliku APK.

Konkretne sugestie obejmują tylko korzystanie z OpenGL ES 2.0 oraz
  wyłączyć renderowanie wielowątkowe.
Rysunek 1. Okno Ustawienia odtwarzacza

Te ustawienia odtwarzacza są podzielone na Wymagane i Zalecane. ustawieniach. Jeśli ustawienie ma odpowiedni przycisk Aktualizuj, kliknij go, aby zmienić ustawienie na preferowaną wartość.

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

Szybkie wdrażanie

Szybkie wdrażanie może zmniejszyć rozmiar aplikacji błyskawicznych opartych na Unity przez pakiet zasobów w AssetBundle, Jeśli używasz szybkiego wdrażania, silnik gry Unity i ekran wczytywania są w pakiecie do pakietu APK aplikacji błyskawicznej. Po uruchomieniu aplikacja pobiera AssetBundle z serwera.

Obsługa przepływów pracy instalacji

Celem wielu aplikacji błyskawicznych jest umożliwienie użytkownikom wypróbowania aplikacji . Wtyczka Aplikacja błyskawiczna w Google Play do Unity udostępnia interfejsy API do wyświetlania okna instalacji Sklepu Play oraz do przenoszenia stanu z do zainstalowanej aplikacji.

Pokaż prośbę o instalację

Aplikacja błyskawiczna z przyciskiem Zainstaluj może wyświetlać informację o instalacji ze Sklepu Play przez wywołanie tego elementu z modułu obsługi kliknięć przycisku instalacji:

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

W metodzie ShowInstallPrompt() występuje przeciążenie, które pozwala na użycie jednej lub kilku następujące:

  • Określają, czy użytkownik anuluje instalację. Zastąp onActivityResult() w głównej aktywności w aplikacji błyskawicznej i sprawdź, czy RESULT_CANCELED w określonym requestCode.
  • Przekazywanie ciągu znaków strony odsyłającej do instalacji za pomocą parametru referrer.
  • Zaliczone informacje o bieżącej sesji gry: PutPostInstallIntentStringExtra()

Zostało to pokazane 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 zainstaluje aplikację, Sklep Play uruchomi ją ponownie. za pomocą podanego parametru postInstallIntent. Zainstalowana aplikacja może pobrać wartość ustaw w postInstallIntent za pomocą tego:

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

Uwagi:

  • Dodatki zawarte w pakiecie postInstallIntent mogą nie dotrzeć do zainstalowanych jeśli użytkownik zainstaluje aplikację, ale anuluje wprowadzenie po instalacji. Przekazywanie dodatkowych intencji lepiej sprawdza się w utrzymaniu aktywnego stanu sesji niż do utrzymywania stałego stanu, w tym drugim przypadku. API plików cookie.
  • Każdy może utworzyć intencję z dodatkowymi polami, aby uruchomić zainstalowane Jeśli więc ładunek przynosi jakąś wartość, zaprojektuj go w taki sposób, może zostać użyty tylko raz, podpisać go kryptograficznie i zweryfikować podpis na serwerze.

Interfejs Cookie API udostępnia metody przekazywania plików cookie (np. identyfikator gracza lub poziom z aplikacji błyskawicznej do jej zainstalowanej aplikacji. Nie podoba mi się postInstallIntent, stan pliku cookie jest dostępny nawet wtedy, gdy użytkownik nie uruchamia od razu zainstalowanej aplikacji. Aplikacja błyskawiczna może na przykład wywołanie następującego kodu z modułu obsługi kliknięć 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 ukończy instalację aplikacji, zainstalowana aplikacja może pobrać , używając 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.
}