ÿÿ Lấy onboarding trong Adapty | Tài liệu Adapty

Lấy onboarding trong Flutter SDK

Onboardings đã bị deprecated trong SDK v4 và sẽ bị xóa trong phiên bản tương lai. Chúng không còn nhận được các bản sá»­a lá»—i hay cải tiến nữa. Hãy sá»­ dụng flows thay thế: khác vá»›i onboardings chạy bên trong WebView, flows render trá»±c tiếp trên thiết bị — mang lại hoạt ảnh mượt mà hÆ¡n, giao diện native nhất quán, thá»i gian tải nhanh hÆ¡n và không phụ thuá»™c vào WebView runtime. Xem Lấy flows & paywalls và Hiển thị flows & paywalls để bắt đầu.

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

Trước khi bắt đầu, hãy đảm bảo rằng:

  1. Bạn đã cài đặt Adapty Flutter SDK phiên bản 3.8.0 trở lên.
  2. Bạn đã tạo một onboarding.
  3. Bạn đã thêm onboarding vào một placement.

Lấy dữ liệu onboarding

Khi bạn tạo má»™t onboarding bằng trình tạo no-code cá»§a chúng tôi, nó được lưu trữ dưới dạng má»™t container chứa cấu hình mà ứng dụng cần lấy vá» và hiển thị. Container này quản lý toàn bá»™ trải nghiệm — ná»™i dung hiển thị, cách trình bày, và cách xá»­ lý các tương tác cá»§a ngưá»i dùng (như câu trả lá»i quiz hoặc dữ liệu nhập từ form). Container cÅ©ng tá»± động theo dõi các sá»± kiện analytics, vì vậy bạn không cần phải tá»± triển khai việc theo dõi lượt xem riêng.

Äể có hiệu suất tốt nhất, hãy lấy cấu hình onboarding sá»›m để hình ảnh có đủ thá»i gian tải xuống trước khi hiển thị cho ngưá»i dùng. Äể lấy onboarding, hãy dùng phương thức getOnboarding:

try {
  final onboarding = await Adapty().getOnboarding(placementId: "YOUR_PLACEMENT_ID");
} on AdaptyError catch (e) {
    //handle error
} catch (e) { 
    //handle error
}

Sau đó, gá»i phương thức createOnboardingView để lấy view bạn sẽ hiển thị.

Kết quả cá»§a phương thức createOnboardingView 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 createOnboardingView. Việc gá»i hai lần mà không tạo lại có thể dẫn đến lá»—i AdaptyUIError.viewAlreadyPresented.


try {
    final onboardingView = await Adapty().createOnboardingView(onboarding: onboarding);
} on AdaptyError catch (e) { 
    //handle error
} catch (e) { 
    //handle error
}

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 bản địa hóa cá»§a onboarding. Tham số này được kỳ vá»ng là má»™t mã ngôn ngữ gồm má»™t hoặc hai thẻ con phân cách bằng ký tá»± dấu trừ (-). Thẻ con đầu tiên là ngôn ngữ, thẻ con thứ hai là vùng.

Ví dụ: en nghÄ©a là tiếng Anh, pt-br đại diện cho tiếng Bồ Äào Nha Brazil.

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 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 vấn đỠvá»›i 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 dù 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 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òn 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 dá»n dẹp thá»§ công.

Adapty SDK lưu trữ onboarding cục bá»™ theo hai lá»›p: cache được cập nhật thưá»ng xuyên như mô tả ở trên và onboarding dá»± phòng. Chúng tôi cÅ©ng sá»­ dụng CDN để tải onboarding nhanh hÆ¡n và má»™t máy chá»§ 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 onboarding má»›i nhất trong khi vẫn đảm bảo độ tin cậy ngay cả khi kết nối internet bị hạn chế.

loadTimeoutmặ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.

Các tham số phản hồi

Tham sốMô tả
OnboardingMột đối tượng AdaptyOnboarding chứa: mã định danh và cấu hình onboarding, Remote Config, cùng một số thuộc tính khác.

Tăng tốc tải onboarding với onboarding đối tượng mặc định

Thông thưá»ng, onboarding đượ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à onboarding, và ngưá»i dùng có kết nối internet yếu, việc tải onboarding có thể mất nhiá»u thá»i gian hÆ¡n mong muốn. Trong những tình huống đó, bạn có thể muốn hiển thị má»™t onboarding 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ể dùng phương thức getOnboardingForDefaultAudience, phương thức này sẽ lấy onboarding 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 onboarding bằng phương thức getOnboarding, như đã mô tả chi tiết trong phần Fetch Onboarding ở trên.

Hãy cân nhắc dùng getOnboarding thay vì getOnboardingForDefaultAudience, vì phương thức sau có những hạn chế quan trá»ng:

  • Vấn đỠtương thích: Có thể gây ra sá»± cố khi há»— trợ nhiá»u phiên bản ứng dụng, đòi há»i thiết kế tương thích ngược hoặc chấp nhận rằng các phiên bản cÅ© hÆ¡n có thể hiển thị không đúng.
  • Không có cá nhân hóa: Chỉ hiển thị ná»™i dung cho đối tượng “Tất cả ngưá»i dùngâ€, loại bá» khả năng nhắm mục tiêu theo quốc gia, attribution, hoặc thuá»™c tính tùy chỉnh.

Nếu tốc độ tải nhanh hÆ¡n quan trá»ng hÆ¡n các hạn chế này trong trưá»ng hợp cá»§a bạn, hãy sá»­ dụng getOnboardingForDefaultAudience như hướng dẫn bên dưới. Nếu không, hãy dùng getOnboarding như đã mô tả ở trên.

try {
    final onboarding = await Adapty().getOnboardingForDefaultAudience(placementId: 'YOUR_PLACEMENT_ID');
} on AdaptyError catch (adaptyError) {
    // handle error
} catch (e) {
    // handle unknown error
}

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 onboarding. Tham số này được kỳ vá»ng là má»™t mã ngôn ngữ gồm má»™t hoặc hai subtag được phân tách bằng ký tá»± dấu trừ (-). Subtag đầu tiên là ngôn ngữ, subtag thứ hai là khu vá»±c.

Ví dụ: en nghÄ©a là tiếng Anh, pt-br đại diện cho tiếng Bồ Äào Nha cá»§a Brazil.

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 hay gặp tình trạng 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 sẽ có thá»i gian tải nhanh hÆ¡n, bất kể kết nối internet cá»§a há» có bập bõm đến đâu. Cache được cập nhật thưá»ng xuyên nên an toàn khi sá»­ 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 giữ nguyên khi khởi động lại ứng dụng và chỉ bị xóa khi ứng dụng được cài lại hoặc khi dá»n dẹp thá»§ công.

Adapty SDK lưu trữ onboarding cục bá»™ theo hai lá»›p: cache được cập nhật thưá»ng xuyên như mô tả ở trên và các onboarding dá»± phòng. Chúng tôi cÅ©ng sá»­ dụng CDN để tải onboarding nhanh hÆ¡n và má»™t máy chá»§ dá»± phòng độc lập phòng khi CDN không thể truy cập được. Hệ thống này được thiết kế để đảm bảo bạn luôn nhận được phiên bản onboarding má»›i nhất trong khi vẫn đảm bảo độ tin cậy ngay cả khi kết nối internet hạn chế.

ÿÿÿÿ