ÿÿ Tải Paywall & Sản Phẩm | React Native SDK | Tài liệu Adapty

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)
  1. Tạo sản phẩm của bạn trong Adapty Dashboard.

  2. Tạo một flow hoặc paywall và tích hợp các sản phẩm vào đó trong Adapty Dashboard.

  3. Tạo các placement và tích hợp flow hoặc paywall vào placement trong Adapty Dashboard.

  4. 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ộcMô tả
placementIdbắt buá»™cÄịnh danh cá»§a Placement. Äây là giá trị bạn đã chỉ định khi tạo placement trong Adapty Dashboard.
fetchPolicymặ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 .returnCacheDataElseLoad để trả vá» dữ liệu đã cache nếu có. Trong trưá»ng hợp này, ngưá»i dùng có thể không nhận được dữ liệu má»›i nhất tuyệt đối, nhưng thá»i gian tải sẽ nhanh hÆ¡n, bất kể kết nối internet có chập chá»n đến đâu. Cache được cập nhật thưá»ng xuyên nên hoàn toàn an toàn khi sá»­ dụng trong phiên làm việc để tránh các yêu cầu mạ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ế.

loadTimeoutMsmặ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 loadTimeout, do thao tác có thể bao gồm nhiá»u yêu cầu khác nhau bên dưới.

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ả
FlowMá»™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ả
ProductsDanh 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ínhMô 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 getFlowForDefaultAudience như sau. Nếu không, hãy tiếp tục dùng getFlow đã đượ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ộcMô tả
placementIdbắt buá»™cMã định danh cá»§a Placement. Äây là giá trị bạn đã chỉ định khi tạo placement trong Adapty Dashboard.
fetchPolicymặ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 .returnCacheDataElseLoad để trả vá» dữ liệu đã cache nếu có. Trong trưá»ng hợp này, ngưá»i dùng có thể không nhận được dữ liệu má»›i nhất tuyệt đối, nhưng há» sẽ có trải nghiệm tải nhanh hÆ¡n, bất kể kết nối mạng cá»§a há» có chập chá»n đến đâu. Cache được cập nhật thưá»ng xuyên, vì vậy việc sá»­ dụng trong phiên làm việc để tránh các yêu cầu mạng là hoàn toàn an toàn.

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)
  1. Tạo sản phẩm của bạn trong Adapty Dashboard.

  2. Tạo paywall và thêm sản phẩm vào paywall của bạn trong Adapty Dashboard.

  3. Tạo placement và thêm paywall vào placement trong Adapty Dashboard.

  4. 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ộcMô tả
placementIdbắ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: en

Äị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ụ: en là tiếng Anh, pt-br là tiếng Bồ Äào Nha (Brazil).

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.

fetchPolicymặ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 .returnCacheDataElseLoad để trả vá» dữ liệu đã cache nếu có. Trong trưá»ng hợp này, ngưá»i dùng có thể không nhận được dữ liệu má»›i nhất tuyệt đối, nhưng thá»i gian tải sẽ nhanh hÆ¡n bất kể kết nối internet có kém đến đâu. Cache được cập nhật thưá»ng xuyên nên hoàn toàn an toàn khi sá»­ dụng trong phiên làm việc để tránh các yêu cầu mạ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.

loadTimeoutMsmặ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 loadTimeout, vì thao tác có thể bao gồm nhiá»u yêu cầu khác nhau bên dưới.

Äừ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ả
ProductsDanh 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ínhMô 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 getPaywallForDefaultAudience như sau. Nếu không, hãy tiếp tục dùng getPaywall đã đượ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ộcMô tả
placementIdbắt buá»™cMã đị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: en

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ụ: en là tiếng Anh, pt-br là tiếng Bồ Äào Nha (Brazil).

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.

fetchPolicymặ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 .returnCacheDataElseLoad để trả vá» dữ liệu cache nếu có. Trong trưá»ng hợp này, ngưá»i dùng có thể không nhận được dữ liệu má»›i nhất tuyệt đối, nhưng thá»i gian tải sẽ nhanh hÆ¡n bất kể kết nối cá»§a há» có chập chá»n đến đâu. Cache được cập nhật thưá»ng xuyên nên hoàn toàn an toàn khi dùng trong phiên làm việc để tránh các yêu cầu mạng không cần thiết.

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.

ÿÿÿÿ