Instalacje wbudowane w Google Play (sklepy innych firm z aplikacjami)

Na tej stronie opisujemy, jak sklepy z aplikacjami innych firm zarejestrowane w Programie dostępu do katalogu mogą zintegrować instalacje bezpośrednie z Google Play. Ta funkcja umożliwia sklepom z aplikacjami na Androida innych firm w Stanach Zjednoczonych kierowanie użytkowników do pobierania aplikacji z Google Play na tych samych warunkach co każde inne pobieranie bezpośrednio ze Sklepu Google Play.

Wymagania wstępne

Zanim zintegrujesz interfejs API instalacji bezpośrednich w sklepie z aplikacjami innej firmy, musisz wykonać te czynności w Konsoli Google Play:

  1. Zarejestruj się w Programie dostępu do katalogu Play: postępuj zgodnie z instrukcjami rejestracji.
  2. Zgłoś chęć udziału w Programie dostępu do katalogu: zarejestruj się w Programie dostępu do katalogu w ustawieniach Konsoli Play.
  3. Pobierz tokeny dostawy: przetwórz wyeksportowany katalog aplikacji w Google Play. Ten eksport zawiera niezbędny catalog_token (token dostawy) dla każdej aplikacji, którą możesz rozpowszechniać.

Wymagania

Aby interfejs półekranu był prawidłowo wyświetlany użytkownikom, muszą być spełnione te wymagania:

  • Użytkownik musi znajdować się w Stanach Zjednoczonych.
  • Minimalna wersja Google Play na urządzeniu musi wynosić 52.3.
  • Poziom interfejsu API Androida musi wynosić 24 lub więcej.
  • Musisz podać prawidłowy, nieprzeterminowany catalog_token, aby uzyskać dostęp do Sklepu Play.

Wywoływanie instalacji bezpośrednich ze sklepu z aplikacjami

Aby wywołać półekran instalacji bezpośredniej, utwórz instancję klasy Intent, która kieruje na adres URL linku bezpośredniego do Google Play i zawiera Twój unikalny catalog_token.

Jako wskazówkę możesz użyć tego przykładowego kodu (w Kotlinie lub Javie):

Kotlin

val intent = Intent(Intent.ACTION_VIEW)
val referrer = "<Your referrer string>"
val id = "<Package name of the app to be installed>"
val callerId = "<Package name of your third-party app store>"

// Retrieve the app-specific token from your processed catalog export
val catalogToken = getVerificationTokenByDocId(id)

intent.setPackage("com.android.vending")
val deepLinkUrl = "https://play.google.com/d?id=$id&referrer=$referrer"
intent.data = Uri.parse(deepLinkUrl)

// Set the required intent extras
intent.putExtra("overlay", true)
intent.putExtra("callerId", callerId)
intent.putExtra("catalog_token", catalogToken)

val packageManager = context.getPackageManager()
if (intent.resolveActivity(packageManager) != null) {
  startActivityForResult(intent, 0) // Call with a request code to receive ActivityResults
}

Java

Intent intent = new Intent(Intent.ACTION_VIEW);
String referrer = "<Your referrer string>";
String id = "<Package name of the app to be installed>";
String callerId = "<Package name of your third-party app store>";

// Retrieve the app-specific token from your processed catalog export
String catalogToken = getVerificationTokenByDocId(id);

intent.setPackage("com.android.vending");
String deepLinkUrl = "https://play.google.com/d?id=" + id + "&referrer=" + referrer;
intent.setData(Uri.parse(deepLinkUrl));

// Set the required intent extras
intent.putExtra("overlay", true);
intent.putExtra("callerId", callerId);
intent.putExtra("catalog_token", catalogToken);

PackageManager packageManager = context.getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
  startActivityForResult(intent, 0); // Call with a request code to receive ActivityResults
}

Parametry interfejsu API instalacji bezpośrednich

Aby autoryzować instalację bezpośrednią, musisz przekazać te parametry w adresie URL intencji lub jako dodatkowe informacje o intencji:

Pole Typ Lokalizacja Opis Wymagane
id String Zapytanie URL Nazwa pakietu aplikacji docelowej, która ma zostać zainstalowana. Tak
referrer String Zapytanie URL Opcjonalny ciąg znaków do śledzenia źródła. Nie
overlay boolean Dodatkowe informacje o intencji Ustaw wartość true, aby wysłać żądanie interfejsu półekranu. Tak
callerId String Dodatkowe informacje o intencji Nazwa pakietu zatwierdzonego sklepu z aplikacjami innej firmy. Tak
catalog_token String Dodatkowe informacje o intencji Unikalny token dostawy podany w wyeksportowanym katalogu. Uwaga: tokeny są weryfikowane pod kątem aktualności, zgodności z pakietem docelowym i zgodności z pakietem wywołującym. Tak

