Hiển thị flows & paywalls - Android

Display flows and paywalls
Flow Được tạo trong Flow Builder — render nguyên bản trên thiết bị, không cần WebView
Paywall của Paywall Builder Toàn bộ nội dung Paywall Builder hiện có

Nếu bạn đã tạo một flow hoặc paywall, bạn không cần lo lắng về việc render nó trong code ứng dụng di động để hiển thị cho người dùng. Flow hoặc paywall đó đã chứa cả nội dung cần hiển thị lẫn cách thức hiển thị.

Hướng dẫn này dành cho các flow và paywall xây dựng bằng Paywall Builder mới được render bởi Adapty. Quy trình sẽ khác đối với paywall dùng Remote Config và Observer mode.

Để lấy đối tượng flowConfiguration dùng bên dưới, xem Lấy flows & paywalls.

Các tham số yêu cầu:

Tham sốBắt buộcMô tả
flowConfigurationbắt buộcCung cấp một đối tượng AdaptyUI.FlowConfiguration chứa thông tin hiển thị của flow. Dùng phương thức AdaptyUI.getFlowConfiguration(flow) để tải nó. Xem thêm tại chủ đề Fetch the view configuration.
productstùy chọnCung cấp một mảng AdaptyPaywallProduct để tối ưu thời điểm hiển thị sản phẩm trên màn hình. Nếu truyền null, AdaptyUI sẽ tự động lấy các sản phẩm cần thiết.
eventListenertùy chọnCung cấp một AdaptyFlowEventListener để lắng nghe các sự kiện của flow. Nên dùng AdaptyFlowDefaultEventListener để tiện hơn. Xem thêm tại chủ đề Handle flow & paywall events.
insetstùy chọn

Insets là khoảng trống xung quanh flow giúp các phần tử có thể nhấn không bị ẩn sau thanh hệ thống.

Mặc định: Unspecified — Adapty sẽ tự động điều chỉnh insets, phù hợp với các flow hiển thị toàn màn hình (edge-to-edge).

Nếu flow của bạn không phải edge-to-edge, bạn có thể muốn đặt insets tùy chỉnh. Xem hướng dẫn tại phần Change flow insets bên dưới.

customAssetstùy chọnTruyền một đối tượng AdaptyCustomAssets để thay thế hình ảnh và video trong flow hoặc paywall của bạn lúc runtime. Xem thêm tại Customize assets.
tagResolvertùy chọnDùng AdaptyUiTagResolver để xử lý các thẻ tùy chỉnh trong văn bản của flow. Resolver này nhận một tham số tag và chuyển đổi nó thành chuỗi tương ứng. Xem thêm tại chủ đề Custom tags in Paywall Builder.
timerResolvertùy chọnTruyền resolver vào đây nếu bạn muốn dùng chức năng hẹn giờ tùy chỉnh.

Muốn xem ví dụ thực tế về cách tích hợp Adapty SDK vào ứng dụng di động? Hãy xem ứng dụng mẫu của chúng tôi, nơi minh họa toàn bộ quá trình thiết lập, bao gồm hiển thị paywall, thực hiện mua hàng và các chức năng cơ bản khác.

Thay đổi inset của flow

Inset là khoảng cách xung quanh flow, giúp các phần tử có thể nhấn không bị che khuất bởi thanh hệ thống. Mặc định, Adapty sẽ tự động điều chỉnh inset, phù hợp với các flow hiển thị toàn màn hình (edge-to-edge).

Nếu flow của bạn không phải edge-to-edge, bạn có thể muốn đặt inset tùy chỉnh:

  • Nếu cả thanh trạng thái lẫn thanh điều hướng đều không chồng lên AdaptyFlowView, hãy dùng AdaptyFlowInsets.None.
  • Với các trường hợp phức tạp hơn, ví dụ như flow chồng lên thanh trạng thái phía trên nhưng không chồng lên phần dưới, bạn có thể chỉ đặt bottomInset về 0 như ví dụ dưới đây:

