Các vấn đề thường gặp
Bài viết này tổng hợp các vấn đề phổ biến nhất khi xây dựng flow trong Flow & Paywall Builder, kèm theo nguyên nhân và cách khắc phục.
Flow không xem trước hoặc xuất bản được
Bạn có thể gặp các lỗi sau khi cố gắng xem trước hoặc xuất bản flow:
| Thông báo | Nguyên nhân và cách khắc phục |
|---|---|
| No product selected | Một thẻ sản phẩm chưa được gán sản phẩm. Chọn một sản phẩm hoặc xóa thẻ đó đi. |
| This product no longer exists, This offer no longer exists | Sản phẩm hoặc ưu đãi đã bị xóa khỏi Dashboard của bạn. Chọn một sản phẩm/ưu đãi khác, hoặc dùng Replace in N places trên mục Missing trong bảng Products để sửa tất cả các chỗ dùng trên màn hình cùng một lúc. |
| This product is off this screen, This offer is off this screen | Một biến văn bản, điều kiện hoặc hành động đang tham chiếu đến một sản phẩm không có trong danh sách của màn hình, ví dụ sau khi bạn đã xóa nó trong bảng Products. Thêm lại sản phẩm trong bảng, hoặc chỉnh sửa tham chiếu đó. |
| Offer required | offer_price, offer_billing_period, hoặc offer_full_duration đang được dùng với một sản phẩm không có ưu đãi. Chọn một ưu đãi cho sản phẩm, hoặc dùng biến prod_* thay thế. |
| Product reference is invalid | Tham chiếu sản phẩm bị lỗi định dạng. Chọn lại sản phẩm. |
| Purchase action has no product to buy | Hành động Purchase chưa có sản phẩm — có thể để trống hoặc đang trỏ đến một thẻ đã bị xóa. Trong tab Interactions của phần tử, đặt Product thành một sản phẩm hoặc products.selectedProduct. |
| Select product action has no product to select | Thẻ mà hành động Select product trỏ đến không còn tồn tại: đã bị xóa, chuyển ra khỏi nhóm sản phẩm, hoặc nằm ở màn hình khác. Trong tab Interactions của phần tử, trỏ hành động đến một thẻ trên màn hình hiện tại. |
| Flow has no screens, Screen ”…” has no elements | Thêm nội dung vào màn hình trống, hoặc xóa nó đi. Flow chỉ chứa nội dung Remote Config thì được miễn trừ. |
| Invalid interaction action | Một hành động chưa hoàn chỉnh: Open URL thiếu URL, Navigate to screen chưa chọn đích đến, Set variable chưa có giá trị gán, Custom thiếu Action ID, Show alert không có cả tiêu đề lẫn nội dung, Show hoặc Hide chưa chọn phần tử, hoặc Purchase thanh toán qua web thiếu Web Paywall URL. Mở phần tương tác của phần tử và hoàn thiện hoặc xóa hành động đó. |
| Missing navigation target | Hành động Navigate to screen đang trỏ đến một màn hình đã bị xóa. Chọn một màn hình khác còn tồn tại hoặc xóa hành động này. |
| Missing product target, Invalid product target, Product target on another screen, Ambiguous product target, Select Product inside a component | Hành động Select product đang trỏ đến một thẻ đã bị xóa, không thuộc nhóm sản phẩm, nằm ở màn hình khác, có ID phần tử trùng với phần tử ở màn hình khác, hoặc nằm trong footer/header dùng chung giữa các màn hình. Trỏ hành động đến một thẻ trong nhóm sản phẩm trên cùng màn hình, với ID duy nhất. |
| Missing selectable group | Một phần tử đang trỏ đến một nhóm có thể chọn không còn tồn tại. Kết nối lại hoặc tạo lại nhóm đó. |
| Invalid visibility condition | Một quy tắc hiển thị có điều kiện chưa hoàn chỉnh. Hoàn thiện nó trong condition builder. |
| Localized conditional text mismatch | Một văn bản có điều kiện có số nhánh khác nhau giữa các ngôn ngữ. Đảm bảo mọi ngôn ngữ đều có cùng điều kiện. |
| Missing product reference | Một flow cũ hơn đang dùng một sản phẩm chưa được đăng ký trên màn hình. Mở màn hình và thêm sản phẩm trong bảng Products. |
Xem trước flow trong ứng dụng Adapty thường xuyên trong quá trình xây dựng. Một flow không thể xuất bản cũng sẽ không tải được ở đó, và thông báo lỗi sẽ cho biết vấn đề là gì.
Để kiểm tra xem flow của bạn đã sẵn sàng cho môi trường production chưa, hãy chạy flow-audit skill. Công cụ này kiểm tra những gì lỗi xuất bản không bắt được: các nút không hoạt động, tuân thủ chính sách cửa hàng, nội dung chưa hoàn chỉnh và độ phủ bản dịch. Với mỗi vấn đề, báo cáo sẽ nêu tên phần tử và màn hình chứa nó.
Xuất bản thất bại với thông báo “Something went wrong” và không có chi tiết

