ÿÿ Chấp nhận thanh toán qua web cho ứng dụng iOS tại Hoa Kỳ | Tài liệu Adapty

Triển khai web paywall trong iOS SDK

Trước khi bắt đầu, hãy đảm bảo bạn đã cấu hình web paywall trên dashboard và cài đặt Adapty SDK phiên bản 3.6.1 trở lên.

Mở web paywall

Nếu bạn đang làm việc với paywall tự phát triển, bạn cần xử lý web paywall bằng phương thức SDK. Phương thức .openWebPaywall:

  1. Tạo má»™t URL duy nhất cho phép Adapty liên kết paywall cụ thể hiển thị cho ngưá»i dùng vá»›i trang web mà hỠđược chuyển hướng đến.
  2. Theo dõi khi ngưá»i dùng quay lại ứng dụng, sau đó gá»i .getProfile theo chu kỳ ngắn để xác định xem quyá»n truy cập cá»§a hồ sÆ¡ ngưá»i dùng có được cập nhật hay không.

Nhá» vậy, nếu thanh toán thành công và quyá»n truy cập được cập nhật, gói đăng ký sẽ được kích hoạt trong ứng dụng gần như ngay lập tức.

do {
    try await Adapty.openWebPaywall(for: product)
} catch {
    print("Failed to open web paywall: \(error)")
}

Có hai phiên bản của phương thức openWebPaywall:

  1. openWebPaywall(product) tạo URL theo paywall và đồng thá»i thêm dữ liệu sản phẩm vào URL.
  2. openWebPaywall(paywall) tạo URL theo paywall mà không thêm dữ liệu sản phẩm vào URL. Dùng phiên bản này khi sản phẩm trong Adapty paywall khác với sản phẩm trong web paywall.

Xử lý lỗi

LỗiMô tảHành động khuyến nghị
AdaptyError.paywallWithoutPurchaseUrlPaywall chưa được cấu hình URL mua hàng qua webKiểm tra xem paywall đã được cấu hình đúng trong Adapty Dashboard chưa
AdaptyError.productWithoutPurchaseUrlSản phẩm chưa có URL mua hàng qua webXác minh cấu hình sản phẩm trong Adapty Dashboard
AdaptyError.failedOpeningWebPaywallUrlKhông thể mở URL trong trình duyệtKiểm tra cài đặt thiết bị hoặc cung cấp phương thức thanh toán thay thế
AdaptyError.failedDecodingWebPaywallUrlKhông thể mã hóa đúng các tham số trong URLXác minh rằng các tham số URL hợp lệ và được định dạng đúng

Ví dụ triển khai

class SubscriptionViewController: UIViewController {
    var paywall: AdaptyPaywall?
    
    @IBAction func purchaseButtonTapped(_ sender: UIButton) {
        guard let paywall = paywall, let product = paywall.products.first else { return }
         Task {
            await offerWebPurchase(for: product)
         }
    }
    
    func offerWebPurchase(for paywallProduct: AdaptyPaywallProduct) async {
        do {
            // Attempt to open web paywall
            try await Adapty.openWebPaywall(for: paywallProduct)
        } catch let error as AdaptyError {
            
            switch error {
            case .paywallWithoutPurchaseUrl, .productWithoutPurchaseUrl:
                showAlert(message: "Web purchase is not available for this product.")
            case .failedOpeningWebPaywallUrl:
                showAlert(message: "Could not open web browser. Please try again.")
            default:
                showAlert(message: "An error occurred: \(error.localizedDescription)")
            }
        } catch {
            showAlert(message: "An unexpected error occurred.")
        }
    }
    
    // Helper methods
    private func showAlert(message: String) { /* ... */ }
}

Sau khi ngưá»i dùng quay lại ứng dụng, hãy làm má»›i giao diện để phản ánh các cập nhật hồ sÆ¡ ngưá»i dùng. AdaptyDelegate sẽ nhận và xá»­ lý các sá»± kiện cập nhật hồ sÆ¡ ngưá»i dùng.

Mở web paywall trong trình duyệt trong ứng dụng

Mở web paywall trong trình duyệt trong ứng dụng được hỗ trợ từ Adapty SDK v3.15 trở lên.

Mặc định, web paywall sẽ mở trong trình duyệt bên ngoài.

Äể mang lại trải nghiệm liá»n mạch cho ngưá»i dùng, bạn có thể mở web paywall trong trình duyệt tích hợp sẵn trong ứng dụng. Äiá»u này hiển thị trang thanh toán web ngay bên trong ứng dụng cá»§a bạn, cho phép ngưá»i dùng hoàn tất giao dịch mà không cần chuyển sang ứng dụng khác.

Äể bật tính năng này, đặt tham số in thành .inAppBrowser:

do {
    try await Adapty.openWebPaywall(for: product, in: .inAppBrowser) // default – .externalBrowser
} catch {
    print("Failed to open web paywall: \(error)")
}
ÿÿÿÿ