Sử dụng timer do nhà phát triển định nghĩa

Để sử dụng timer do nhà phát triển định nghĩa trong ứng dụng mobile của bạn, hãy tạo một đối tượng timerResolver—một dictionary hoặc map liên kết các timer tùy chỉnh với các giá trị chuỗi sẽ thay thế chúng khi flow được render. Đây là ví dụ:

Trong ví dụ này, CUSTOM_TIMER_NYTimer ID của timer do lập trình viên tự định nghĩa, được thiết lập trong Adapty dashboard. timerResolver đảm bảo ứng dụng của bạn cập nhật timer động với giá trị chính xác—chẳng hạn như 13d 09h 03m 34s (được tính bằng thời điểm kết thúc của timer, ví dụ như Ngày đầu năm mới, trừ đi thời điểm hiện tại).

Sử dụng custom tag

Để sử dụng custom tag trong ứng dụng mobile, hãy tạo một đối tượng tagResolver—một dictionary hoặc map liên kết các custom tag với giá trị chuỗi sẽ thay thế chúng khi flow được render. Ví dụ:

Trong ví dụ này, USERNAME là custom tag bạn đã nhập trong Adapty dashboard dưới dạng <USERNAME/>. tagResolver đảm bảo rằng ứng dụng của bạn tự động thay thế custom tag này bằng giá trị được chỉ định—ví dụ như John.

Chúng tôi khuyến nghị tạo và điền dữ liệu vào tagResolver ngay trước khi hiển thị flow của bạn. Sau khi sẵn sàng, hãy truyền nó vào phương thức AdaptyUI mà bạn dùng để hiển thị flow.

Thay đổi màu chỉ báo tải của flow

Bạn có thể ghi đè màu mặc định của chỉ báo tải theo cách sau:


<style name="AppTheme" parent="android:Theme.Material.Light.NoActionBar">

    <item name="adapty_progressIndicatorColor">@color/yourColor</item>
</style>

Nếu bạn đã tùy chỉnh paywall bằng Paywall Builder, bạn không cần lo lắng về việc render nó trong code ứng dụng để hiển thị cho người dùng. Paywall đó đã bao gồm cả nội dung hiển thị lẫn cách thức hiển thị.

Hướng dẫn này chỉ dành cho paywall dùng Paywall Builder mới yêu cầu SDK v3.0. Quy trình hiển thị paywall sẽ khác nhau tùy theo phiên bản Paywall Builder được dùng để thiết kế, paywall dùng Remote Config, và chế độ Observer.

Để lấy đối tượng viewConfiguration được dùng bên dưới, xem Tải paywall Paywall Builder và cấu hình của chúng.

Tham số yêu cầu:

Tham sốBắt buộcMô tả
viewConfigurationbắt buộcCung cấp đối tượng AdaptyUI.LocalizedViewConfiguration chứa thông tin hiển thị của paywall. Sử dụng phương thức Adapty.getViewConfiguration(paywall) để tải nó. Xem thêm tại chủ đề Lấy cấu hình hiển thị của paywall.
productstùy chọnCung cấp một mảng AdaptyPaywallProduct để tối ưu thời điểm hiển thị sản phẩm trên màn hình. Nếu truyền null, AdaptyUI sẽ tự động tải các sản phẩm cần thiết.
eventListenertùy chọnCung cấp AdaptyUiEventListener để lắng nghe các sự kiện của paywall. Nên kế thừa AdaptyUiDefaultEventListener để dễ sử dụng hơn. Xem thêm tại chủ đề Xử lý sự kiện paywall.
insetstùy chọn

Insets là khoảng trống xung quanh paywall giúp các phần tử có thể nhấn không bị ẩn sau thanh hệ thống.

Mặc định: UNSPECIFIED — Adapty sẽ tự động điều chỉnh insets, phù hợp với các paywall hiển thị toàn màn hình (edge-to-edge).

Nếu paywall của bạn không phải edge-to-edge, bạn có thể muốn đặt insets tùy chỉnh. Cách thực hiện xem tại phần Thay đổi insets của paywall bên dưới.