(Opcjonalnie) Instalacja bezpośrednia z Google Play z nakładką stanu instalacji

Aby wyświetlać nakładkę stanu instalacji w trakcie instalacji bezpośredniej, musisz zintegrować instalację bezpośrednią z Google Play z funkcją trwałego elementu interfejsu za pomocą pakietu Google Play HSDP SDK.

Aby wyświetlić instalację bezpośrednią z trwałym elementem interfejsu:

  • Minimalna wersja Sklepu Google Play na urządzeniu docelowym musi wynosić 52.6 lub więcej.
  • Poziom interfejsu API Androida musi wynosić 24 (Android M) lub więcej.
  • Zintegruj pakiet HSDP SDK w wersji 2.1.0 lub nowszej.

Przykład integracji

Kotlin

// Step 1: Initialize HSDP Service
// Note: Calling create(activity) automatically configures useServiceBasedHsdp = false
// (Activity Path) under the hood without requiring manual boolean flags.
val hsdpService = HsdpDeepLinkServiceFactory.create(activity)

// Step 2: Construct Extra Query Parameters with Catalog Token
val extraQueryParams = mapOf("catalog_token" to "YOUR_SECURE_CATALOG_TOKEN_VALUE")

// Step 3: Trigger Inline Install Flow
hsdpService.open(
    targetAppPackageName = "com.example.targetapp",
    referrer = "3pas_ad_campaign_123",
    listener = object : HsdpDeepLinkServiceListener {
        override fun onDeepLinkStarted() {
            // Inline details dialog started successfully
        }
        override fun onAffordanceStarted() {
            // HPOA persistent affordance UI attached
        }
        override fun onAffordanceEnded() {
            // Affordance UI detached
        }
        override fun onError(errorMessage: String) {
            // Handle error or fallback
        }
    },
    extraQueryParams = extraQueryParams
)

Java

// Step 1: Initialize HSDP Service
// Note: Calling create(activity) automatically configures useServiceBasedHsdp = false
// (Activity Path) under the hood without requiring manual boolean flags.
HsdpDeepLinkService hsdpService = HsdpDeepLinkServiceFactory.create(activity);

// Step 2: Construct Extra Query Parameters with Catalog Token
Map<String, String> extraQueryParams = new HashMap<>();
extraQueryParams.put("catalog_token", "YOUR_SECURE_CATALOG_TOKEN_VALUE");

// Step 3: Trigger Inline Install Flow
hsdpService.open(
    "com.example.targetapp",
    "3pas_ad_campaign_123",
    new HsdpDeepLinkServiceListener() {
      @Override
      public void onDeepLinkStarted() {
        // Inline details dialog started successfully
      }

      @Override
      public void onAffordanceStarted() {
        // HPOA persistent affordance UI attached
      }

      @Override
      public void onAffordanceEnded() {
        // Affordance UI detached
      }

      @Override
      public void onError(String errorMessage) {
        // Handle error or fallback
      }
    },
    extraQueryParams);

Przykład zatrzymania śledzenia afordancji

Umożliwia aplikacji wywołującej ręczne zatrzymanie śledzenia stanu instalacji i zamknięcie nakładki HPOA. Uwaga: nie spowoduje to zamknięcia samego arkusza instalacji HSDP, tylko elementu interfejsu.

Kotlin

// Stop tracking the installation state and dismiss the affordance overlay
hsdpService.stopAffordance(
    targetAppPackageName = "com.example.targetapp",
    listener = object : HsdpDeepLinkService.AffordanceListener {
        override fun onAffordanceStopped() {
            // Affordance overlay stopped successfully
        }
    }
)

Java

// Stop tracking the installation state and dismiss the affordance overlay
hsdpService.stopAffordance(
    "com.example.targetapp",
    new HsdpDeepLinkService.AffordanceListener() {
      @Override
      public void onAffordanceStopped() {
        // Affordance overlay stopped successfully
      }
    });

Stany elementu interfejsu i UX

Funkcja instalacji bezpośredniej z Google Play z trwałym elementem interfejsu ma 2 stany wizualne:

  1. Stan instalowania: wyświetla miniaturę aplikacji docelowej i spinner postępu instalacji. Kliknięcie miniatury powoduje ponowne uruchomienie arkusza instalacji HSDP.
  2. Stan po instalacji: wyświetla ikonę aplikacji docelowej z działaniem „Otwórz”. Kliknięcie miniatury powoduje otwarcie nowo zainstalowanej aplikacji.
Instalowanie Po instalacji
Stan instalacji (rozwinięty)

Stan instalacji (zwinięty)
Stan po instalacji