ÿÿ Hướng dẫn Bắt đầu Nhanh Adapty | Tài liệu Adapty

Bật tính năng mua hàng trong paywall tùy chỉnh với Flutter SDK

Hướng dẫn này mô tả cách tích hợp Adapty vào các paywall tùy chỉnh cá»§a bạn. Giữ toàn quyá»n kiểm soát việc triển khai paywall, trong khi SDK cá»§a Adapty tá»± động lấy sản phẩm, xá»­ lý các giao dịch má»›i và khôi phục các giao dịch trước đó. Hướng dẫn này sá»­ dụng API cá»§a Adapty Flutter SDK v4 — nếu bạn Ä‘ang dùng v3, hãy xem hướng dẫn migration để biết tên các phương thức tương ứng.

Hướng dẫn này dành cho các nhà phát triển đang triển khai paywall tùy chỉnh. Nếu bạn muốn cách đơn giản nhất để kích hoạt tính năng mua hàng, hãy sử dụng Adapty Paywall Builder. Với Paywall Builder, bạn tạo paywall bằng trình chỉnh sửa trực quan không cần code, Adapty xử lý toàn bộ logic mua hàng tự động, và bạn có thể thử nghiệm các thiết kế khác nhau mà không cần phát hành lại ứng dụng.

Trước khi bắt đầu

Thiết lập sản phẩm

Äể kích hoạt tính năng in-app purchase, bạn cần nắm vững ba khái niệm cốt lõi:

  • Sản phẩm – bất cứ thứ gì ngưá»i dùng có thể mua (gói đăng ký, consumable, quyá»n truy cập trá»n Ä‘á»i)
  • Paywalls – cấu hình xác định sản phẩm nào được cung cấp. Trong Adapty, paywall là cách duy nhất để lấy sản phẩm, nhưng thiết kế này cho phép bạn thay đổi sản phẩm, giá và ưu đãi mà không cần chỉnh sá»­a code. Trong SDK v4, các biến thể paywall cho má»™t placement được mang bởi đối tượng flow — bạn fetch má»™t flow và truy vấn các sản phẩm cá»§a nó.
  • Placements – nÆ¡i và thá»i Ä‘iểm bạn hiển thị paywall trong app (ví dụ: main, onboarding, settings). Bạn thiết lập paywall cho các placement trên dashboard, sau đó yêu cầu chúng bằng placement ID trong code. Cách này giúp bạn dá»… dàng chạy A/B test và hiển thị các paywall khác nhau cho từng nhóm ngưá»i dùng. Hãy đảm bảo bạn hiểu rõ những khái niệm này ngay cả khi bạn tá»± xây dá»±ng paywall theo cách riêng. Vá» cÆ¡ bản, đây chỉ là cách bạn quản lý các sản phẩm mà bạn bán trong ứng dụng.

Äể triển khai paywall tùy chỉnh, bạn cần tạo má»™t paywall và thêm nó vào má»™t placement. Thiết lập này cho phép bạn lấy danh sách sản phẩm. Äể hiểu những gì cần làm trên dashboard, hãy xem hướng dẫn quickstart tại đây.

Quản lý ngưá»i dùng

Bạn có thể làm việc với hoặc không có xác thực backend ở phía mình.

Tuy nhiên, Adapty SDK xá»­ lý ngưá»i dùng ẩn danh và ngưá»i dùng đã xác định theo những cách khác nhau. Äá»c hướng dẫn quickstart vỠđịnh danh ngưá»i dùng để hiểu rõ sá»± khác biệt và đảm bảo bạn Ä‘ang làm việc vá»›i ngưá»i dùng đúng cách.

Bước 1. Lấy danh sách sản phẩm

Äể lấy danh sách sản phẩm cho paywall tùy chỉnh, bạn cần:

  1. Lấy đối tượng flow bằng cách truyá»n ID placement vào phương thức getFlow.
  2. Lấy mảng sản phẩm của flow đó bằng phương thức getPaywallProducts.