Yêu cầu xuất bản thất bại ở phía Adapty, không phải do flow của bạn. Phiên bản đang hoạt động của bạn không thay đổi. Hãy đợi vài phút rồi xuất bản lại. Nếu vẫn thất bại, hãy sao chép Request ID từ thông báo và gửi đến support@adapty.io để đội ngũ hỗ trợ có thể tìm ra yêu cầu bị lỗi.
Ưu đãi không được áp dụng khi mua hàng
Builder chỉ kiểm tra xem ưu đãi có còn tồn tại trong Adapty hay không. Việc chiết khấu có được áp dụng hay không là do cửa hàng quyết định tại thời điểm mua hàng: ưu đãi giới thiệu phụ thuộc vào điều kiện đủ điều kiện của khách hàng, còn ưu đãi của App Store cần có In-App Purchase Key hợp lệ. Cả hai trường hợp đều được đề cập trong Sự khác biệt về sản phẩm và giá.
Giá ưu đãi trống trong phần xem trước
Phần xem trước trong builder không thể kết nối đến các cửa hàng, vì vậy offer_price, offer_billing_period và offer_full_duration sẽ hiển thị tên biến trong dấu ngoặc nhọn thay vì giá trị thực. Chúng sẽ được giải quyết khi SDK render flow trong ứng dụng của bạn. Để xem trước các điều kiện phụ thuộc vào loại ưu đãi, hãy xem Xem trước sản phẩm và ưu đãi.
Xuất bản thất bại sau khi nhập màu hex viết tắt
Hãy nhập màu dưới dạng đúng sáu chữ số hex, ví dụ #FFFFFF. Trường màu chấp nhận giá trị ngắn hơn nhưng không tự mở rộng, nên các giá trị viết tắt như #FFF sẽ đến cấu hình SDK ở dạng không hợp lệ và quá trình xuất bản bị từ chối. Độ trong suốt không liên quan — cùng một giá trị đó vẫn thất bại dù opacity là 100%. Trường hợp đặc biệt tốn kém nhất là giá trị bốn chữ số: nó xuất bản được, nhưng hiển thị một màu không phải màu bạn đã chọn.
Chỉnh sửa kiểu chữ không ảnh hưởng đến trạng thái của phần tử
Khi một trạng thái, chẳng hạn như Selected, đã có cài đặt kiểu chữ riêng, các chỉnh sửa kiểu chữ ở trạng thái Default — kể cả việc áp dụng text style khác — sẽ không ảnh hưởng đến trạng thái đó. Hãy chỉnh sửa trực tiếp kiểu chữ của trạng thái đó.
Các phần tử mất định dạng sau khi xóa text style
Khi xóa một text style, các thiết lập của nó sẽ không được sao chép vào những phần tử đang dùng style đó: các phần tử đó sẽ trở về typography mặc định. Trước khi xóa một style, hãy gán lại các phần tử bị ảnh hưởng sang style khác hoặc thiết lập typography thủ công cho chúng.
Conditions và biến bị lỗi sau khi thay đổi Element ID
Các điều kiện và biến văn bản tham chiếu đến các phần tử theo Element ID, và việc thay đổi ID sẽ không cập nhật các tham chiếu đó — chúng sẽ âm thầm ngừng hoạt động. Hãy đặt Element ID trước khi tham chiếu đến nó. Nếu bạn buộc phải thay đổi, hãy cập nhật tất cả các tham chiếu trong điều kiện và biến để khớp với ID mới. Ngoại lệ là các đoạn của thanh tiến trình (progress-bar segments): khi đổi tên một đoạn, các tham chiếu đến nó sẽ được cập nhật tự động.
Điều kiện hoặc biến trả về giá trị rỗng
Bộ chọn biến liệt kê các trường từ mọi màn hình, vì vậy một điều kiện hoặc biến văn bản có thể tham chiếu đến một ô nhập mà người dùng chưa điền. Khi chạy, tham chiếu đó sẽ trả về giá trị rỗng. Hãy chỉ tham chiếu các trường đã được thu thập ở bước trước trong flow.
Thao tác Set variable không thay đổi sản phẩm đang được chọn
Sản phẩm đang được chọn không phải là biến có thể gán giá trị, nên Set variable không thể thay đổi lựa chọn đó. Hãy dùng thao tác Select product thay thế.
Hình ảnh hoặc video không tải lên được
Tệp vượt quá giới hạn media của Flow & Paywall Builder sẽ không tải lên được. Hãy kiểm tra tệp theo yêu cầu của Hình ảnh và Video:
| Thành phần | Định dạng | Kích thước tệp tối đa | Giới hạn khác |
|---|---|---|---|
| Hình ảnh | .JPG, .PNG, .WEBP | 20 MB | — |
| Video | .MP4, .WEBM | 50 MB | Tối đa 30 giây; tối thiểu 640×640 pixel |
Các định dạng sau không được hỗ trợ:
- GIF động và WEBP động: Để thêm chuyển động, hãy dùng phần tử Video thay thế.
- SVG: Xuất file dưới dạng PNG hoặc WEBP. Với icon, bạn không cần tải lên gì cả — phần tử Icon lấy từ thư viện Tabler Icons được tích hợp sẵn.
Footer không hiển thị
Footer chỉ hiển thị trên màn hình có bật Vertical scroll. Hãy bật Vertical scroll trong Screen settings > Scroll.