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ą jakiegokolwiek mechanizmu.

Wprowadzamy tę zmianę kierując się opinią deweloperów i naszymi ciągłymi inwestycjami w ulepszanie ekosystemu od czasu wprowadzenia Aplikacji błyskawicznych w Google Play.

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

Wtyczka Aplikacja błyskawiczna w Google Play do silnika Unity konfiguruje projekt Unity tak, aby utworzyć wersję aplikacji błyskawicznej gry. W tym przewodniku opisujemy, jak zainstalować i używać tej wtyczki.

Pobieranie i importowanie wtyczki

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

  1. Pobierz najnowszą wersję z sekcji Wtyczki Google Play do silnika Unity.
  2. Zaimportuj plik .unitypackage, wybierając w menu Unity IDE opcję Assets > Import package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet) i importując wszystkie elementy.

Funkcje edytora Unity

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

Build Settings

Otwiera okno, które umożliwia przełączanie się między trybami programowania Installed (Zainstalowane) i Instant (Błyskawiczne). Przełączenie na Instant (Błyskawiczne) powoduje wprowadzenie tych zmian:

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

Player Settings

Okno Player Settings (Ustawienia odtwarzacza) widoczne na rysunku 1 zawiera sugestie, które pomogą Ci zoptymalizować obsługę Aplikacji błyskawicznych w Google Play, tworzyć aplikacje z użyciem bardziej kompatybilnych interfejsów 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 Player Settings (Ustawienia odtwarzacza)

Te ustawienia odtwarzacza są podzielone na Required (Wymagane) i Recommended (Zalecane). Jeśli ustawienie ma odpowiadający mu przycisk Update (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żywane pakiety.

Quick Deploy

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

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

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

Wyświetlanie prośby o instalację

Aplikacja błyskawiczna z przyciskiem Install (Zainstaluj) może wyświetlać okno instalacji w Sklepie Play, wywołując z 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 jednej z tych czynności:

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

Te czynności są 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 zakończy instalację aplikacji, Sklep Play ponownie uruchomi aplikację za pomocą podanego postInstallIntent. Zainstalowana aplikacja może pobrać wartość ustawioną w postInstallIntent za pomocą 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 dodatków do 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, zaszyfruj go 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 aplikacji instalowanej. W przeciwieństwie do dodatków postInstallIntent stan pliku cookie jest dostępny nawet wtedy, gdy użytkownik nie uruchomi od razu aplikacji instalowanej. Na przykład aplikacja błyskawiczna może wywołać ten kod z 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 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.
}