Korzystanie z aplikacji błyskawicznej w Google Play w Unity

Ostrzeżenie: aplikacja błyskawiczna w Google Play nie będzie już dostępna. Od grudnia 2025 r. nie będzie można publikować aplikacji błyskawicznych w Google Play, a wszystkie interfejsy Instant API Usług Google Play przestaną działać. Użytkownicy nie będą już otrzymywać aplikacji błyskawicznych z Google Play za pomocą żadnego mechanizmu.

Wprowadzamy tę zmianę na podstawie opinii deweloperów i naszych ciągłych inwestycji w ulepszanie ekosystemu od czasu wprowadzenia aplikacji błyskawicznych w Google Play.

Aby nadal optymalizować wzrost liczby użytkowników, zachęcamy deweloperów do kierowania użytkowników do standardowej aplikacji lub gry za pomocą precyzyjnych linków, które w razie potrzeby przekierowują ich do określonych ścieżek lub funkcji.

Wtyczka Google Play Instant do Unity konfiguruje projekt Unity tak, aby utworzyć wersję błyskawiczną gry. Z tego przewodnika dowiesz się, jak zainstalować i używać tej wtyczki.

Pobieranie i importowanie wtyczki

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

  1. Pobierz najnowszą wersję z sekcji Wersje wtyczek Google Play do silnika Unity.
  2. Zaimportuj plik .unitypackage, wybierając w menu IDE Unity opcję Assets > Import package > Custom Package i importując wszystkie elementy.

Funkcje Edytora Unity

Zaimportuj wtyczkę, aby dodać w Unity podmenu Google > Play Instant. To menu podrzędne zawiera te opcje:

Ustawienia kompilacji

Otwiera okno, w którym można przełączać się między trybami programowania ZainstalowanyNatychmiastowy. Przełączenie na natychmiastowe powoduje wprowadzenie tych zmian:

  • Tworzy symbol definiowania skryptów o nazwie PLAY_INSTANT, którego można używać do skryptów z #if PLAY_INSTANT i #endif.
  • Zarządza aktualizacjami pliku AndroidManifest.xml w przypadku niektórych wymaganych zmian, takich jak android:targetSandboxVersion.

Ustawienia odtwarzacza

W oknie Ustawienia odtwarzacza (rysunek 1) wyświetlają się sugestie, które pomogą Ci zoptymalizować obsługę aplikacji natychmiastowych w Google Play, tworzyć aplikacje z bardziej kompatybilnymi interfejsami API grafiki i zmniejszyć rozmiar pliku APK.

Konkretne sugestie obejmują używanie tylko 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 przycisk Zaktualizuj, kliknij go, aby zmienić ustawienie na preferowaną wartość.

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

Szybkie wdrażanie

Szybkie wdrażanie może zmniejszyć rozmiar aplikacji natychmiastowej opartej na Unity, pakując niektóre zasoby w pakiet zasobów. W przypadku szybkiego wdrażania silnik gier Unity i ekran wczytywania są pakowane do pliku APK aplikacji błyskawicznej, a po uruchomieniu aplikacja błyskawiczna pobiera pakiet zasobów z serwera.

Obsługa przepływów instalacji

Celem wielu aplikacji błyskawicznych jest umożliwienie użytkownikom wypróbowania aplikacji przed zainstalowaniem jej pełnej wersji. Wtyczka Google Play Instant do silnika Unity udostępnia interfejsy API do wyświetlania okna instalacji ze Sklepu Play i przenoszenia stanu z aplikacji natychmiastowej do zainstalowanej.

Wyświetlanie prośby o instalację

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

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

Metoda ShowInstallPrompt() ma przeciążenie, które umożliwia wykonanie co najmniej jednego z tych działań:

  • sprawdzanie, czy użytkownik anuluje proces instalacji; Zastąp onActivityResult() w głównym działaniu aplikacji błyskawicznej i sprawdź, czy na określonym requestCode występuje RESULT_CANCELED.
  • Przekazywanie ciągu tekstowego strony odsyłającej instalację za pomocą parametru referrer.
  • Przekazywanie stanu bieżącej sesji gry za pomocą parametru PutPostInstallIntentStringExtra().

Pokazano je 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ę aplikacji, Sklep Play ponownie ją uruchomi, używając podanego parametru postInstallIntent. Zainstalowana aplikacja może pobrać wartość ustawioną w postInstallIntent, korzystając z tego kodu:

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

Uwagi:

  • Dodatki zawarte w postInstallIntent mogą nie dotrzeć do zainstalowanej aplikacji, jeśli użytkownik zainstaluje aplikację, ale anuluje uruchomienie po instalacji. Przekazywanie dodatkowych informacji o intencji lepiej sprawdza się w przypadku zachowywania stanu aktywnej sesji niż stanu trwałego. W tym drugim przypadku zapoznaj się z interfejsem Cookie API.
  • Każdy może utworzyć intencję z dodatkowymi polami, aby uruchomić zainstalowaną aplikację. Jeśli ładunek przyznaje coś wartościowego, zaprojektuj go tak, aby można go było użyć tylko raz, podpisz go kryptograficznie i zweryfikuj podpis na serwerze.

Interfejs Cookie API udostępnia metody przekazywania pliku cookie (np. identyfikatora gracza lub danych o ukończeniu poziomu) z aplikacji błyskawicznej do odpowiadającej jej zainstalowanej aplikacji. W przeciwieństwie do postInstallIntentdodatków 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ć ten kod z procedury 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 zakończy instalację aplikacji, zainstalowana aplikacja może pobrać dane z pliku 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.
}