Tính năng Cài đặt trong dòng của Google Play (cửa hàng ứng dụng bên thứ ba)

Trang này mô tả cách các cửa hàng ứng dụng bên thứ ba đã đăng ký tham gia chương trình Quyền truy cập vào danh mục có thể tích hợp tính năng cài đặt trong dòng của Google Play. Đây là một tính năng cho phép các cửa hàng ứng dụng Android bên thứ ba tại Hoa Kỳ hướng người dùng tải ứng dụng của Play xuống thông qua Google Play theo các điều khoản tương tự như mọi lượt tải xuống khác được thực hiện trực tiếp qua Cửa hàng Google Play.

Điều kiện tiên quyết

Trước khi tích hợp API cài đặt trực tiếp vào cửa hàng ứng dụng bên thứ ba, bạn phải hoàn tất quy trình thiết lập sau đây trong Google Play Console:

  1. Đăng ký tham gia chương trình Quyền truy cập vào danh mục của Play: Làm theo hướng dẫn đăng ký.
  2. Chọn sử dụng Quyền truy cập vào danh mục: Đăng ký tham gia chương trình Quyền truy cập vào danh mục thông qua phần cài đặt Play Console.
  3. Truy xuất mã thông báo phân phối: Xử lý tệp xuất Danh mục ứng dụng trên Play được cung cấp cho bạn. Tệp xuất này chứa catalog_token (mã thông báo phân phối) cần thiết cho từng ứng dụng mà bạn đủ điều kiện phân phối.

Yêu cầu

Để giao diện nửa trang xuất hiện thành công với người dùng, bạn phải đáp ứng các yêu cầu sau:

  • Người dùng phải ở Hoa Kỳ.
  • Thiết bị phải có phiên bản Google Play tối thiểu là 52.3.
  • Cấp độ API Android phải là 24 trở lên.
  • Bạn phải cung cấp một catalog_token hợp lệ và chưa hết hạn để truy cập vào Cửa hàng Play.

Gọi tính năng cài đặt trực tiếp từ cửa hàng ứng dụng

Để gọi trang bán phần cài đặt trong dòng, hãy tạo một thực thể của lớp Intent nhắm đến URL đường liên kết sâu của Google Play và bao gồm catalog_token duy nhất của bạn.

Hãy sử dụng đoạn mã mẫu sau (Kotlin hoặc Java) làm hướng dẫn:

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

Các tham số của API Cài đặt trực tiếp

Bạn phải truyền các tham số sau trong URL của Ý định hoặc dưới dạng Ý định bổ sung để uỷ quyền cho hoạt động cài đặt trực tuyến:

Trường Vị trí Mô tả Bắt buộc
id Truy vấn URL Tên gói của ứng dụng mục tiêu cần cài đặt.
referrer Truy vấn URL Một chuỗi theo dõi đơn vị giới thiệu không bắt buộc. Không
overlay Dữ liệu bổ sung về ý định Đặt thành true để yêu cầu giao diện nửa trang nội tuyến.
callerId Dữ liệu bổ sung về ý định Tên gói của cửa hàng ứng dụng bên thứ ba được phê duyệt.
catalog_token Dữ liệu bổ sung về ý định Mã thông báo phân phối duy nhất có trong tệp xuất Quyền truy cập vào danh mục. Lưu ý: Mã thông báo được xác thực về độ mới, mức độ khớp với gói mục tiêu và mức độ khớp với gói gọi.

(Không bắt buộc) Tính năng Cài đặt nội tuyến của Google Play có lớp phủ trạng thái cài đặt

Để hiện lớp phủ trạng thái cài đặt bằng quy trình cài đặt trực tiếp, bạn cần tích hợp tính năng Cài đặt trực tiếp của Google Play với tính năng Hiển thị liên tục bằng Google Play HSDP SDK.

Để quy trình cài đặt trực tiếp có thể xuất hiện với thành phần hiển thị liên tục, hãy làm như sau:

  • Thiết bị đích phải có Cửa hàng Google Play phiên bản tối thiểu là 52.5 trở lên.
  • Cấp độ API Android phải là 24 (Android M) trở lên.
  • Tích hợp với HSDP SDK có phiên bản 2.0.2 (sắp ra mắt) trở lên.

Ví dụ về việc tích hợp

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

Ví dụ về việc ngừng theo dõi thành phần

Cho phép ứng dụng gọi dừng theo dõi trạng thái cài đặt theo cách thủ công và loại bỏ lớp phủ HPOA. Lưu ý: Thao tác này sẽ không loại bỏ trang cài đặt HSDP mà chỉ loại bỏ thành phần hiển thị.

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

Trạng thái gợi ý và trải nghiệm người dùng

Tính năng Cài đặt nội tuyến của Google Play với thành phần hiển thị liên tục có 2 trạng thái trực quan:

  1. Trạng thái cài đặt: Hiển thị hình thu nhỏ của ứng dụng mục tiêu và một biểu tượng xoay cho biết tiến trình cài đặt. Khi bạn nhấp vào hình thu nhỏ, trang cài đặt HSDP sẽ xuất hiện lại.
  2. Trạng thái sau khi cài đặt: Hiển thị biểu tượng ứng dụng mục tiêu kèm theo hành động "Mở". Khi bạn nhấp vào hình thu nhỏ, ứng dụng mới cài đặt sẽ mở ra.
Cài đặt Sau khi cài đặt
Trạng thái cài đặt (Đã mở rộng)

Trạng thái cài đặt (Thu gọn)
Trạng thái sau khi cài đặt