Flow dự phòng

Để duy trì trải nghiệm người dùng mượt mà, bạn cần thiết lập phiên bản dự phòng cho các flow của mình. Khi ứng dụng của bạn yêu cầu một flow, Adapty SDK liên hệ với máy chủ của chúng tôi để tải cấu hình. Nếu thiết bị không thể kết nối với Adapty (sự cố mạng, máy chủ gián đoạn), SDK sẽ chuyển sang dùng dữ liệu cục bộ:

  • Nếu người dùng đã xem flow đó một lần, SDK sẽ phục vụ bản đã lưu trong cache.
  • Nếu chưa có cache, SDK sẽ tải file cấu hình dự phòng được đóng gói sẵn trong ứng dụng.

Adapty tự động tạo các file dự phòng này. Gói dự phòng của flow được dùng chung với paywall — một file JSON duy nhất cho mỗi nền tảng chứa các biến thể dự phòng cho cả hai. SDK đọc phần nào cần thiết tùy theo ngữ cảnh.

Flow fallback được tích hợp trong gói Adapty SDK 4.0+. Nếu bạn chọn phiên bản SDK cũ hơn trong hộp thoại tải xuống, file sẽ chỉ chứa các biến thể paywall và onboarding — không có flow. Hãy đảm bảo ứng dụng của bạn đang dùng phiên bản SDK hỗ trợ flow trước khi sử dụng flow fallback.

Trước khi bắt đầu

  1. Tạo một flow trong Flow Builder.
  2. Tạo một placement cho flow đó.

Tải file dự phòng

  1. Mở trang Placements.
  2. Nhấn nút Fallbacks ở góc trên bên phải.
  3. Chọn nền tảng mục tiêu từ dropdown.
  4. Chọn phiên bản SDK khớp với phiên bản bạn đã tích hợp trong app. Chọn Adapty SDK v4.0.0 and higher (hoặc tùy chọn mới hơn) để nhận bundle bao gồm cả flow.

Trình duyệt sẽ tải xuống một file JSON cho mỗi nền tảng — ví dụ: ios_4_0_0_fallback.json.

Ví dụ về mục fallback flow (nhấn để mở rộng)
"PLACEMENT_ID": {
  "data": [
    {
      "developer_id": "PLACEMENT_ID",
      "variation_id": "cb1c0ef8-aecd-4a53-a6f3-b98266e66884",
      "flow_id": "daf25858-3fa2-4981-8500-9c8a30e5b7e6",
      "flow_name": "FLOW_NAME",
      "flow_version_id": "FLOW_VERSION_ID",
      "placement_audience_version_id": "a9eb3ab8-3178-477d-84d4-ef9d3978e48b",
      "audience_name": "All Users",
      "ab_test_name": "",
      "cross_placement_info": null,
      "weight": 100,
      "variations": [
        {
          "variation_id": "cb1c0ef8-aecd-4a53-a6f3-b98266e66884",
          "paywall_id": "PAYWALL_ID",
          "paywall_name": "PAYWALL_NAME",
          "ab_test_name": "",
          "products": [],
          "revision": 1,
          "custom_payload": null,
          "weight": 100
        }
      ],
      "remote_configs": []
    }
  ],
  "meta": {
    "placement": {
      "developer_id": "PLACEMENT_ID",
      "is_tracking_purchases": true,
      "audience_name": "All Users",
      "placement_audience_version_id": "a9eb3ab8-3178-477d-84d4-ef9d3978e48b",
      "revision": 0,
      "ab_test_name": ""
    }
  }
}

Hình dạng chính xác có thể thay đổi giữa các phiên bản SDK. Hãy luôn dùng file mà Adapty đã tạo cho phiên bản SDK của bạn thay vì tự viết thủ công.

Sau khi tải xuống

Thêm file vào code ứng dụng của bạn, sau đó làm theo hướng dẫn cài đặt theo từng nền tảng. Các API dùng để tải paywall dự phòng cũng sẽ tải flow dự phòng khi ứng dụng của bạn sử dụng phiên bản SDK hỗ trợ flow:

Hạn chế

Các flow dự phòng được mã hóa cứng và lưu trữ cục bộ, do đó chúng không mang đầy đủ khả năng động của các flow trực tiếp:

  • Một biến thể cho mỗi placement. Nếu một placement có nhiều hơn một flow (các đối tượng khác nhau, các biến thể A/B test), file dự phòng sẽ sử dụng biến thể có trọng số cao nhất, hoặc đối tượng rộng nhất.
  • Không có A/B testing. Một A/B test flow đang chạy sẽ được xử lý trên server; fallback luôn phục vụ một biến thể duy nhất đã được chọn.
  • Không có cập nhật từ xa. Việc cập nhật fallback yêu cầu phải phát hành ứng dụng mới. Đối với các cập nhật runtime mà bạn thường thực hiện qua remote config, hãy đẩy chúng qua flow trực tiếp thay thế.
  • Chỉ có locale mặc định. Fallback sử dụng locale en; các biến thể đã được bản địa hóa không được đóng gói kèm theo.