iOS SDKでウェブペイウォールを実装する
始める前に、ダッシュボードでウェブペイウォールを設定済みであること、および Adapty SDK バージョン 3.6.1 以降がインストールされていることを確認してください。
ウェブペイウォールを開く
自分で開発したペイウォールを利用している場合は、SDK メソッドを使ってウェブペイウォールを処理する必要があります。.openWebPaywall メソッドは次の処理を行います。
- 特定のユーザーに表示されたペイウォールとリダイレクト先のウェブページを Adapty が紐付けるための一意の URL を生成します。
- ユーザーがアプリに戻ったタイミングを検知し、短い間隔で
.getProfileを呼び出して、プロファイルのアクセス権が更新されたかどうかを確認します。
これにより、決済が成功してアクセス権が更新された場合、アプリ内でほぼ即座にサブスクリプションが有効化されます。
do {
try await Adapty.openWebPaywall(for: product)
} catch {
print("Failed to open web paywall: \(error)")
}
openWebPaywall メソッドには2つのバージョンがあります。
openWebPaywall(product)はペイウォールごとに URL を生成し、プロダクトのデータも URL に追加します。openWebPaywall(paywall)はペイウォールごとに URL を生成しますが、プロダクトのデータは URL に追加しません。Adapty のペイウォールに設定されたプロダクトとウェブペイウォールのプロダクトが異なる場合に使用してください。
エラーを処理する
| エラー | 説明 | 推奨される対処法 |
|---|---|---|
| AdaptyError.paywallWithoutPurchaseUrl | ペイウォールにウェブ購入 URL が設定されていない | Adapty ダッシュボードでペイウォールが正しく設定されているか確認してください |
| AdaptyError.productWithoutPurchaseUrl | プロダクトにウェブ購入 URL が設定されていない | Adapty ダッシュボードでプロダクトの設定を確認してください |
| AdaptyError.failedOpeningWebPaywallUrl | ブラウザで URL を開くことができなかった | デバイスの設定を確認するか、別の購入方法を提供してください |
| AdaptyError.failedDecodingWebPaywallUrl | URL 内のパラメーターを正しくエンコードできなかった | URL パラメーターが有効かつ適切にフォーマットされているか確認してください |
実装例
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) { /* ... */ }
}
ユーザーがアプリに戻った後は、プロファイルの更新を反映するために UI をリフレッシュしてください。AdaptyDelegate がプロファイル更新イベントを受信して処理します。
アプリ内ブラウザでウェブペイウォールを開く
アプリ内ブラウザでのウェブペイウォール表示は、Adapty SDK v3.15 以降でサポートされています。
デフォルトでは、ウェブペイウォールは外部ブラウザで開きます。
シームレスなユーザー体験を提供するために、アプリ内ブラウザでウェブペイウォールを開くことができます。これにより、アプリを切り替えることなく、アプリ内でウェブ購入ページを表示してトランザクションを完了できます。
この機能を有効にするには、in パラメーターを .inAppBrowser に設定します。
do {
try await Adapty.openWebPaywall(for: product, in: .inAppBrowser) // default – .externalBrowser
} catch {
print("Failed to open web paywall: \(error)")
}