Inline-Installationen über Google Play (App-Shops von Drittanbietern)

Auf dieser Seite wird beschrieben, wie App-Shops von Drittanbietern, die für das Programm zum Zugriff auf den Katalog registriert sind, Inline-Installationen von Google Play einbinden können. Mit dieser Funktion können US amerikanische Android-App-Shops von Drittanbietern Nutzer zum Download von Apps von Google Play weiterleiten. Der Download erfolgt über Google Play zu denselben Bedingungen wie jeder andere Download, der direkt über den Google Play Store erfolgt.

Vorbereitung

Bevor Sie die Inline-Installations-API in Ihren App-Shop von Drittanbietern einbinden, müssen Sie in der Google Play Console die folgenden Schritte ausführen:

  1. Für das Programm zum Zugriff auf den Play-Katalog registrieren:Folgen Sie der Registrierungsanleitung.
  2. Zugriff auf den Katalog aktivieren:Registrieren Sie sich in den Play Console-Einstellungen für das Programm zum Zugriff auf den Katalog.
  3. Lieferungstokens abrufen:Verarbeiten Sie den Export des Google Play-App-Katalogs, den Sie erhalten haben. Dieser Export enthält das erforderliche catalog_token (Lieferungstoken) für jede App, die Sie vertreiben dürfen.

Voraussetzungen

Damit die Half-Sheet-Oberfläche für Nutzer angezeigt werden kann, müssen die folgenden Voraussetzungen erfüllt sein:

  • Der Nutzer muss sich in den USA befinden.
  • Die Google Play-Version auf dem Gerät muss mindestens 52.3 sein.
  • Die Android API-Ebene muss 24 oder höher sein.
  • Sie müssen ein gültiges, nicht abgelaufenes catalog_token für den Zugriff auf den Google Play Store angeben.

Inline-Installationen über Ihren App-Shop aufrufen

Um das Half-Sheet für die Inline-Installation aufzurufen, erstellen Sie eine Instanz der Intent Klasse, die auf die Deeplink-URL von Google Play verweist und Ihr eindeutiges catalog_token enthält.

Verwenden Sie den folgenden Beispielcode (Kotlin oder Java) als Richtlinie:

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
}

Parameter der Inline-Installations-API

Die folgenden Parameter müssen in Ihrer Intent-URL oder als Intent-Extras übergeben werden, um die Inline-Installation zu autorisieren:

Feld Typ Standort Beschreibung Erforderlich
id String URL-Abfrage Der Paketname der Ziel-App, die installiert werden soll. Ja
referrer String URL-Abfrage Ein optionaler String für das Referrer-Tracking. Nein
overlay boolean Intent-Extra Auf true setzen, um die Half-Sheet-Oberfläche für die Inline-Installation anzufordern. Ja
callerId String Intent-Extra Der Paketname Ihres genehmigten App-Shops von Drittanbietern. Ja
catalog_token String Intent-Extra Das eindeutige Lieferungstoken, das in Ihrem Export für den Zugriff auf den Katalog angegeben ist. Hinweis:Tokens werden auf Aktualität, Übereinstimmung mit dem Zielpaket und Übereinstimmung mit dem Aufruferpaket geprüft. Ja

(Optional) Google Play-Inline-Installation mit Overlay für den Installationsstatus

Wenn Sie ein Overlay für den Installationsstatus im Inline-Installationsprozess anzeigen möchten, müssen Sie die Google Play-Inline-Installation mit der Funktion „Persistent Affordance“ mithilfe des Google Play HSDP SDK einbinden.

Damit der Inline-Installationsprozess mit der Funktion „Persistent Affordance“ angezeigt wird, müssen folgende Voraussetzungen erfüllt sein:

  • Die Google Play Store-Version auf dem Zielgerät muss mindestens 52.6 sein.
  • Die Android API-Ebene muss 24 (Android M) oder höher sein.
  • Die Einbindung muss mit dem HSDP SDK in Version 2.1.0 oder höher erfolgen.

Beispiel für die Einbindung

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

Beispiel für das Beenden des Affordance-Trackings

Ermöglicht der aufrufenden App, das Tracking des Installationsstatus manuell zu beenden und das HPOA-Overlay zu schließen. Hinweis: Dadurch wird nicht das HSDP-Installations-Sheet selbst geschlossen, sondern nur die Affordance.

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

Affordance-Status und Benutzeroberfläche

Die Funktion „Google Play-Inline-Installation mit Persistent Affordance“ hat zwei visuelle Status:

  1. Installationsstatus: Zeigt eine Miniaturansicht der Ziel-App und einen Spinner für den Installationsfortschritt an. Wenn Sie auf die Miniaturansicht klicken, wird das HSDP-Installations-Sheet neu gestartet.
  2. Status nach der Installation: Zeigt das Symbol der Ziel-App mit der Aktion „Öffnen“ an. Wenn Sie auf die Miniaturansicht klicken, wird die neu installierte App geöffnet.
Installation Nach der Installation
Installationsstatus (erweitert)

Installationsstatus (minimiert)
Status nach der Installation