ÿÿ Lấy Flows & Paywalls - React Native | Tài liệu Adapty

Lấy flows & paywalls - React Native

Ná»™i dung mà getFlow trả vá»
✦
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ó

Sau khi bạn đã thiết kế flow hoặc paywall bằng Paywall Builder, bạn có thể hiển thị chúng trong ứng dụng di động của mình. Bước đầu tiên là lấy flow hoặc paywall được liên kết với placement cùng cấu hình hiển thị của nó như mô tả bên dưới.

Lưu ý rằng chủ đỠnày đỠcập đến flow và các paywall được tùy chỉnh bằng Paywall Builder. Nếu bạn đang triển khai paywall theo cách thủ công, vui lòng tham khảo chủ đỠLấy paywall và sản phẩm cho remote config paywall trong ứng dụng di động của bạn.

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 hiển thị flow và paywall 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 flow/paywall và thêm sản phẩm vào đó trong Adapty Dashboard.
  3. Tạo placement và thêm flow/paywall vào đó trong Adapty Dashboard.
  4. Cài đặt Adapty SDK trong ứng dụng mobile của bạn.

Lấy flow/paywall

Nếu bạn đã thiết kế má»™t flow hoặc paywall bằng Flow Builder hoặc 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. Flow hoặc paywall đó đã bao gồm cả ná»™i dung cần hiển thị lẫn cách hiển thị. Tuy nhiên, bạn vẫn cần lấy ID cá»§a nó thông qua placement, cấu hình view, rồi má»›i trình bày nó trong ứng dụng. Tải flow hoặc paywall và tạo view cá»§a nó càng sá»›m càng tốt — lý tưởng là trước khi hiển thị. Phương thức createFlowView tải cấu hình view và bắt đầu tải xuống, cache hình ảnh ở chế độ ná»n. Bạn gá»i nó càng sá»›m thì các hình ảnh đó càng có nhiá»u thá»i gian để hoàn tất. Äến khi hiển thị flow hoặc paywall, cấu hình và hình ảnh đã được cache sẵn sàng để hiển thị.

Äể lấy flow hoặc paywall, dùng phương thức getFlow:

try {
    const placementId = 'YOUR_PLACEMENT_ID';

    const flow = await adapty.getFlow(placementId);
  // flow/paywall được yêu cầu
} catch (error) {
    // xử lý lỗi
}

Tham số:

Tham sốBắt buộcMô tả
placementIdbắt buá»™cMã định danh cá»§a Placement mong muốn. Äâ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 nếu thất bại. Chúng tôi khuyến nghị 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 thưá»ng gặp tình trạng mạng 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 mạng cá»§a há» ra sao. 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 để tránh các yêu cầu mạng.

Lưu ý rằng cache vẫn còn nguyên sau khi khởi động lại ứng dụng và chỉ bị xóa khi cài đặt lại ứng dụng hoặc thá»±c hiện dá»n dẹp thá»§ công.

Adapty SDK lưu trữ paywall cục bá»™ theo 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 khả dụng. 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 mạng 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ị đã 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.

Äối vá»›i Android: Bạn có thể tạo TimeInterval bằng các hàm mở rá»™ng (như 5.seconds, trong đó .seconds được lấy từ import com.adapty.utils.seconds), hoặc TimeInterval.seconds(5). Äể không giá»›i hạn thá»i gian chá», hãy dùng TimeInterval.INFINITE.

Tham số phản hồi

Tham sốMô tả
FlowMột đối tượng AdaptyFlow chứa các mã định danh của flow (id, variationId), tên, placement, các biến thể paywall (paywalls) và bất kỳ Remote Config nào (remoteConfigs).

Lấy cấu hình view

Hãy đảm bảo bật toggle Show on device trong builder. Nếu tùy chá»n này chưa được bật, cấu hình view sẽ không thể lấy được.

Nếu placement được thiết kế trong Flow Builder hoặc Paywall Builder, Adapty sẽ tá»± động render giao diện cho bạn. Tạo view bằng createFlowView, sau đó hiển thị flow hoặc paywall. Nếu placement là má»™t paywall tùy chỉnh không có giao diện Builder, hãy xá»­ lý nó như má»™t paywall Remote Config. Trong React Native SDK, hãy gá»i createFlowView trá»±c tiếp — bạn không cần fetch cấu hình view trước.

Kết quả cá»§a phương thức createFlowView chỉ có thể được sá»­ dụng má»™t lần. Nếu cần dùng lại, hãy gá»i lại phương thức createFlowView từ đầu. Gá»i hai lần mà không tạo lại có thể dẫn đến lá»—i AdaptyUIError.viewAlreadyPresented.