personalizedOfferResolvertùy chọnĐể chỉ định giá cá nhân hóa (đọc thêm), hãy implement AdaptyUiPersonalizedOfferResolver và truyền logic của bạn để ánh xạ AdaptyPaywallProduct thành true nếu giá sản phẩm được cá nhân hóa, ngược lại là false.
tagResolvertùy chọnSử dụng AdaptyUiTagResolver để xử lý các thẻ tùy chỉnh trong văn bản của paywall. Resolver này nhận tham số là một thẻ và chuyển đổi nó thành chuỗi tương ứng. Xem thêm tại chủ đề Custom tags in Paywall Builder.
timerResolvertùy chọnTruyền resolver vào đây nếu bạn muốn sử dụng chức năng hẹn giờ tùy chỉnh.

Muốn xem ví dụ thực tế về cách tích hợp Adapty SDK vào ứng dụng di động? Hãy xem ứng dụng mẫu của chúng tôi, nơi minh họa toàn bộ quá trình thiết lập, bao gồm hiển thị paywall, thực hiện mua hàng và các chức năng cơ bản khác.

Thay đổi insets của paywall

Insets là khoảng trống xung quanh paywall, giúp các phần tử có thể nhấn không bị ẩn sau thanh hệ thống. Theo mặc định, Adapty sẽ tự động điều chỉnh insets, phù hợp với các paywall hiển thị toàn màn hình (edge-to-edge).

Nếu paywall của bạn không hiển thị toàn màn hình, bạn có thể muốn đặt insets tùy chỉnh:

  • Nếu cả thanh trạng thái lẫn thanh điều hướng đều không chồng lên AdaptyPaywallView, hãy dùng AdaptyPaywallInsets.NONE.
  • Với các thiết lập tùy chỉnh hơn, chẳng hạn khi paywall chồng lên thanh trạng thái phía trên nhưng không chồng lên phần dưới, bạn có thể chỉ đặt bottomInset thành 0 như ví dụ dưới đây:

Sử dụng timer do nhà phát triển định nghĩa

Để sử dụng timer do nhà phát triển định nghĩa trong ứng dụng của bạn, hãy tạo một đối tượng timerResolver—một dictionary hoặc map ánh xạ các timer tùy chỉnh với các giá trị chuỗi sẽ thay thế chúng khi paywall được render. Đây là một ví dụ:

Trong ví dụ này, CUSTOM_TIMER_NYTimer ID của timer do developer định nghĩa mà bạn đã cài đặt trong Adapty dashboard. timerResolver đảm bảo ứng dụng của bạn cập nhật timer động với giá trị chính xác—chẳng hạn như 13d 09h 03m 34s (được tính bằng thời gian kết thúc của timer, như Ngày Đầu Năm Mới, trừ đi thời gian hiện tại).

Sử dụng custom tag

Để sử dụng custom tag trong ứng dụng di động, hãy tạo một đối tượng tagResolver—một dictionary hoặc map ánh xạ các custom tag với giá trị chuỗi sẽ thay thế chúng khi paywall được hiển thị. Dưới đây là ví dụ:

Trong ví dụ này, USERNAME là custom tag bạn đã nhập trong Adapty dashboard dưới dạng <USERNAME/>. tagResolver đảm bảo rằng ứng dụng của bạn sẽ tự động thay thế custom tag này bằng giá trị được chỉ định—ví dụ như John.

Chúng tôi khuyến nghị bạn tạo và điền dữ liệu vào tagResolver ngay trước khi hiển thị paywall. Sau khi đã sẵn sàng, hãy truyền nó vào phương thức AdaptyUI mà bạn sử dụng để hiển thị paywall.

Thay đổi màu của loading indicator trên paywall

Bạn có thể ghi đè màu mặc định của loading indicator theo cách sau:


<style name="AppTheme" parent="android:Theme.Material.Light.NoActionBar">

    <item name="adapty_progressIndicatorColor">@color/yourColor</item>
</style>