Xử lý hành động nút trong Kotlin Multiplatform SDK
Chỉ có các giao dịch mua và khôi phục được xử lý tự động. Tất cả các hành động nút khác, như đóng paywall hoặc mở liên kết, đều cần được triển khai phản hồi trong mã ứng dụng.
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 mã 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 trình bày cách xử lý các hành động tùy chỉnh và hành động có sẵn trong mã của bạn.
Thiết lập AdaptyUIPaywallsEventsObserver
Để xử lý các hành động paywall, bạn cần triển khai interface AdaptyUIPaywallsEventsObserver và thiết lập nó bằng AdaptyUI.setPaywallsEventsObserver(). Việc này nên được thực hiện sớm trong vòng đời ứng dụng, thường là trong activity chính hoặc khởi tạo ứng dụng.
// In your app initialization
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver())
Đóng paywall
Để thêm một nút sẽ đóng paywall của bạn:
- Trong paywall builder, thêm một nút và gán cho nó hành động Close.
- Trong mã ứng dụng của bạn, triển khai trình xử lý cho hành động
closeđể đóng paywall.
Trong Kotlin Multiplatform SDK, CloseAction và AndroidSystemBackAction sẽ kích hoạt đóng paywall theo mặc định. Tuy nhiên, bạn có thể ghi đè hành vi này trong mã của mình nếu cần. Ví dụ, đóng một paywall có thể kích hoạt mở một paywall khác.
class MyAdaptyUIPaywallsEventsObserver : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
AdaptyUIAction.CloseAction, AdaptyUIAction.AndroidSystemBackAction -> view.dismiss()
}
}
}
// Set up the observer
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver())
Nếu bạn đang sử dụng createNativePaywallView, việc gọi view.dismiss() sẽ không có hiệu lực — view được nhúng vào layout của bạn, không được hiển thị thông qua stack KMP. Thay vào đó, hãy xóa view khỏi layout và gọi dispose() trên nó.
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 mua), hãy thêm phần tử Link trong paywall builder và xử lý nó giống như các nút có 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 mã ứng dụng của bạn, triển khai trình xử lý cho hành động
openUrlđể mở URL nhận được trong trình duyệt.
Trong Kotlin Multiplatform SDK, OpenUrlAction cung cấp URL cần được mở. Bạn có thể triển khai logic tùy chỉnh để xử lý việc mở URL, chẳng hạn như hiển thị hộp thoại xác nhận hoặc sử dụng phương thức xử lý URL ưa thích của ứng dụng.
class MyAdaptyUIPaywallsEventsObserver(
private val uriHandler: UriHandler
) : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.OpenUrlAction -> {
// Show confirmation dialog before opening URL
mainUiScope.launch {
val selectedAction = view.showDialog(
title = "Open URL?",
content = action.url,
primaryActionTitle = "Cancel",
secondaryActionTitle = "Open"
).getOrNull()
when (selectedAction) {
AdaptyUIDialogActionType.PRIMARY -> {
// User cancelled
}
AdaptyUIDialogActionType.SECONDARY -> {
// User confirmed - open URL
uriHandler.openUri(action.url)
}
else -> Unit
}
}
}
}
}
}
// Set up the observer with UriHandler
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver(uriHandler))
Đăng nhập vào ứng dụng
Để thêm một 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 Custom với ID “login”.
- Trong mã ứng dụng của bạn, triển khai trình xử lý cho hành động tùy chỉnh để xác định người dùng của bạn.
class MyAdaptyUIObserver : AdaptyUIObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CustomAction -> {
if (action.action == "login") {
// Handle login action - navigate to login screen
// This depends on your app's navigation system
// For example, in Compose Multiplatform:
// navController.navigate("login")
}
}
}
}
}
Xử lý hành động tùy chỉnh
Để thêm một nút xử lý các hành động khác:
- Trong paywall builder, thêm một nút, gán cho nó hành động Custom, và gán cho nó một ID.
- Trong mã ứng dụng của bạn, triển khai trình xử lý 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 sẽ hiển thị một paywall khác:
class MyAdaptyUIPaywallsEventsObserver : AdaptyUIPaywallsEventsObserver {
override fun paywallViewDidPerformAction(view: AdaptyUIPaywallView, action: AdaptyUIAction) {
when (action) {
is AdaptyUIAction.CustomAction -> {
when (action.action) {
"login" -> {
// Handle login action - navigate to login screen
// This depends on your app's navigation system
// For example, in Compose Multiplatform:
// navController.navigate("login")
}
}
}
}
}
}
// Set up the observer
AdaptyUI.setPaywallsEventsObserver(MyAdaptyUIPaywallsEventsObserver())