try {
  const view = await createFlowView(flow);
} catch (error) {
  // handle the error
}

Tham số:

Tham sốBắt buộcMô tả
flowbắt buá»™cÄối tượng AdaptyFlow để lấy controller cho flow/paywall mong muốn.
customTagstùy chá»nÄịnh nghÄ©a má»™t dictionary các custom tag và giá trị tương ứng. Custom tag đóng vai trò là placeholder trong ná»™i dung, được thay thế động bằng các chuá»—i cụ thể để cá nhân hóa ná»™i dung trong flow/paywall. Tham khảo chá»§ đỠCustom tags in paywall builder để biết thêm chi tiết.
prefetchProductstùy chá»nBật để tối ưu thá»i Ä‘iểm hiển thị sản phẩm trên màn hình. Khi đặt là true, AdaptyUI sẽ tá»± động tải các sản phẩm cần thiết. Mặc định: false.
android.enableSafeAreatùy chá»nChỉ dành cho Android (bá» qua trên iOS). Truyá»n dưới dạng đối tượng lồng nhau: android: { enableSafeArea: true }. Khi đặt là true, flow view sẽ áp dụng padding safe-area. Mặc định là true cho kiểu trình bày modal (createFlowView + present()) và false cho component AdaptyFlowView nhúng. Giá trị mặc định phù hợp vá»›i hầu hết các trưá»ng hợp.

Nếu bạn Ä‘ang sá»­ dụng nhiá»u ngôn ngữ, hãy tìm hiểu cách thêm bản địa hóa flow và cách sá»­ dụng mã ngôn ngữ đúng cách tại đây.

Sau khi có view, hãy hiển thị flow/paywall.

Lấy flow hoặc paywall cho đối tượng mặc định để tải nhanh hơn

Thông thưá»ng, flow và 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ă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ó kết nối internet yếu, việc tải flow hoặc 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ị flow hoặc 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ị 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 hoặc 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 flow hoặc paywall bằng phương thức getFlow, như đã mô tả chi tiết trong phần Lấy flow/paywall ở 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 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 nhắm mục tiêu: 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 khả năng nhắm mục tiêu 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 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 hoặc paywall 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 như đã mô tả ở trên.
try {
    const id = 'YOUR_PLACEMENT_ID';

    const flow = await adapty.getFlowForDefaultAudience(id);
  // the requested flow/paywall
} 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ừ server và trả vá» dữ liệu đã cache nếu thất bại. Chúng tôi khuyến nghị 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 mạng 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 mạng 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 suốt phiên làm việc để tránh các yêu cầu mạng.

Lưu ý rằng cache vẫn còn 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 xóa thủ công.

Tùy chỉnh assets

Äể tùy chỉnh hình ảnh và video trong flow/paywall cá»§a bạn, hãy triển khai custom assets.

Hero image và video có ID được định sẵn: hero_image và hero_video. Trong một custom asset bundle, bạn nhắm đến các phần tử này theo ID của chúng và tùy chỉnh hành vi của chúng.

Äối vá»›i các hình ảnh và video khác, bạn cần đặt ID tùy chỉnh trong Adapty dashboard.

Ví dụ, bạn có thể:

  • Hiển thị hình ảnh hoặc video khác nhau cho má»™t số ngưá»i dùng.
  • Hiển thị hình ảnh preview cục bá»™ trong khi hình ảnh chính từ xa Ä‘ang tải.
  • Hiển thị hình ảnh preview trước khi phát video.

Äể sá»­ dụng tính năng này, hãy cập nhật Adapty React Native SDK lên phiên bản 3.8.0 trở lên.

Dưới đây là ví dụ vỠcách cung cấp custom assets thông qua một dictionary đơn giản:

const customAssets: Record<string, AdaptyCustomAsset> = {
  'custom_image': { type: 'image', relativeAssetPath: 'custom_image.png' },
  'hero_video': {
    type: 'video',
    fileLocation: {
      ios: { fileName: 'custom_video.mp4' },
      android: { relativeAssetPath: 'videos/custom_video.mp4' }
    }
  }
};

view = await createFlowView(flow, { customAssets })

Nếu không tìm thấy asset, flow/paywall sẽ quay vỠgiao diện mặc định của nó.

Sau khi bạn thiết kế phần giao diện cho paywall bằng Paywall Builder mới trong Adapty Dashboard, bạn có thể hiển thị nó trong ứng dụng di động của mình. Bước đầu tiên trong quá trình này là lấy paywall được liên kết với placement và cấu hình view của nó như mô tả bên dưới.

