На этой странице описывается, как сторонние магазины приложений, участвующие в программе Catalog Access, могут интегрировать встроенную установку приложений из Google Play. Эта функция позволяет сторонним американским магазинам приложений Android направлять пользователей к загрузке приложений Play через Google Play на тех же условиях, что и при любой другой загрузке, осуществляемой непосредственно через Google Play Store.
Предварительные требования
Прежде чем интегрировать API встроенной установки в сторонний магазин приложений, необходимо выполнить следующую настройку в консоли Google Play:
- Зарегистрируйтесь в программе доступа к каталогу игр: следуйте инструкциям по регистрации .
- Подключитесь к каталогу: Зарегистрируйтесь в программе доступа к каталогу через настройки вашей консоли Play.
- Получение токенов доставки: Обработайте предоставленный вам экспорт из каталога приложений 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 с постоянным доступом» имеет два визуальных состояния:
- Состояние установки : Отображает миниатюру целевого приложения и индикатор выполнения установки. Щелчок по миниатюре перезапускает окно установки HSDP.
- Состояние после установки : Отображает значок целевого приложения с действием «Открыть». Щелчок по миниатюре открывает только что установленное приложение.
| Установка | После установки |
|---|---|
![]() ![]() | ![]() |


