Встроенная установка приложений из Google Play (сторонних магазинов приложений)

На этой странице описывается, как сторонние магазины приложений, участвующие в программе Catalog Access, могут интегрировать встроенную установку приложений из Google Play. Эта функция позволяет сторонним американским магазинам приложений Android направлять пользователей к загрузке приложений Play через Google Play на тех же условиях, что и при любой другой загрузке, осуществляемой непосредственно через Google Play Store.

Предварительные требования

Прежде чем интегрировать API встроенной установки в сторонний магазин приложений, необходимо выполнить следующую настройку в консоли Google Play:

  1. Зарегистрируйтесь в программе доступа к каталогу игр: следуйте инструкциям по регистрации .
  2. Подключитесь к каталогу: Зарегистрируйтесь в программе доступа к каталогу через настройки вашей консоли Play.
  3. Получение токенов доставки: Обработайте предоставленный вам экспорт из каталога приложений Play. Этот экспорт содержит необходимые catalog_token (токены доставки) для каждого приложения, которое вы имеете право распространять.

Требования

Для корректного отображения интерфейса в виде половины листа пользователям необходимо соблюдение следующих требований:

  • Пользователь должен находиться в США .
  • Минимальная версия Google Play на устройстве должна быть 52.3 .
  • Уровень API Android должен быть 24 или выше .
  • Для доступа к Play Store необходимо предоставить действительный, непросроченный catalog_token .

Инициируйте установку приложений непосредственно из вашего магазина приложений.

Чтобы вызвать встроенное окно установки, создайте экземпляр класса Intent , который будет нацелен на URL-адрес прямой ссылки Google Play и включать ваш уникальный catalog_token .

В качестве примера используйте следующий код (на Kotlin или Java):

Котлин

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
byte[] 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
}

Параметры API для встроенной установки

Для авторизации встроенной установки в URL-адресе вашего Intent или в качестве дополнительных параметров Intent необходимо передать следующие параметры:

Поле Расположение Описание Необходимый
id URL-запрос Имя пакета целевого приложения для установки. Да
referrer URL-запрос Необязательная строка отслеживания источника перехода. Нет
overlay Intention Extra Установите значение true , чтобы запросить встроенный интерфейс половины листа. Да
callerId Intention Extra Название пакета вашего одобренного стороннего магазина приложений. Да
catalog_token Intention Extra Уникальный токен доставки, предоставленный при экспорте из каталога. Примечание: Токены проверяются на актуальность, соответствие целевому пакету и соответствие пакету вызывающего абонента. Да

(Необязательно) Встроенная установка из Google Play с отображением статуса установки.

Для отображения статуса установки в процессе встроенной установки необходимо интегрировать функцию встроенной установки Google Play с функцией постоянного доступа (Persistent Affordance) с помощью SDK Google Play HSDP.

Для корректного отображения процесса установки с постоянным доступом к контенту:

  • Минимальная версия Google Play Store на целевом устройстве должна быть 52.5 или выше.
  • Уровень API Android должен быть 24 (Android M) или выше.
  • Интеграция с HSDP SDK версии 2.0.2 (скоро будет доступна) или выше.

Пример интеграции

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

Пример остановки отслеживания возможностей

Позволяет приложению-вызывателю вручную прекратить отслеживание состояния установки и закрыть всплывающее окно HPOA. Примечание: это не закроет сам лист установки HSDP, а только его интерактивную часть.

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

Состояния доступности и пользовательский опыт

Функция «Встроенная установка из Google Play с постоянным доступом» имеет два визуальных состояния:

  1. Состояние установки : Отображает миниатюру целевого приложения и индикатор выполнения установки. Щелчок по миниатюре перезапускает окно установки HSDP.
  2. Состояние после установки : Отображает значок целевого приложения с действием «Открыть». Щелчок по миниатюре открывает только что установленное приложение.
Установка После установки
Установка состояния (в развернутом виде)

Установка состояния (свернуто)
Состояние после установки