Hành động
Panel Interactions cho phép bạn xác định cách các phần tử trong flow phản hồi với các sự kiện — chẳng hạn như chạm, xuất hiện phần tử và gửi form. Với mỗi sự kiện, bạn gán một hoặc nhiều hành động: điều hướng giữa các màn hình, hiển thị hoặc ẩn các phần tử, mở URL, đặt biến và nhiều hơn nữa. Sử dụng điều kiện để tùy chỉnh flow dựa trên dữ liệu người dùng.
Mỗi tương tác tuân theo một chuỗi ba phần:
- Element: Thành phần màn hình khởi đầu tương tác — một nút, câu trả lời quiz, trường nhập liệu, hoặc bất kỳ thứ gì khác.
- Trigger: Sự kiện kích hoạt logic, chẳng hạn như thao tác chạm, một phần tử xuất hiện, hoặc việc gửi form.
- Action: Tác vụ mà flow thực hiện để phản hồi. Một trigger có thể chạy nhiều action theo thứ tự.
Thiết lập tương tác
Để thiết lập một tương tác:
- Chọn một phần tử trên màn hình hoặc trong panel Layers.
- Ở bên phải, chuyển sang panel Interactions và nhấn Add trigger.
- Trong phần Button triggers, chọn loại trigger.
- Nhấn Add action, nhấn vào tên action, rồi chọn loại action từ dropdown trong cửa sổ Edit action.
- Cấu hình thuộc tính của action dựa trên loại action bạn đã chọn.
- Nếu cần, nhấp Add action để thêm nhiều action cho cùng một trigger.
Các loại trigger
Trigger kích hoạt theo hành vi của người dùng, trạng thái thay đổi của phần tử, hoặc khi màn hình tải. On screen appear là loại phổ quát; các loại còn lại dành riêng cho từng phần tử.
| Trigger | Kích hoạt khi… | Hỗ trợ trên |
|---|---|---|
| On screen appear | Màn hình tải | Tất cả các phần tử |
| On tap | Người dùng nhấn vào phần tử | Buttons, quiz options, toggles, countdowns, videos |
| On changed | Người dùng thay đổi giá trị của input (gõ phím, chọn ngày hoặc giờ) | Tất cả input elements |
| On submit | Người dùng gửi text input bằng cách nhấn Enter hoặc Done trên bàn phím | Text-based inputs |
| On timer end | Một phần tử Countdown chạm về không | Countdown |
| On playback finished | Một Video phát đến hết | Video |
| Đối với các phần tử không có tương tác tích hợp sẵn (như Loader), On screen appear là trigger duy nhất có sẵn. |
Các loại hành động
Bất kỳ hành động điều hướng nào đưa người dùng đến màn hình khác phải luôn là hành động cuối cùng trong danh sách. Các hành động đặt sau nó (như “Set Variable”) có thể không thực thi vì ứng dụng đã chuyển sang màn hình khác rồi.
Điều hướng đến màn hình
Đây là hành động chính để chuyển người dùng giữa các màn hình. Hành động này đưa người dùng đến màn hình đích đã được chỉ định.
Với hành động này, bạn chỉ cần thiết lập màn hình đích. Nếu muốn bật tính năng điều hướng động, hãy xem Điều hướng và phân nhánh hoặc phần Hành động có điều kiện.
Điều hướng đến màn hình tiếp theo
Chuyển người dùng đến màn hình tiếp theo theo thứ tự màn hình trong flow. Dùng tính năng này cho các flow tuyến tính, nơi thứ tự màn hình trong trình chỉnh sửa khớp với thứ tự bạn muốn người dùng xem.
Quay lại
Đưa người dùng trở lại màn hình trước đó trong lịch sử điều hướng, thay vì màn hình trước đó trong chuỗi trình tự.
Mở URL
Dùng liên kết nội tuyến để chèn liên kết vào văn bản thông thường.
Mở một địa chỉ web cụ thể. Dùng tính năng này để đưa người dùng đến các trang web, bài viết, hoặc trang mạng xã hội bên ngoài màn hình native của ứng dụng. Với hành động này, bạn có thể cấu hình hai thiết lập:
- URL address: Đặt địa chỉ URL. Ngoài ra, bạn có thể làm cho URL trở nên động — ví dụ: điều hướng người dùng đến các trang khác nhau dựa trên câu trả lời quiz hoặc dữ liệu họ đã nhập. Để làm điều này, nhấp vào
và chọn biến bạn muốn sử dụng. - Open in external browser: Xác định nơi bạn muốn mở các liên kết bên ngoài. Mặc định, các liên kết sẽ mở trong trình duyệt trong ứng dụng để giữ người dùng ở lại trong app. Chọn hộp kiểm Open in external browser nếu bạn muốn mở liên kết trong trình duyệt bên ngoài.
Đóng flow
Đóng flow hiện tại.
Hiển thị/ẩn phần tử
Hiển thị hoặc ẩn một phần tử cụ thể trên màn hình.
Hành động này ghi đè trạng thái ban đầu được thiết lập trong Visibility ở bảng Design. Nếu Visibility được đặt thành Hide, hành động Show sẽ làm cho phần tử đó xuất hiện.
Hành động Show hoặc Hide không có phần tử mục tiêu sẽ chặn việc xem trước và xuất bản. Hãy chọn một mục tiêu hoặc xóa hành động đó.
Hiển thị cảnh báo
Hiển thị một cửa sổ pop-up hệ thống gốc. Người dùng phải nhấn Ok để tiếp tục.
Với cảnh báo, bạn cần thiết lập Title và Message. Trong cả hai, bạn có thể dùng biến để làm nội dung động. Để thực hiện, nhấn
và chọn biến bạn muốn dùng.
Một hành động Show alert có cấu hình trống hoặc chưa hoàn chỉnh sẽ chặn việc xem trước và xuất bản. Hãy điền đầy đủ cả hai trường hoặc xóa hành động này đi.
Đặt biến
Cập nhật giá trị của một biến trong flow. Trước khi thêm action này, hãy tạo các biến trong bảng Variables ở bên trái (xem Variables).
Nhấn Add variable và thiết lập số lượng biến cùng giá trị tương ứng tùy theo nhu cầu.
Một action Set variable không có phép gán nào sẽ chặn việc xem trước và xuất bản. Hãy cấu hình ít nhất một phép gán hoặc xóa action này đi.
Mua hàng
Kích hoạt flow mua hàng trực tiếp từ một nút hoặc tương tác trong onboarding của bạn. Dùng tính năng này để cho phép người dùng đăng ký hoặc mua sản phẩm mà không cần rời khỏi flow. Bạn có thể cấu hình hai hành vi cho action này:
- In-app store: Khởi động một giao dịch mua hàng native. Đặt Product thành một sản phẩm cụ thể, hoặc
products.selectedProductcho lựa chọn hiện tại của người dùng trên màn hình. - Web payment: Chuyển người dùng đến web paywall thay vì kích hoạt giao dịch mua hàng native. Dùng tùy chọn này khi bạn muốn xử lý giao dịch bên ngoài ứng dụng, chẳng hạn như các ưu đãi gói đăng ký qua web.
Một hành động Purchase không có Product hoặc Web Paywall URL đích sẽ chặn việc xem trước và xuất bản. Hãy gán mục tiêu hoặc xóa hành động đó.
Khôi phục giao dịch mua
Kích hoạt flow khôi phục giao dịch mua trên thiết bị. Người dùng nhấn vào đây khi đã mua gói đăng ký trên thiết bị khác hoặc sau khi cài đặt lại ứng dụng và cần lấy lại quyền truy cập.
Không có gì cần cấu hình cho action này — Adapty xử lý việc khôi phục thông qua flow native của cửa hàng.
Action Restore purchases cũng được cấu hình sẵn trên liên kết Restore trong bộ preset nút Links (xem Thiết lập giao dịch mua).
Hành động tùy chỉnh
Hành động tùy chỉnh kích hoạt một Action ID được đặt tên mà chính code ứng dụng của bạn xử lý. Dùng khi các loại hành động tích hợp sẵn không đáp ứng được nhu cầu.
Adapty cung cấp trigger; ứng dụng của bạn thực thi hành vi:
- Trong builder, bạn gán một Action ID cho tương tác của một phần tử.
- Khi người dùng kích hoạt tương tác, flow sẽ truyền ID đó đến ứng dụng của bạn.
- Ứng dụng của bạn khớp ID và chạy code của bạn.
Thiết lập hành động tùy chỉnh
- Trong cửa sổ Edit action, đặt Action ID — một chuỗi mà ứng dụng của bạn sẽ nhận diện (ví dụ:
show_discount). - Trong code ứng dụng, hãy triển khai một handler cho Action ID này. Xem Xử lý hành động paywall để biết chi tiết triển khai và ví dụ code.
Một hành động Custom không có Action ID sẽ chặn việc xem trước và xuất bản. Hãy gán Action ID hoặc xóa hành động đó.
Những gì bạn có thể làm với custom action
Custom action tự nó không làm gì cả. Bạn đặt một Action ID tĩnh trong builder, rồi code trong app của bạn xử lý khi nhận được ID đó. Mọi trường hợp sử dụng bên dưới đều theo cùng một mẫu: gán ID trong flow, sau đó xử lý nó trong code của bạn.
- Kích hoạt một sự kiện in-app: Gắn ID như
viewed_special_offer, sau đó ghi lại sự kiện vào hệ thống analytics khi ứng dụng nhận được nó. - Yêu cầu quyền hệ thống: Gắn ID như
request_location, sau đó gọi hộp thoại xin quyền từ hệ điều hành trong ứng dụng. Với những quyền mà hộp thoại không thể cấp, hãy mở phần cài đặt hệ thống của điện thoại thay thế. Adapty không hiển thị hộp thoại đó — ứng dụng của bạn mới là bên thực hiện. - Bắt đầu xác thực gốc: Gắn ID như
login_google, sau đó hiển thị màn hình đăng nhập của riêng bạn. Flow không thể tự đăng nhập người dùng. - Áp dụng logic nghiệp vụ: Gắn ID như
apply_discount, sau đó mở khóa nội dung hoặc thay đổi trạng thái ứng dụng từ phía bạn. - Truyền câu trả lời quiz về ứng dụng: Gán một Action ID khác nhau cho mỗi lựa chọn (ví dụ:
goal_weight_lossvàgoal_muscle), sau đó đọc ID đó trong code của bạn. Dùng ID này để đặt thuộc tính người dùng tùy chỉnh mà bạn có thể phân khúc sau này. Vì action chỉ mang một ID cố định, đây là cách duy nhất để ghi lại lựa chọn — flow không thể gửi giá trị đã chọn.
Một custom action được kích hoạt ngay khi người dùng chọn một tùy chọn. Nếu người dùng thay đổi câu trả lời, flow sẽ kích hoạt Action ID mới. Ứng dụng của bạn sẽ nhận cả hai theo thứ tự — ví dụ: goal_weight_loss, rồi goal_muscle. Hãy đảm bảo handler của bạn có tính idempotent để tín hiệu mới nhất luôn được ưu tiên.
Những gì custom action không thể làm
Custom action là tĩnh. Action ID được cố định ngay khi bạn build flow — nó không thể đọc biến hay dữ liệu nhập của người dùng. Khi action được kích hoạt, ứng dụng của bạn chỉ nhận được ID đó, không bao giờ là email, số điện thoại hay dữ liệu nhập nào khác mà người dùng đã điền. Các trường nhập liệu vẫn nằm trong flow dưới dạng biến để phân nhánh và cá nhân hóa. Để sử dụng những giá trị đó trong ứng dụng, hãy thu thập chúng thông qua UI hoặc API của riêng bạn. Custom actions cũng là một chiều. App của bạn không thể trả kết quả về cho flow, và flow cũng không chờ code của bạn chạy xong. Nếu sau custom action có action Navigate next, người dùng sẽ chuyển sang màn hình tiếp theo ngay cả khi code của bạn thất bại — ví dụ như khi người dùng đóng màn hình đăng nhập mà chưa đăng nhập. Kết hợp với Action ID cố định, điều này loại trừ khả năng xác thực dữ liệu nhập của người dùng trong app — ví dụ như kiểm tra mã SMS người dùng nhập và phân nhánh dựa trên kết quả. Nếu phần còn lại của flow phụ thuộc vào những gì code của bạn đã làm, hãy chia flow thành hai placement.
Tiếp tục flow dựa trên kết quả
Nếu một số màn hình chỉ nên xuất hiện sau khi một custom action thành công — ví dụ, các màn hình xuất hiện sau khi đăng nhập — hãy chia flow thành hai placement và để ứng dụng của bạn quyết định khi nào hiển thị phần thứ hai:
- Trong placement đầu tiên, tạo một flow kết thúc bằng một custom action (ví dụ:
login). - Trong ứng dụng của bạn, xử lý Action ID: hiển thị màn hình đăng nhập và kiểm tra xem người dùng đã đăng nhập chưa.
- Nếu người dùng đã đăng nhập, hiển thị flow từ placement thứ hai với các màn hình tiếp theo. Bằng cách này, ứng dụng của bạn kiểm soát việc chuyển màn hình dựa trên kết quả thực tế, thay vì flow tự điều hướng tiến lên bất kể kết quả như thế nào.
Hành động có điều kiện
Sử dụng các hành động có điều kiện để phân chia flow thành các nhánh khác nhau dựa trên dữ liệu người dùng.
Một số trường hợp sử dụng phổ biến bao gồm:
- Bạn có một bài quiz trên màn hình và muốn điều hướng người dùng đến các màn hình khác nhau dựa trên câu trả lời của họ. Trong trường hợp này, hãy thêm hành động có điều kiện vào một nút.
- Bạn muốn cung cấp các sản phẩm và ưu đãi khác nhau cho các nhóm người dùng khác nhau. Đặt chúng trên các màn hình riêng biệt và thiết lập điều kiện cho nút điều hướng.
- Bạn muốn bỏ qua một số bước cho người dùng đã hoàn thành hướng dẫn trong phiên ứng dụng trước đó. Các hành động có điều kiện hoạt động như một chuỗi if / else-if / else. Ứng dụng đọc các quy tắc từ trên xuống dưới và dừng lại ở kết quả khớp đầu tiên:
- IF: Flow kiểm tra điều kiện chính.
- Kết quả là True? Flow thực thi ngay các hành động THEN và dừng lại.
- Kết quả là False? Flow bỏ qua và chuyển sang phần tiếp theo.
- ELSE IF: Bạn có thể thêm các kiểm tra bổ sung tại đây (ví dụ: “Nếu không phải Premium, người dùng có đang dùng Trial không?”).
- ELSE (Dự phòng): Nếu không có quy tắc nào ở trên khớp, flow sẽ thực thi các hành động trong phần cuối này.
- Nếu một quy tắc được thêm vào nhưng chưa có hành động nào được gán, việc khớp điều kiện sẽ không làm gì cả.
- Một quy tắc chưa hoàn chỉnh (chưa có toán tử hoặc giá trị) sẽ chặn việc xem trước và xuất bản.
Với mỗi quy tắc, chọn một biến để đánh giá và một hành động để thực thi. Bạn có thể đặt nhiều hơn một hành động cho mỗi quy tắc.
Flow chỉ thực thi một quy tắc duy nhất — quy tắc đầu tiên khớp với điều kiện. Nếu bạn cần thực thi cả IF và ELSE IF cùng lúc, hãy thêm cả hai hành động vào IF.
Để tìm hiểu cách làm cho các phần tử có thể chọn được và tổ chức chúng thành các nhóm để sử dụng trong điều kiện, xem Phần tử có thể chọn và nhóm.
Khắc phục sự cố
Mọi thao tác có trường bắt buộc bị thiếu sẽ chặn việc xem trước và xuất bản. Xem Lưu & xuất bản flow để biết danh sách đầy đủ.