Future<void> loadPaywall() async {
  try {
    final flow = await Adapty().getFlow(placementId: 'YOUR_PLACEMENT_ID');
    final products = await Adapty().getPaywallProducts(flow: flow);
    
    // Use products to build your custom paywall UI
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // Handle the error
  }
}

Bước 2. Xử lý thanh toán

Khi ngưá»i dùng chá»n má»™t sản phẩm trong paywall tùy chỉnh cá»§a bạn, hãy gá»i phương thức makePurchase vá»›i sản phẩm đã chá»n. Phương thức này sẽ xá»­ lý luồng thanh toán và trả vá» hồ sÆ¡ ngưá»i dùng đã được cập nhật.


Future<void> purchaseProduct(AdaptyPaywallProduct product) async {
  try {
    final purchaseResult = await Adapty().makePurchase(product: product);
    
    switch (purchaseResult) {
      case AdaptyPurchaseResultSuccess(profile: final profile):
        // Purchase successful, profile updated
        break;
      case AdaptyPurchaseResultUserCancelled():
        // User canceled the purchase
        break;
      case AdaptyPurchaseResultPending():
        // Purchase is pending (e.g., user will pay offline with cash)
        break;
    }
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // Handle the error
  }
}

Bước 3. Khôi phục giao dịch mua

Các cá»­a hàng ứng dụng yêu cầu tất cả ứng dụng có gói đăng ký phải cung cấp cách để ngưá»i dùng khôi phục giao dịch mua cá»§a há».

Gá»i phương thức restorePurchases khi ngưá»i dùng nhấn nút khôi phục. Thao tác này sẽ đồng bá»™ lịch sá»­ giao dịch mua cá»§a há» vá»›i Adapty và trả vá» hồ sÆ¡ ngưá»i dùng đã được cập nhật.


Future<void> restorePurchases() async {
  try {
    final profile = await Adapty().restorePurchases();
    // Restore successful, profile updated
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // Handle the error
  }
}

Bước 4. Kiểm tra trạng thái gói đăng ký

Sau khi mua hàng hoặc khôi phục, hãy kiểm tra mức độ truy cập cá»§a ngưá»i dùng để quyết định có hiển thị paywall hay mở khóa tính năng trả phí. Các phương thức makePurchase và restorePurchases đã trả vá» hồ sÆ¡ ngưá»i dùng được cập nhật; bất cứ khi nào bạn cần trạng thái hiện tại ở nÆ¡i khác trong ứng dụng, hãy dùng phương thức getProfile:


Future<bool> hasPremiumAccess() async {
  try {
    final profile = await Adapty().getProfile();
    return profile.accessLevels['premium']?.isActive ?? false;
  } on AdaptyError catch (adaptyError) {
    // Handle the error
  } catch (e) {
    // ÿÿHandle the error
  }
  return false;
}

Äể biết thêm các cách kiểm tra và theo dõi trạng thái gói đăng ký, bao gồm lắng nghe các cập nhật theo thá»i gian thá»±c, xem Kiểm tra trạng thái gói đăng ký.

Các bước tiếp theo

Bạn có câu há»i hoặc gặp sá»± cố? Hãy xem diá»…n đàn há»— trợ cá»§a chúng tôi — nÆ¡i bạn có thể tìm câu trả lá»i cho các câu há»i thưá»ng gặp hoặc đặt câu há»i cá»§a riêng mình. Äá»™i ngÅ© và cá»™ng đồng cá»§a chúng tôi luôn sẵn sàng giúp đỡ!

Paywall cá»§a bạn đã sẵn sàng để hiển thị trong ứng dụng. Hãy kiểm tra các giao dịch mua hàng trong sandbox App Store hoặc Google Play Store để đảm bảo bạn có thể hoàn tất má»™t giao dịch mua thá»­ từ paywall. Äể xem cách hoạt động này trong má»™t triển khai thá»±c tế, hãy xem PurchasesObserver trong ứng dụng mẫu cá»§a chúng tôi — nÆ¡i minh há»a việc xá»­ lý giao dịch mua hàng vá»›i cách xá»­ lý lá»—i phù hợp, các UI observer, và tích hợp SDK toàn diện.

ÿÿÿÿ