Paywall Builder mới hoạt động với React Native SDK phiên bản 3.0 trở lên.

Vui lòng lưu ý rằng chủ đỠnày đỠcập đến các paywall được tùy chỉnh bằng Paywall Builder. Nếu bạn đang triển khai paywall theo cách thủ công, hãy tham khảo chủ đỠLấy paywall và sản phẩm cho Remote Config paywall trong ứng dụng mobile của bạn.

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 hiển thị paywall 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 paywall và thêm sản phẩm vào đó trong Adapty Dashboard.
  3. Tạo placement và thêm paywall vào đó trong Adapty Dashboard.
  4. Cài đặt Adapty SDK vào ứng dụng di động của bạn.

Lấy paywall được thiết kế bằng Paywall Builder

Nếu bạn đã thiết kế 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. Loại paywall này chứa đầy đủ cả ná»™i dung hiển thị lẫn cách hiển thị. Tuy nhiên, bạn vẫn cần lấy ID cá»§a nó thông qua placement, cấu hình view, rồi má»›i hiển thị nó trong ứng dụng. Äể đảm bảo hiệu suất tối ưu, Ä‘iá»u quan trá»ng là phải lấy paywall và cấu hình view cá»§a nó càng sá»›m càng tốt, nhằm dành đủ thá»i gian để tải ảnh trước khi hiển thị cho ngưá»i dùng.

Äể lấy paywall, sá»­ dụng phương thức getPaywall:

try {
    const placementId = 'YOUR_PLACEMENT_ID';
    const locale = 'en';

    const paywall = await adapty.getPaywall(placementId, locale);
  // paywall được yêu cầu
} catch (error) {
    // xử lý lỗi
}

Tham số:

Tham sốBắt buộcMô tả
placementIdbắt buá»™cÄịnh danh cá»§a Placement mong muốn. Äâ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 địa hóa paywall. Tham số này phải là mã ngôn ngữ gồm má»™t hoặc hai subtag được phân tách bằng ký tá»± gạch ngang (-). Subtag đầu tiên là ngôn ngữ, subtag thứ hai là khu vá»±c.

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ừ server và trả vá» dữ liệu đã cache nếu thất bại. Chúng tôi khuyến nghị 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 tình trạng 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 khi khởi động lại ứng dụng và chỉ bị xóa khi gỡ cài đặt ứng dụng hoặc xóa thủ công.

Adapty SDK lưu trữ paywall cục bá»™ theo 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 server dá»± phòng độc lập trong trưá»ng hợp CDN không khả dụng. 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, đồng thá»i đảm bảo độ tin cậy ngay cả khi kết nối internet không ổn định.

loadTimeoutMsmặc định: 5 giây

Giá trị này giá»›i hạn thá»i gian timeout cho phương thức này. Nếu đạt đến giá»›i hạn timeout, 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ể timeout 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.

Äối vá»›i Android: Bạn có thể tạo TimeInterval bằng các extension function (như 5.seconds, trong đó .seconds đến từ import com.adapty.utils.seconds), hoặc TimeInterval.seconds(5). Äể không giá»›i hạn, hãy dùng TimeInterval.INFINITE.

Tham số phản hồi

Tham sốMô tả
PaywallÄối tượng AdaptyPaywall chứa 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 cấu hình hiển thị của paywall được thiết kế bằng Paywall Builder

Hãy đảm bảo bật toggle Show on device trong Paywall Builder. Nếu tùy chá»n này chưa được bật, cấu hình hiển thị sẽ không thể lấy được.

Sau khi lấy paywall, hãy kiểm tra xem nó có chứa ViewConfiguration hay không — đây là dấu hiệu cho biết paywall được tạo bằng Paywall Builder. Äiá»u này sẽ giúp bạn xác định cách hiển thị paywall. Nếu có ViewConfiguration, hãy xá»­ lý nó như má»™t Paywall Builder paywall; nếu không, xá»­ lý nó như má»™t Remote Config paywall.

Trong React Native SDK, hãy gá»i trá»±c tiếp phương thức createPaywallView mà không cần tá»± lấy view configuration trước.

Kết quả cá»§a phương thức createPaywallView chỉ có thể được sá»­ dụng má»™t lần. Nếu bạn cần sá»­ dụng lại, hãy gá»i lại phương thức createPaywallView từ đầu. Việc gá»i hai lần mà không tạo lại có thể dẫn đến lá»—i AdaptyUIError.viewAlreadyPresented.

// for the Adapty SDK < 3.14 – import {createPaywallView} from 'react-native-adapty/dist/ui';

