Tải paywall và sản phẩm cho paywall remote config trong React Native SDK
Trước khi hiển thị Remote Config và paywall tùy chỉnh, bạn cần tải thông tin về chúng. Lưu ý rằng chủ đề này đề cập đến Remote Config và paywall tùy chỉnh. Để biết hướng dẫn tải flow hoặc paywall được tùy chỉnh trong Flow Builder hoặc Paywall Builder, vui lòng tham khảo Tải flow từ Flow Builder và paywall từ Paywall Builder cùng cấu hình của chúng.
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.
Trước khi bắt đầu tải flow và sản phẩm trong ứng dụng mobile của bạn (nhấn để mở rộng)
-
Tạo sản phẩm của bạn trong Adapty Dashboard.
-
Tạo một flow hoặc paywall và tích hợp các sản phẩm vào đó trong Adapty Dashboard.
-
Tạo các placement và tích hợp flow hoặc paywall vào placement trong Adapty Dashboard.
-
Cài đặt Adapty SDK trong ứng dụng di động của bạn.
Lấy thông tin flow
Trong Adapty, một sản phẩm là sự kết hợp của các sản phẩm từ App Store và Google Play. Các sản phẩm đa nền tảng này được tích hợp vào các flow và paywall, cho phép bạn hiển thị chúng trong các placement cụ thể của ứng dụng di động.
Để hiển thị các sản phẩm, bạn cần lấy một AdaptyFlow từ một trong các placement của mình bằng phương thức getFlow.
Đừng hardcode ID sản phẩm. ID duy nhất bạn cần hardcode là placement ID. Flow được cấu hình từ xa, vì vậy số lượng sản phẩm và ưu đãi có thể thay đổi bất kỳ lúc nào. Ứng dụng của bạn phải xử lý những thay đổi này một cách linh hoạt—nếu hôm nay một flow trả về hai sản phẩm và ngày mai trả về ba, hãy hiển thị tất cả mà không cần thay đổi code.
try {
const id = 'YOUR_PLACEMENT_ID';
const flow = await adapty.getFlow(id);
// the requested flow
} catch (error) {
// handle the error
}
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
| placementId | bắt buộc | Định danh của Placement. Đây là giá trị bạn đã chỉ định khi tạo placement trong Adapty Dashboard. |
| fetchPolicy | mặc định: .reloadRevalidatingCacheData | Theo mặc định, SDK sẽ cố tải dữ liệu từ server và trả về dữ liệu đã cache nếu thất bại. Chúng tôi khuyên dùng tùy chọn này vì nó đảm bảo người dùng luôn nhận được dữ liệu mới nhất. Tuy nhiên, nếu bạn cho rằng người dùng của mình thường xuyên gặp kết nối internet không ổn định, hãy cân nhắc dùng Lưu ý rằng cache vẫn được giữ nguyên khi khởi động lại ứng dụng và chỉ bị xóa khi gỡ cài đặt ứng dụng hoặc thực hiện dọn dẹp thủ công. Adapty SDK lưu trữ flow và paywall theo hai lớp: cache được cập nhật định kỳ như mô tả ở trên và paywall dự phòng. Chúng tôi cũng sử dụng CDN để tải flow và paywall nhanh hơn cùng một server dự phòng độc lập phòng trường hợp CDN không thể truy cập. Hệ thống này được thiết kế để đảm bảo bạn luôn nhận được phiên bản mới nhất của flow trong khi vẫn đảm bảo độ tin cậy ngay cả khi kết nối internet hạn chế. |
| loadTimeoutMs | mặc định: 5 giây | Giá trị này giới hạn thời gian chờ cho phương thức này. Nếu hết thời gian chờ, dữ liệu đã cache hoặc fallback cục bộ sẽ được trả về. Lưu ý rằng trong một số trường hợp hiếm gặp, phương thức này có thể hết thời gian chờ muộn hơn một chút so với giá trị đã chỉ định trong |
Trong v4, getFlow không còn nhận tham số locale nữa. Đối với các paywall tùy chỉnh, tất cả các ngôn ngữ khả dụng đều được trả về trong Remote Config của flow (flow.remoteConfigs) — hãy chọn ngôn ngữ phù hợp với thiết bị hoặc cài đặt ngôn ngữ của người dùng.
Đừng hardcode ID sản phẩm! Vì các flow được cấu hình từ xa, các sản phẩm có sẵn, số lượng sản phẩm và các ưu đãi đặc biệt (chẳng hạn như dùng thử miễn phí) có thể thay đổi theo thời gian. Hãy đảm bảo code của bạn xử lý được các tình huống này. Ví dụ: nếu ban đầu bạn lấy được 2 sản phẩm, ứng dụng nên hiển thị 2 sản phẩm đó. Nhưng nếu sau này lấy được 3 sản phẩm, ứng dụng phải hiển thị cả 3 mà không cần thay đổi code. Thứ duy nhất bạn cần hardcode là placement ID.
Tham số trả về:
| Tham số | Mô tả |
|---|---|
| Flow | Một đối tượng AdaptyFlow chứa placement, các định danh (id, variationId), tên, các biến thể paywall của nó (paywalls), và một mảng remoteConfigs (một mục cho mỗi locale đã cấu hình). Để lấy sản phẩm cho flow, hãy gọi getPaywallProducts(flow). |
Lấy danh sách sản phẩm
Sau khi có flow, bạn có thể truy vấn mảng sản phẩm tương ứng với nó:
try {
// ...flow
const products = await adapty.getPaywallProducts(flow);
// the requested products list
} catch (error) {
// handle the error
}Tham số phản hồi:
| Tham số | Mô tả |
|---|---|
| Products | Danh sách các đối tượng AdaptyPaywallProduct bao gồm: mã định danh sản phẩm, tên sản phẩm, giá, đơn vị tiền tệ, thời hạn gói đăng ký và một số thuộc tính khác. |
Khi triển khai thiết kế paywall của riêng bạn, bạn có thể sẽ cần truy cập các thuộc tính sau từ đối tượng AdaptyPaywallProduct. Dưới đây là các thuộc tính được sử dụng phổ biến nhất, nhưng hãy tham khảo tài liệu được liên kết để biết đầy đủ chi tiết về tất cả các thuộc tính có sẵn. | |
| Thuộc tính | Mô tả |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Tiêu đề | Để hiển thị tiêu đề của sản phẩm, dùng product.localizedTitle. Lưu ý rằng bản địa hóa này dựa trên quốc gia cửa hàng mà người dùng đã chọn, không phải ngôn ngữ của thiết bị. |
| Giá | Để hiển thị giá đã được bản địa hóa, dùng product.price?.localizedString. Bản địa hóa này dựa trên thông tin ngôn ngữ của thiết bị. Bạn cũng có thể truy cập giá dưới dạng số bằng product.price?.amount. Giá trị sẽ được trả về theo đơn vị tiền tệ địa phương. Để lấy ký hiệu tiền tệ tương ứng, dùng product.price?.currencySymbol. |
| Chu kỳ gói đăng ký | Để hiển thị chu kỳ (ví dụ: tuần, tháng, năm, v.v.), dùng product.subscription?.localizedSubscriptionPeriod. Bản địa hóa này dựa trên ngôn ngữ của thiết bị. Để lấy chu kỳ gói đăng ký theo cách lập trình, dùng product.subscription?.subscriptionPeriod. Từ đó bạn có thể truy cập thuộc tính unit để lấy đơn vị thời gian (tức là 'day', 'week', 'month', 'year' hoặc 'unknown'). Giá trị numberOfUnits sẽ cho bạn biết số đơn vị trong mỗi chu kỳ. Ví dụ: với gói đăng ký theo quý, thuộc tính unit sẽ là 'month' và numberOfUnits sẽ là 3. |
| Ưu đãi giới thiệu | Để hiển thị huy hiệu hoặc chỉ báo rằng gói đăng ký có ưu đãi giới thiệu, hãy kiểm tra thuộc tính product.subscription?.offer?.phases. Đây là danh sách có thể chứa tối đa hai giai đoạn giảm giá: giai đoạn dùng thử miễn phí và giai đoạn giá ưu đãi giới thiệu. Trong mỗi đối tượng giai đoạn có các thuộc tính hữu ích sau:• paymentMode: một chuỗi với các giá trị 'free_trial', 'pay_as_you_go', 'pay_up_front' và 'unknown'. Dùng thử miễn phí sẽ có kiểu 'free_trial'.• price: Giá giảm dưới dạng số. Với dùng thử miễn phí, giá trị này sẽ là 0.• localizedNumberOfPeriods: một chuỗi đã được bản địa hóa theo ngôn ngữ thiết bị, mô tả thời lượng của ưu đãi. Ví dụ: ưu đãi dùng thử ba ngày sẽ hiển thị '3 days' trong trường này.• subscriptionPeriod: Ngoài ra, bạn có thể lấy thông tin chi tiết từng phần của chu kỳ ưu đãi bằng thuộc tính này. Cách dùng tương tự như phần mô tả ở trên.• localizedSubscriptionPeriod: Chu kỳ gói đăng ký đã được định dạng theo ngôn ngữ của người dùng. |
Tăng tốc độ tải flow với flow đối tượng mặc định
Thông thường, flow được tải gần như ngay lập tức, nên bạn không cần lo lắng về việc tăng tốc quá trình này. Tuy nhiên, trong trường hợp bạn có nhiều đối tượng và placement, và người dùng của bạn có kết nối internet yếu, việc tải flow có thể mất nhiều thời gian hơn mong muốn. Trong những tình huống như vậy, bạn có thể muốn hiển thị một flow mặc định để đảm bảo trải nghiệm người dùng mượt mà thay vì không hiển thị gì cả.
Để giải quyết vấn đề này, bạn có thể sử dụng phương thức getFlowForDefaultAudience, phương thức này sẽ lấy flow của placement được chỉ định cho đối tượng All Users. Tuy nhiên, điều quan trọng cần hiểu là cách tiếp cận được khuyến nghị là lấy flow bằng phương thức getFlow, như đã mô tả chi tiết trong phần Lấy thông tin flow ở trên.
Lý do chúng tôi khuyến nghị sử dụng getFlow
Phương thức getFlowForDefaultAudience có một số hạn chế đáng kể:
- Các vấn đề tương thích ngược tiềm ẩn: Nếu bạn cần hiển thị các flow khác nhau cho các phiên bản ứng dụng khác nhau (hiện tại và tương lai), bạn có thể gặp khó khăn. Bạn sẽ phải thiết kế các flow hỗ trợ phiên bản hiện tại (cũ) hoặc chấp nhận rằng người dùng với phiên bản hiện tại (cũ) có thể gặp sự cố với các flow không được hiển thị.
- Mất khả năng targeting: Tất cả người dùng sẽ thấy cùng một flow được thiết kế cho đối tượng All Users, nghĩa là bạn mất khả năng targeting cá nhân hóa (bao gồm theo quốc gia, attribution marketing hoặc các thuộc tính tùy chỉnh của riêng bạn).
Nếu bạn sẵn sàng chấp nhận những hạn chế này để đổi lấy tốc độ tải flow nhanh hơn, hãy sử dụng phương thức
getFlowForDefaultAudiencenhư sau. Nếu không, hãy tiếp tục dùnggetFlowđã được mô tả ở trên.
try {
const id = 'YOUR_PLACEMENT_ID';
const flow = await adapty.getFlowForDefaultAudience(id);
// the requested flow
} catch (error) {
// handle the error
}
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
| placementId | bắt buộc | Mã định danh của Placement. Đây là giá trị bạn đã chỉ định khi tạo placement trong Adapty Dashboard. |
| fetchPolicy | mặc định: .reloadRevalidatingCacheData | Theo mặc định, SDK sẽ cố tải dữ liệu từ máy chủ và trả về dữ liệu đã cache trong trường hợp thất bại. Chúng tôi khuyến nghị tùy chọn này vì nó đảm bảo người dùng của bạn luôn nhận được dữ liệu mới nhất. Tuy nhiên, nếu bạn cho rằng người dùng của mình thường xuyên gặp tình trạng kết nối mạng không ổn định, hãy cân nhắc sử dụng Lưu ý rằng cache vẫn được giữ nguyên khi khởi động lại ứng dụng và chỉ bị xóa khi gỡ cài đặt ứng dụng hoặc thực hiện xóa thủ công. |
Trước khi hiển thị Remote Config và các paywall tùy chỉnh, bạn cần lấy thông tin về chúng. Lưu ý rằng phần này đề cập đến Remote Config và paywall tùy chỉnh. Để biết hướng dẫn lấy paywall cho các paywall được tùy chỉnh bằng Paywall Builder, vui lòng xem Lấy paywall Paywall Builder và cấu hình của chúng.
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.
Trước khi bắt đầu lấy paywall và sản phẩm trong ứng dụng di động của bạn (nhấn để mở rộng)
-
Tạo sản phẩm của bạn trong Adapty Dashboard.
-
Tạo paywall và thêm sản phẩm vào paywall của bạn trong Adapty Dashboard.
-
Tạo placement và thêm paywall vào placement trong Adapty Dashboard.
-
Cài đặt Adapty SDK vào ứng dụng di động của bạn.
Lấy thông tin paywall
Trong Adapty, một sản phẩm là sự kết hợp của các sản phẩm từ cả App Store và Google Play. Các sản phẩm đa nền tảng này được tích hợp vào các paywall, cho phép bạn hiển thị chúng trong các placement cụ thể của ứng dụng di động.
Để hiển thị các sản phẩm, bạn cần lấy một Paywall từ một trong các placement của bạn bằng phương thức getPaywall.
Đừng hardcode ID sản phẩm. ID duy nhất bạn nên hardcode là placement ID. Paywall được cấu hình từ xa, vì vậy số lượng sản phẩm và ưu đãi có thể thay đổi bất cứ lúc nào. Ứng dụng của bạn phải xử lý những thay đổi này một cách linh hoạt — nếu hôm nay paywall trả về hai sản phẩm và ngày mai trả về ba, hãy hiển thị tất cả mà không cần thay đổi code.
try {
const id = 'YOUR_PLACEMENT_ID';
const locale = 'en';
const paywall = await adapty.getPaywall(id, locale);
// the requested paywall
} catch (error) {
// handle the error
}
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
| placementId | bắt buộc | Định danh của Placement. Đây là giá trị bạn đã chỉ định khi tạo placement trong Adapty Dashboard. |
| locale | tùy chọn mặc định: | Định danh của bản dịch paywall. Tham số này cần là mã ngôn ngữ gồm một hoặc nhiều subtag được phân tách bằng ký tự dấu trừ (-). Subtag đầu tiên là mã ngôn ngữ, subtag thứ hai là mã vùng. Ví dụ: Xem Localizations và locale codes để biết thêm thông tin về locale codes và cách chúng tôi khuyến nghị sử dụng chúng. |
| fetchPolicy | mặc định: .reloadRevalidatingCacheData | Theo mặc định, SDK sẽ cố tải dữ liệu từ máy chủ và trả về dữ liệu đã cache nếu thất bại. Chúng tôi khuyến nghị cách này vì nó đảm bảo người dùng luôn nhận được dữ liệu mới nhất. Tuy nhiên, nếu bạn cho rằng người dùng của mình thường gặp kết nối internet không ổn định, hãy cân nhắc dùng Lưu ý rằng cache vẫn được giữ nguyên sau khi khởi động lại ứng dụng và chỉ bị xóa khi ứng dụng được cài đặt lại hoặc được dọn dẹp thủ công. Adapty SDK lưu trữ paywall ở hai lớp: cache được cập nhật thường xuyên như mô tả ở trên và paywall dự phòng. Chúng tôi cũng sử dụng CDN để tải paywall nhanh hơn và một máy chủ dự phòng độc lập trong trường hợp CDN không thể truy cập. Hệ thống này được thiết kế để đảm bảo bạn luôn nhận được phiên bản mới nhất của paywall trong khi vẫn đảm bảo độ tin cậy ngay cả khi kết nối internet kém. |
| loadTimeoutMs | mặc định: 5 giây | Giá trị này giới hạn thời gian chờ cho phương thức này. Nếu hết thời gian chờ, dữ liệu đã cache hoặc fallback cục bộ sẽ được trả về. Lưu ý rằng trong một số trường hợp hiếm gặp, phương thức này có thể hết thời gian chờ muộn hơn một chút so với giá trị được chỉ định trong |
| Đừng hardcode product ID! Vì paywall được cấu hình từ xa, các sản phẩm hiển thị, số lượng sản phẩm, và các ưu đãi đặc biệt (như dùng thử miễn phí) có thể thay đổi theo thời gian. Hãy đảm bảo code của bạn xử lý được những tình huống này. |
Ví dụ: nếu ban đầu bạn lấy được 2 sản phẩm, ứng dụng nên hiển thị đúng 2 sản phẩm đó. Nhưng nếu sau này lấy được 3 sản phẩm, ứng dụng cũng nên hiển thị cả 3 mà không cần thay đổi code. Thứ duy nhất bạn cần hardcode là placement ID.
Các tham số trả về:
| Tham số | Mô tả |
|---|---|
| Paywall | Đối tượng AdaptyPaywall bao gồm: danh sách ID sản phẩm, mã định danh paywall, Remote Config và một số thuộc tính khác. |
Lấy danh sách sản phẩm
Sau khi có paywall, bạn có thể lấy danh sách sản phẩm tương ứng với nó:
try {
// ...paywall
const products = await adapty.getPaywallProducts(paywall);
// the requested products list
} catch (error) {
// handle the error
}Tham số trong kết quả trả về:
| Tham số | Mô tả |
|---|---|
| Products | Danh sách các đối tượng AdaptyPaywallProduct bao gồm: mã định danh sản phẩm, tên sản phẩm, giá, đơn vị tiền tệ, thời hạn gói đăng ký và một số thuộc tính khác. |
Khi triển khai thiết kế paywall của riêng bạn, bạn sẽ cần truy cập các thuộc tính từ đối tượng AdaptyPaywallProduct. Dưới đây là các thuộc tính được dùng phổ biến nhất — xem tài liệu được liên kết để biết đầy đủ chi tiết về tất cả các thuộc tính có sẵn. | |
| Thuộc tính | Mô tả |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Title | Để hiển thị tiêu đề sản phẩm, dùng product.localizedTitle. Lưu ý rằng việc bản địa hóa dựa trên quốc gia cửa hàng mà người dùng đã chọn, không phải ngôn ngữ của thiết bị. |
| Price | Để hiển thị giá đã được bản địa hóa, dùng product.price?.localizedString. Việc bản địa hóa này dựa trên thông tin ngôn ngữ của thiết bị. Bạn cũng có thể truy cập giá dưới dạng số bằng product.price?.amount. Giá trị sẽ được cung cấp theo đơn vị tiền tệ địa phương. Để lấy ký hiệu tiền tệ tương ứng, dùng product.price?.currencySymbol. |
| Subscription Period | Để hiển thị chu kỳ (ví dụ: tuần, tháng, năm,…), dùng product.subscription?.localizedSubscriptionPeriod. Việc bản địa hóa này dựa trên ngôn ngữ của thiết bị. Để lấy chu kỳ gói đăng ký theo chương trình, dùng product.subscription?.subscriptionPeriod. Từ đó bạn có thể truy cập thuộc tính unit để lấy đơn vị thời gian (tức là 'day', 'week', 'month', 'year' hoặc 'unknown'). Giá trị numberOfUnits cho biết số đơn vị chu kỳ. Ví dụ, với gói đăng ký theo quý, bạn sẽ thấy 'month' trong thuộc tính unit và 3 trong thuộc tính numberOfUnits. |
| Introductory Offer | Để hiển thị huy hiệu hoặc chỉ báo nào đó cho biết gói đăng ký có ưu đãi giới thiệu, hãy kiểm tra thuộc tính product.subscription?.offer?.phases. Đây là danh sách có thể chứa tối đa hai giai đoạn giảm giá: giai đoạn dùng thử miễn phí và giai đoạn giá giới thiệu. Trong mỗi đối tượng giai đoạn có các thuộc tính hữu ích sau:• paymentMode: chuỗi với các giá trị 'free_trial', 'pay_as_you_go', 'pay_up_front' và 'unknown'. Dùng thử miễn phí sẽ có kiểu 'free_trial'.• price: Giá sau giảm dưới dạng số. Với dùng thử miễn phí, giá trị ở đây là 0.• localizedNumberOfPeriods: chuỗi được bản địa hóa theo ngôn ngữ thiết bị, mô tả độ dài của ưu đãi. Ví dụ, ưu đãi dùng thử ba ngày sẽ hiển thị '3 days' trong trường này.• subscriptionPeriod: Thay thế, bạn có thể lấy thông tin chi tiết từng phần của chu kỳ ưu đãi bằng thuộc tính này. Cách hoạt động tương tự như mô tả ở phần trước đối với các ưu đãi.• localizedSubscriptionPeriod: Chu kỳ gói đăng ký được định dạng theo ngôn ngữ người dùng cho phần giảm giá. |
Tăng tốc tải paywall với paywall đối tượng mặc định
Thông thường, paywall được tải gần như ngay lập tức, nên bạn không cần lo lắng về việc tối ưu tốc độ này. Tuy nhiên, trong trường hợp bạn có nhiều đối tượng và paywall, và người dùng có kết nối internet yếu, việc tải paywall có thể mất nhiều thời gian hơn mong muốn. Trong những tình huống như vậy, bạn có thể muốn hiển thị một paywall mặc định để đảm bảo trải nghiệm người dùng mượt mà thay vì không hiển thị paywall nào cả.
Để giải quyết vấn đề này, bạn có thể sử dụng phương thức getPaywallForDefaultAudience, phương thức này sẽ lấy paywall của placement được chỉ định cho đối tượng All Users. Tuy nhiên, điều quan trọng cần hiểu là cách tiếp cận được khuyến nghị là lấy paywall bằng phương thức getPaywall, như đã mô tả chi tiết trong phần Lấy thông tin paywall ở trên.
Tại sao chúng tôi khuyến nghị sử dụng getPaywall
Phương thức getPaywallForDefaultAudience có một số hạn chế đáng kể:
- Vấn đề tương thích ngược tiềm ẩn: Nếu bạn cần hiển thị các paywall khác nhau cho các phiên bản ứng dụng khác nhau (hiện tại và tương lai), bạn có thể gặp khó khăn. Bạn sẽ phải thiết kế các paywall hỗ trợ phiên bản hiện tại (cũ) hoặc chấp nhận rằng người dùng với phiên bản hiện tại (cũ) có thể gặp sự cố với các paywall không được hiển thị.
- Mất khả năng targeting: Tất cả người dùng sẽ thấy cùng một paywall được thiết kế cho đối tượng All Users, nghĩa là bạn mất đi khả năng targeting cá nhân hóa (bao gồm theo quốc gia, marketing attribution hoặc các thuộc tính tùy chỉnh của riêng bạn).
Nếu bạn chấp nhận những hạn chế này để đổi lấy tốc độ tải paywall nhanh hơn, hãy sử dụng phương thức
getPaywallForDefaultAudiencenhư sau. Nếu không, hãy tiếp tục dùnggetPaywallđã được mô tả ở trên.
try {
const id = 'YOUR_PLACEMENT_ID';
const locale = 'en';
const paywall = await adapty.getPaywallForDefaultAudience(id, locale);
// the requested paywall
} catch (error) {
// handle the error
}Phương thức getPaywallForDefaultAudience khả dụng từ React Native SDK phiên bản 2.11.2 trở lên.
| Tham số | Bắt buộc | Mô tả |
|---|---|---|
| placementId | bắt buộc | Mã định danh của Placement. Đây là giá trị bạn đã chỉ định khi tạo placement trong Adapty Dashboard. |
| locale | tùy chọn mặc định: | Mã định danh của bản địa hóa paywall. Tham số này là mã ngôn ngữ gồm một hoặc nhiều thẻ con phân cách bởi ký tự dấu trừ (-). Thẻ con đầu tiên là ngôn ngữ, thẻ con thứ hai là vùng. Ví dụ: Xem Bản địa hóa và mã locale để biết thêm thông tin về mã locale và cách chúng tôi khuyến nghị sử dụng chúng. |
| fetchPolicy | mặc định: .reloadRevalidatingCacheData | Theo mặc định, SDK sẽ cố tải dữ liệu từ máy chủ và trả về dữ liệu đã lưu trong cache nếu thất bại. Chúng tôi khuyến nghị cách này vì nó đảm bảo người dùng luôn nhận được dữ liệu mới nhất. Tuy nhiên, nếu bạn cho rằng người dùng của mình thường xuyên gặp kết nối internet không ổn định, hãy cân nhắc dùng Lưu ý rằng cache vẫn được giữ nguyên khi khởi động lại ứng dụng và chỉ bị xóa khi gỡ cài đặt ứng dụng hoặc thực hiện dọn dẹp thủ công. |