iOS SDKのオブザーバーモードでフローを表示する
エージェントツールをインストール
AI コーディングツールから Adapty SDK の連携をまるごと実行できます。 詳細
スキルは SDK 連携、フローとペイウォールの作成、公開前の監査、プレースメントの移行などをカバーします。やりたいことを普通の言葉で伝えれば、エージェントが適切なスキルを選びます。
オブザーバーモードを使用する場合、購入ロジックはご自身で実装する必要があります。ただし、ペイウォールのUIはフロー&ペイウォールビルダーに委任できます。
ビルダーで画面をデザインすれば、Adapty SDK がそれをネイティブにレンダリングします。コピー、レイアウト、価格はアプリをリリースせずにいつでも更新できます。ユーザーが購入ボタンをタップすると、SDK があなたのコードを呼び出して購入を完了します。
このガイドでは、その画面を表示して購入コールを処理する方法を説明します。Adapty が購入を代わりに完了する場合は、フローとペイウォールの表示を参照してください。
始める前に
以下が必要です:
- Adapty iOS SDK v4以降: 旧バージョンではフローをレンダリングできません。既存アプリをv3から移行する場合は、移行ガイドを参照してください。
observerModeをtrueに設定: iOS SDKインストールガイドを参照してください。- ストアの初期設定: App Storeとの連携でAdaptyをセットアップしてください。
- プロダクトが設定された公開済みフロー: フロー&ペイウォールビルダーで作成し、プロダクトを割り当ててください。
- フローのプレースメント: プレースメントを作成し、フローを割り当ててください。
- アプリ内でフローを取得済み: 表示する前にフローとその設定を取得してください。
実装
-
AdaptyObserverModeResolverオブジェクトを実装します。func observerMode(didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @MainActor @Sendable @escaping () -> Void, onFinishPurchase: @MainActor @Sendable @escaping () -> Void) { // use the product object to handle the purchase // call onStartPurchase / onFinishPurchase to notify AdaptyUI about the purchase progress } func observerModeDidInitiateRestorePurchases(onStartRestore: @MainActor @Sendable @escaping () -> Void, onFinishRestore: @MainActor @Sendable @escaping () -> Void) { // call onStartRestore / onFinishRestore to notify AdaptyUI about the restore progress } -
リゾルバーを
observerModeResolver:パラメーターとして渡し、フロー設定オブジェクトを作成します:do { let flowConfiguration = try await AdaptyUI.getFlowConfiguration( forFlow: flow, observerModeResolver: <AdaptyObserverModeResolver> ) } catch { // handle the error }リクエストパラメーター:
| パラメータ | 必須 | 説明 |
|---|---|---|
| forFlow | 必須 | Adapty.getFlow(placementId:) で取得した AdaptyFlow オブジェクト。フローとペイウォールの取得を参照。 |
| observerModeResolver | 必須 | 上記で実装した AdaptyObserverModeResolver。 |
-
AdaptyUI.flowController(with:delegate:)を使用してフローコントローラーを初期化します:import AdaptyUI let visualFlow = try AdaptyUI.flowController( with: flowConfiguration, delegate: <AdaptyFlowControllerDelegate> )リクエストパラメーター:
| パラメーター | 必須/任意 | 説明 |
|---|---|---|
| flowConfiguration | 必須 | フローの視覚的な詳細を含む AdaptyUI.FlowConfiguration オブジェクト。フローとペイウォールの取得を参照してください。 |
| delegate | 必須 | フローイベントを受け取るための AdaptyFlowControllerDelegate。フロー & ペイウォールイベントの処理を参照してください。 |
Returns:
| Object | Description |
|---|---|
| AdaptyFlowController | リクエストされたフローの画面を表すオブジェクト。 |
-
コントローラーを表示する:
present(visualFlow, animated: true)
購入トランザクションへのペイウォールの関連付けを忘れずに行ってください。これを行わないと、Adapty は購入元のペイウォールを特定できません。
SwiftUI では、リゾルバーを使ってフロー設定を取得し、.flow モディファイアに渡します:
@State var flowPresented = false
@State var flowConfiguration: AdaptyUI.FlowConfiguration?
var body: some View {
Text("Hello, AdaptyUI!")
.flow(
isPresented: $flowPresented,
flowConfiguration: flowConfiguration,
didPerformAction: { action in
switch action {
case .close:
flowPresented = false
default:
break
}
},
didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didReceiveError: { error in flowPresented = false }
)
.task {
flowConfiguration = try? await AdaptyUI.getFlowConfiguration(
forFlow: flow,
observerModeResolver: <AdaptyObserverModeResolver>
)
}
}getFlowConfiguration の observerModeResolver: パラメーターは、レンダリングされたフローにカスタム購入ロジックを適用するためのものです。このモディファイアは、フルモードと同じコールバックを使用します。
購入トランザクションとペイウォールを紐付けることを忘れないでください。紐付けを行わないと、Adapty は購入元のペイウォールを特定できません。
ペイウォールを表示する前に(クリックして展開)
- Adapty を Google Play および App Store と初期統合します。
2. Adapty SDK をインストールして設定します。
observerModeパラメータをtrueに設定してください。フレームワーク別の手順は iOS を参照してください。 3. Adapty ダッシュボードでプロダクトを作成します。 4. Adapty ダッシュボードでペイウォールを設定してプロダクトを割り当て、ペイウォールビルダーを使ってカスタマイズします。 5. Adapty ダッシュボードでプレースメントを作成してペイウォールを割り当てます。 6. モバイルアプリのコードで Paywall Builder のペイウォールとその設定を取得します。
-
AdaptyObserverModeResolverオブジェクトを実装します:func observerMode(didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @MainActor @Sendable @escaping () -> Void, onFinishPurchase: @MainActor @Sendable @escaping () -> Void) { // use the product object to handle the purchase // use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase } func observerModeDidInitiateRestorePurchases(onStartRestore: @MainActor @Sendable @escaping () -> Void, onFinishRestore: @MainActor @Sendable @escaping () -> Void) { // use the onStartRestore and onFinishRestore callbacks to notify AdaptyUI about the process of the restore }
observerMode(didInitiatePurchase:onStartPurchase:onFinishPurchase:) イベントは、ユーザーが購入を開始したことを通知します。このコールバックに応答して、カスタム購入フローをトリガーできます。
observerModeDidInitiateRestorePurchases(onStartRestore:onFinishRestore:) イベントは、ユーザーが復元を開始したことを通知します。このコールバックに応答して、カスタム復元フローをトリガーできます。
また、購入またはリストアのプロセスについて AdaptyUI に通知するために、以下のコールバックを呼び出すことを忘れないでください。これは、ローダーの表示など、ペイウォールの適切な動作に必要です。
| コールバック | 説明 |
|---|---|
| onStartPurchase() | 購入が開始されたことを AdaptyUI に通知するために呼び出すコールバックです。 |
| onFinishPurchase() | 購入が完了したことを AdaptyUI に通知するために呼び出すコールバックです。 |
| onStartRestore() | リストアが開始されたことを AdaptyUI に通知するために呼び出すコールバックです。 |
| onFinishRestore() | リストアが完了したことを AdaptyUI に通知するために呼び出すコールバックです。 |
-
ペイウォール設定オブジェクトを作成します:
do { let paywallConfiguration = try AdaptyUI.getPaywallConfiguration( forPaywall: <paywall object>, observerModeResolver: <AdaptyObserverModeResolver> ) } catch { // handle the error }リクエストパラメータ:
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| Paywall | 必須 | 目的のペイウォールのコントローラーを取得するための AdaptyPaywall オブジェクト。 |
| ObserverModeResolver | 必須 | 前のステップで実装した AdaptyObserverModeResolver オブジェクト。 |
-
.paywallController(for:products:viewConfiguration:delegate:)メソッドを使用して、表示したいビジュアルペイウォールを初期化します:import AdaptyUI let visualPaywall = AdaptyUI.paywallController( with: <paywall configuration object>, delegate: <AdaptyPaywallControllerDelegate> )
リクエストパラメーター:
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| Paywall Configuration | 必須 | ペイウォールの視覚的な詳細を含む AdaptyUI.PaywallConfiguration オブジェクト。AdaptyUI.getPaywallConfiguration(forPaywall:locale:) メソッドを使用してください。詳細は ペイウォールビルダーのペイウォールとその設定を取得する をご参照ください。 |
| Delegate | 必須 | ペイウォールイベントを受け取るための AdaptyPaywallControllerDelegate。詳細は ペイウォールイベントの処理 をご参照ください。 |
戻り値:
| オブジェクト | 説明 |
|---|---|
| AdaptyPaywallController | リクエストされたペイウォール画面を表すオブジェクト |
オブジェクトが正常に作成されたら、次のように表示できます:
present(visualPaywall, animated: true)ペイウォールを購入トランザクションに関連付けることを忘れないでください。関連付けを行わないと、Adaptyは購入元のペイウォールを特定できません。
デバイス画面にビジュアルペイウォールを表示するには、SwiftUIの.paywallモディファイアを使用します:
@State var paywallPresented = false
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywallConfiguration: <paywall configuration object>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false }
)
}(empty input — nothing to translate)
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| Paywall Configuration | 必須 | ペイウォールの視覚的な詳細を含む AdaptyUI.PaywallConfiguration オブジェクト。AdaptyUI.getPaywallConfiguration(forPaywall:locale:) メソッドを使用してください。詳しくは Fetch Paywall Builder paywalls and their configuration をご参照ください。 |
| Products | 任意 | AdaptyPaywallProduct オブジェクトの配列を指定すると、画面上のプロダクトの表示タイミングを最適化できます。nil を渡した場合、AdaptyUI が必要なプロダクトを自動的に取得します。 |
| TagResolver | 任意 | カスタムタグとその解決済みの値の辞書を定義します。カスタムタグはペイウォールコンテンツ内のプレースホルダーとして機能し、ペイウォール内のパーソナライズされたコンテンツのために特定の文字列に動的に置き換えられます。詳しくは「ペイウォールビルダーのカスタムタグ」トピックをご参照ください。 |
| ObserverModeResolver | 任意 | 前のステップで実装した AdaptyObserverModeResolver オブジェクト |
クロージャーのパラメーター:
| クロージャーのパラメーター | 説明 |
|---|---|
| didFinishRestore | Adapty.restorePurchases() が成功した場合、このコールバックが呼び出されます。 |
| didFailRestore | Adapty.restorePurchases() が失敗した場合、このコールバックが呼び出されます。 |
| didFailRendering | インターフェースのレンダリング中にエラーが発生した場合、このコールバックが呼び出されます。 |
他のクロージャパラメーターについては、iOS - イベントの処理 のトピックを参照してください。
購入トランザクションへのペイウォールの関連付けを忘れないでください。これを行わないと、Adapty は購入元のペイウォールを特定できません。
ペイウォールの表示を始める前に(クリックして展開)
- Adapty を Google Play および App Store と初期統合します。
- Adapty SDK をインストールして設定します。
observerModeパラメータをtrueに設定してください。フレームワーク別の手順は iOS、React Native、Flutter、Unity を参照してください。 - Adapty ダッシュボードで プロダクトを作成 します。
- Adapty ダッシュボードで ペイウォールを設定してプロダクトを割り当て、ペイウォールビルダーを使ってカスタマイズします。
- Adapty ダッシュボードで プレースメントを作成してペイウォールを割り当て ます。
- モバイルアプリのコードで ペイウォールビルダーのペイウォールとその設定を取得 します。
-
AdaptyObserverModeDelegateオブジェクトを実装します:func paywallController(_ controller: AdaptyPaywallController, didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @escaping () -> Void, onFinishPurchase: @escaping () -> Void) { // use the product object to handle the purchase // use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase }
paywallController(_:didInitiatePurchase:onStartPurchase:onFinishPurchase:) イベントは、ユーザーが購入を開始したことを通知します。このイベントに応じて、カスタム購入フローをトリガーできます。
また、購入プロセスを AdaptyUI に通知するために、以下のコールバックを必ず呼び出してください。これは、ローダーの表示など、ペイウォールの適切な動作に必要です:
| コールバック | 説明 |
|---|---|
| onStartPurchase | 購入が開始されたことを AdaptyUI に通知するために呼び出すコールバックです。 |
| onFinishPurchase | 購入が完了したことを AdaptyUI に通知するために呼び出すコールバックです。 |
.paywallController(for:products:viewConfiguration:delegate:observerModeDelegate:)メソッドを使用して、表示したいビジュアルペイウォールを初期化します:
import AdaptyUI
let visualPaywall = AdaptyUI.paywallController(
for: <paywall object>,
products: <paywall products array>,
viewConfiguration: <LocalizedViewConfiguration>,
delegate: <AdaptyPaywallControllerDelegate>
observerModeDelegate: <AdaptyObserverModeDelegate>
)リクエストパラメーター:
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| Paywall | 必須 | 目的のペイウォールのコントローラーを取得するための AdaptyPaywall オブジェクト。 |
| Products | 任意 | 画面上のプロダクト表示タイミングを最適化するために AdaptyPaywallProduct オブジェクトの配列を指定します。nil を渡した場合、AdaptyUI が必要なプロダクトを自動的に取得します。 |
| ViewConfiguration | 必須 | ペイウォールのビジュアル詳細を含む AdaptyUI.LocalizedViewConfiguration オブジェクト。AdaptyUI.getViewConfiguration(paywall:locale:) メソッドを使用してください。詳細は ペイウォールビルダーのペイウォールとその設定を取得する を参照してください。 |
| Delegate | 必須 | ペイウォールイベントを受け取るための AdaptyPaywallControllerDelegate。詳細は ペイウォールイベントの処理 を参照してください。 |
| ObserverModeDelegate | 必須 | 前のステップで実装した AdaptyObserverModeDelegate オブジェクト。 |
| TagResolver | 任意 | カスタムタグとその解決済みの値のディクショナリを定義します。カスタムタグはペイウォールコンテンツ内のプレースホルダーとして機能し、ペイウォール内のパーソナライズされたコンテンツのために特定の文字列に動的に置き換えられます。詳細はペイウォールビルダーのカスタムタグのトピックを参照してください。 |
戻り値:
| オブジェクト | 説明 |
|---|---|
| AdaptyPaywallController | リクエストされたペイウォール画面を表すオブジェクト |
オブジェクトが正常に作成されたら、次のように表示できます:
present(visualPaywall, animated: true)購入トランザクションにペイウォールを関連付けることを忘れずに。そうしないと、Adapty は購入元のペイウォールを特定できません。
デバイス画面にビジュアルペイウォールを表示するには、SwiftUI の .paywall モディファイアを使用します。
@State var paywallPresented = false
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywall: <paywall object>,
configuration: <LocalizedViewConfiguration>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false },
observerModeDidInitiatePurchase: { product, onStartPurchase, onFinishPurchase in
// use the product object to handle the purchase
// use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase
},
)
}(empty input — nothing to translate)
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| Paywall | 必須 | 目的のペイウォールのコントローラーを取得するための AdaptyPaywall オブジェクト。 |
| Product | 任意 | 画面上のプロダクトの表示タイミングを最適化するために AdaptyPaywallProduct オブジェクトの配列を指定します。nil を渡した場合、AdaptyUI が自動的に必要なプロダクトを取得します。 |
| Configuration | 必須 | ペイウォールの視覚的な詳細を含む AdaptyUI.LocalizedViewConfiguration オブジェクト。AdaptyUI.getViewConfiguration(paywall:locale:) メソッドを使用してください。詳細は ペイウォールビルダーのペイウォールとその設定の取得 を参照してください。 |
| TagResolver | 任意 | カスタムタグとその解決済みの値の辞書を定義します。カスタムタグはペイウォールコンテンツのプレースホルダーとして機能し、ペイウォール内のパーソナライズされたコンテンツとして特定の文字列に動的に置き換えられます。詳細はペイウォールビルダーのカスタムタグのトピックを参照してください。 |
Closure parameters:
| クロージャパラメータ | 説明 |
|---|---|
| didFinishRestore | Adapty.restorePurchases() が成功した場合、このコールバックが呼び出されます。 |
| didFailRestore | Adapty.restorePurchases() が失敗した場合、このコールバックが呼び出されます。 |
| didFailRendering | インターフェースのレンダリング中にエラーが発生した場合、このコールバックが呼び出されます。 |
| observerModeDidInitiatePurchase | ユーザーが購入を開始したときにこのコールバックが呼び出されます。 |
その他のクロージャパラメータについては、iOS - イベントのハンドリング のトピックを参照してください。
購入トランザクションにペイウォールを関連付ける ことを忘れずに行ってください。これを行わないと、Adapty は購入元のペイウォールを特定できません。