if (paywall.hasViewConfiguration) {
  try {
    const view = await createPaywallView(paywall);
  } catch (error) {
    // handle the error
  }
} else {
    //use your custom logic
}

Tham số:

Tham sốBắt buộcMô tả
paywallbắt buá»™cÄối tượng AdaptyPaywall để lấy controller cho paywall mong muốn.
customTagstùy chá»nÄịnh nghÄ©a má»™t dictionary gồm các custom tag và giá trị tương ứng. Custom tag đóng vai trò là placeholder trong ná»™i dung paywall, được thay thế động bằng các chuá»—i cụ thể để cá nhân hóa ná»™i dung trong paywall. Xem thêm trong phần Custom tags in paywall builder để biết thêm chi tiết.
prefetchProductstùy chá»nBật tùy chá»n này để tối ưu hóa thá»i Ä‘iểm hiển thị sản phẩm trên màn hình. Khi đặt là true, AdaptyUI sẽ tá»± động tải các sản phẩm cần thiết. Mặc định: false.

Nếu bạn Ä‘ang sá»­ dụng nhiá»u ngôn ngữ, hãy tìm hiểu cách thêm bản địa hóa Paywall Builder và cách sá»­ dụng mã locale đúng cách tại đây.

Sau khi có view, hãy hiển thị paywall.

Lấy paywall cho đối tượng mặc định để tải nhanh hơn

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 độ. Tuy nhiên, trong trưá»ng hợp bạn có nhiá»u đối tượng và paywall, và ngưá»i dùng cá»§a bạn 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 đợi. Trong những tình huống như vậy, bạn có thể muốn hiển thị 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ể dùng phương thức getPaywallForDefaultAudience, phương thức này lấy paywall cá»§a placement đã 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ị vẫn là lấy paywall bằng phương thức getPaywall, như đã trình bày chi tiết trong phần Lấy thông tin Paywall ở trên.

Lý do chúng tôi khuyến nghị dùng getPaywall

Phương thức getPaywallForDefaultAudience có một số hạn chế đáng kể:

  • Các vấn đỠvá» khả năng tương thích ngược: 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 Ä‘ang dùng phiên bản hiện tại (cÅ©) có thể gặp sá»± cố vá»›i các paywall không hiển thị được.
  • Mất khả năng nhắm mục tiêu: 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 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 chấp nhận những hạn chế đó để đổ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 phải là mã ngôn ngữ gồm má»™t hoặc nhiá»u thẻ phụ được phân tách bằng dấu trừ (-). Thẻ phụ đầu tiên là ngôn ngữ, thẻ thứ hai là khu vá»±c.

Ví dụ: en là tiếng Anh, pt-br là tiếng Bồ Äào Nha (Brazil).

Xem Bản địa hóa và mã ngôn ngữ để biết thêm thông tin vỠmã ngôn ngữ 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ị 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 tình trạng kết nối 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 dù kết nối mạng không ổn định. 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 sau khi khởi động lại ứng dụng và chỉ bị xóa khi gỡ cài đặt ứng dụng hoặc xóa thủ công.

Tùy chỉnh assets

Äể tùy chỉnh hình ảnh và video trong paywall cá»§a bạn, hãy triển khai custom assets.

Hình ảnh và video hero có ID được định sẵn: hero_image và hero_video. Trong một custom asset bundle, bạn nhắm đến các phần tử này bằng ID của chúng và tùy chỉnh hành vi của chúng.

Äối vá»›i các hình ảnh và video khác, bạn cần đặt custom ID trong Adapty dashboard.

Ví dụ, bạn có thể:

  • Hiển thị hình ảnh hoặc video khác cho má»™t số ngưá»i dùng.
  • Hiển thị hình ảnh xem trước cục bá»™ trong khi hình ảnh chính từ remote Ä‘ang tải.
  • Hiển thị hình ảnh xem trước trước khi chạy video.

Äể sá»­ dụng tính năng này, hãy cập nhật Adapty React Native SDK lên phiên bản 3.8.0 trở lên.

Dưới đây là ví dụ vỠcách cung cấp custom assets thông qua một dictionary đơn giản:

const customAssets: Record<string, AdaptyCustomAsset> = {
  'custom_image': { type: 'image', relativeAssetPath: 'custom_image.png' },
  'hero_video': {
    type: 'video',
    fileLocation: {
      ios: { fileName: 'custom_video.mp4' },
      android: { relativeAssetPath: 'videos/custom_video.mp4' }
    }
  }
};

view = await createPaywallView(paywall, { customAssets })

Nếu không tìm thấy asset, paywall sẽ trở vỠgiao diện mặc định của nó.

ÿÿÿÿ