Xử lý hành động nút trong Flutter SDK
Nếu bạn đang xây dựng flow hoặc paywall bằng Adapty builder, việc thiết lập các nút đúng cách là rất quan trọng:
- Thêm nút trong builder và gán cho nút đó một action có sẵn hoặc tạo custom action ID.
- Viết code trong ứng dụng để xử lý từng action bạn đã gán.
Hướng dẫn này trình bày cách xử lý các custom action và action có sẵn trong code của bạn.
Đóng màn hình và mở URL được xử lý tự động bởi cài đặt mặc định của flowViewDidPerformAction, và SDK tự xử lý các giao dịch mua và khôi phục. Tất cả các hành động nút khác, chẳng hạn như đăng nhập hoặc mở một flow khác, cần được xử lý trong mã ứng dụng. Lưu ý rằng việc phản hồi các giao dịch mua và khôi phục đã hoàn thành diễn ra trong các callback observer bắt buộc — xem Xử lý sự kiện flow & paywall.
Đóng flow và paywall
Để thêm nút đóng flow hoặc paywall, trong builder, hãy thêm một nút và gán cho nó hành động Close. Không cần viết code: implementation mặc định của flowViewDidPerformAction sẽ tự động đóng view khi nhận được CloseAction.
Nút Back của hệ thống Android không còn tự động đóng view theo mặc định nữa. Nó được chuyển đến flowViewDidPerformAction dưới dạng AndroidSystemBackAction — bạn cần tự xử lý nếu muốn nút back đóng flow hoặc paywall.
Ghi đè flowViewDidPerformAction nếu bạn cần hành vi tùy chỉnh — ví dụ: đóng view khi người dùng nhấn nút back của hệ thống Android, như trong v3:
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case const CloseAction():
case const AndroidSystemBackAction():
view.dismiss();
break;
case OpenUrlAction(:final url, :final openIn):
AdaptyUI().openUrl(url, openIn: openIn);
break;
default:
break;
}
}Việc ghi đè flowViewDidPerformAction sẽ thay thế hoàn toàn phần cài đặt mặc định — hãy giữ lại các case CloseAction và OpenUrlAction nếu bạn muốn giữ nguyên hành vi đóng và mở URL mặc định.
Mở URL từ flow và paywall
Nếu bạn muốn thêm một nhóm liên kết (ví dụ: điều khoản sử dụng và khôi phục giao dịch mua), hãy thêm phần tử Link trong builder và xử lý giống như các nút có hành động Open URL.
Để thêm nút mở liên kết (ví dụ: Terms of use hoặc Privacy policy), trong builder, hãy thêm một nút, gán cho nó hành động Open URL, rồi nhập URL bạn muốn mở.
Không cần viết code: phần triển khai mặc định của flowViewDidPerformAction sẽ mở URL theo cách native thông qua AdaptyUI().openUrl, tuân theo cài đặt mở trong trình duyệt trong ứng dụng hoặc trình duyệt ngoài từ dashboard.
Hành vi mặc định là đủ cho hầu hết các trường hợp. Nếu bạn vẫn muốn tự xử lý việc mở URL, hãy ghi đè handler:
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case const CloseAction():
view.dismiss();
break;
case OpenUrlAction(url: final url):
// Open the URL in whatever way fits your app
break;
default:
break;
}
}Đăng nhập vào ứng dụng
Để thêm nút cho phép người dùng đăng nhập vào ứng dụng:
- Trong builder, thêm một nút và gán cho nó action Login.
- Trong code ứng dụng, triển khai handler cho action
loginđể xác định người dùng của bạn.
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'login'):
// Navigate to your login screen in whatever way fits your app
break;
default:
break;
}
}Xử lý các hành động tùy chỉnh
Để thêm nút xử lý các hành động khác:
- Trong builder, thêm một nút, gán cho nó hành động Custom và đặt cho nó một ID.
- Trong code của ứng dụng, triển khai một handler cho ID hành động bạn đã tạo.
Ví dụ: nếu bạn có một bộ ưu đãi gói đăng ký hoặc sản phẩm mua một lần khác, bạn có thể thêm một nút để hiển thị một flow hoặc paywall khác:
void flowViewDidPerformAction(AdaptyUIFlowView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'openNewPaywall'):
// Display another flow or paywall
break;
default:
break;
}
}Nếu bạn đang xây dựng paywall bằng Adapty paywall builder, việc thiết lập các nút đúng cách là rất quan trọng:
- Thêm một nút trong paywall builder và gán cho nó một hành động có sẵn hoặc tạo một ID hành động tùy chỉnh.
- Viết code trong ứng dụng của bạn để xử lý từng hành động bạn đã gán. Hướng dẫn này chỉ cách xử lý các hành động tùy chỉnh và có sẵn trong code của bạn.
Chỉ có giao dịch mua và khôi phục là được xử lý tự động. Tất cả các hành động nút khác, chẳng hạn như đóng paywall hoặc mở liên kết, đều cần bạn tự triển khai xử lý trong code của ứng dụng.
Đóng paywall
Để thêm nút đóng paywall:
- Trong Paywall Builder, thêm một nút và gán cho nó hành động Close.
- Trong code ứng dụng, triển khai handler cho các hành động
CloseActionvàAndroidSystemBackAction.
Trong Flutter SDK, các hành động CloseAction và AndroidSystemBackAction mặc định sẽ kích hoạt việc đóng paywall. Tuy nhiên, bạn có thể ghi đè hành vi này trong code nếu cần. Ví dụ, đóng một paywall có thể kích hoạt mở một paywall khác.
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case const CloseAction():
case const AndroidSystemBackAction():
view.dismiss();
break;
default:
break;
}
}Mở URL từ paywall
Nếu bạn muốn thêm một nhóm liên kết (ví dụ: điều khoản sử dụng và khôi phục giao dịch), hãy thêm phần tử Link trong paywall builder và xử lý nó theo cách tương tự như các nút với hành động Open URL.
Để thêm một nút mở liên kết từ paywall của bạn (ví dụ: Terms of use hoặc Privacy policy):
- Trong paywall builder, thêm một nút, gán cho nó hành động Open URL, và nhập URL bạn muốn mở.
- Trong code ứng dụng của bạn, triển khai một handler cho hành động
openUrlđể mở URL nhận được trong trình duyệt.
// You have to install url_launcher plugin in order to handle urls:
// https://pub.dev/packages/url_launcher
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case OpenUrlAction(url: final url):
final Uri uri = Uri.parse(url);
launchUrl(uri, mode: LaunchMode.inAppBrowserView);
break;
default:
break;
}
}Đăng nhập vào ứng dụng
Để thêm nút cho phép người dùng đăng nhập vào ứng dụng:
- Trong paywall builder, thêm một nút và gán cho nó hành động Login.
- Trong code ứng dụng, triển khai một handler cho hành động
loginđể xác định người dùng.
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'login'):
// Navigate to your login screen in whatever way fits your app
break;
default:
break;
}
}Xử lý custom action
Để thêm nút xử lý bất kỳ hành động nào khác:
- Trong Paywall Builder, thêm một nút, gán cho nó hành động Custom, và đặt cho nó một ID.
- Trong code của ứng dụng, hãy triển khai handler cho action ID mà bạn đã tạo.
Ví dụ: nếu bạn có một bộ ưu đãi đăng ký hoặc sản phẩm mua một lần khác, bạn có thể thêm một nút để hiển thị paywall khác:
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
switch (action) {
case CustomAction(action: 'openNewPaywall'):
// Display another paywall
break;
default:
break;
}
}