iOS SDKのインストールと設定

Adapty SDK には、モバイルアプリにシームレスに統合するための 2 つの主要モジュールが含まれています。

  • Core Adapty: アプリで Adapty を正しく動作させるために必要な必須 SDK です。
  • AdaptyUI: ノーコードでクロスプラットフォームのペイウォールを簡単に作成できるツール Adapty ペイウォールビルダー を使用する場合に必要なオプションモジュールです。

実際のモバイルアプリへの Adapty SDK 統合例を見たい方は、サンプルアプリをご覧ください。ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップが確認できます。

実装の詳細なウォークスルーは、以下の動画でも確認できます。

必要要件

Adapty iOS SDK は iOS 15.0 以降が必要です。

Xcode 26.4 以降でビルドする場合は、Adapty SDK 3.15.7 以上が必要です。

SDKのインストールは、Adaptyセットアップのステップ5です。アプリ内で課金が機能するようにするには、アプリをストアに接続し、Adapty ダッシュボードでプロダクト、ペイウォール、プレースメントを作成する必要があります。クイックスタートガイドでは、必要なすべての手順を説明しています。

Adapty SDK のインストール

Release

Adapty SDK は Swift Package Manager でインストールします。Xcode で File -> Add Package Dependency… を選択してください。パッケージ依存関係の追加手順は Xcode のバージョンによって異なる場合があるため、必要に応じて Xcode のドキュメントを参照してください。

  1. リポジトリ URL を入力します。
    https://github.com/adaptyteam/AdaptySDK-iOS.git
  2. バージョンを選択し(最新の安定版を推奨)、Add Package をクリックします。
  3. Choose Package Products ウィンドウで、必要なモジュールを選択します。
    • Adapty(コアモジュール)
    • AdaptyUI(オプション - ペイウォールビルダーを使用する場合のみ)

    注意:

    • キッズモードを有効にするには、Adapty の代わりに Adapty_KidsMode を選択してください。
    • リストに表示される他のパッケージは選択しないでください。それらは不要です。
  4. Add Package をクリックしてインストールを完了します。
  5. インストールの確認: プロジェクトナビゲーターの Package Dependencies 以下に「Adapty」(および選択した場合は「AdaptyUI」)が表示されていることを確認してください。

Adapty iOS SDK 4.0 はプレリリース版です。Swift Package Manager は Up to Next Major Versionfrom:)ルールではベータ版を解決しないため、正確なバージョンを固定する必要があります。Xcode では Dependency RuleExact Version に設定し、4.0.0-beta.1 と入力してください。Package.swift では .exact("4.0.0-beta.1") を使用します。詳しくは Adapty iOS SDK を v4 へ移行するをご覧ください。

Adapty SDK の Adapty モジュールを有効化する

アプリのコードで Adapty SDK を有効化します。

Adapty SDK の有効化はアプリ内で 1 度だけ行えば十分です。

Public SDK Key を取得するには:

  1. Adapty ダッシュボードを開き、App settings → General に移動します。
  2. Api keys セクションで、Public SDK Key(Secret Key ではない)をコピーします。
  3. コード内の "YOUR_PUBLIC_SDK_KEY" を置き換えます。

または、Adapty CLI を使ってプログラムから取得することもできます:

npm install -g adapty
adapty auth login
adapty apps list

あるいは、直接実行する場合:

npx adapty auth login
adapty apps list
  • Adapty の初期化には必ず Public SDK key を使用してください。Secret keyサーバーサイド API 専用です。
  • SDK keys はアプリごとに固有です。複数のアプリがある場合は、正しいキーを選択してください。

他の Adapty SDK メソッドを呼び出す前に、activate の完了を待ってください。完全な呼び出し順序については iOS SDK の呼び出し順序をご覧ください。

次に、アプリでペイウォールを設定します。

Adapty SDK の AdaptyUI モジュールを有効化する

ペイウォールビルダーを使用する予定があり、AdaptyUI モジュールをインストール済みの場合は、AdaptyUI も有効化する必要があります。

コード内では、AdaptyUI を有効化する前に必ずコアの Adapty モジュールを有効化してください。

AdaptyUI を有効化する際に、オプションとしてペイウォールのデフォルトキャッシュ設定を上書きすることができます。

オプション設定

ログ

ログシステムの設定

Adapty は、何が起きているかを把握できるように、エラーや重要な情報をログに記録します。利用可能なレベルは以下のとおりです。

レベル説明
errorエラーのみをログに記録します
warnエラーと、重大なエラーではないが注意が必要な SDK からのメッセージをログに記録します
infoエラー、警告、および各種情報メッセージをログに記録します
verbose関数呼び出し、API クエリなど、デバッグ時に役立つ追加情報をすべてログに記録します
 let configurationBuilder = AdaptyConfiguration
         .builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
         .with(logLevel: .verbose) // recommended for development

ログシステムのメッセージをリダイレクトする

Adapty のログメッセージを独自のシステムに送信したり、ファイルに保存したりする必要がある場合は、setLogHandler メソッドを使用して、その中にカスタムのログロジックを実装してください。このハンドラーは、メッセージ内容と重大度レベルを含むログレコードを受け取ります。

Adapty.setLogHandler { record in
    writeToLocalFile("Adapty \(record.level): \(record.message)")
}

データポリシー

Adapty は、明示的に送信しない限りユーザーの個人データを保存しませんが、ストアや各国のガイドラインに準拠するために、追加のデータセキュリティポリシーを実装することができます。

IDFA の収集と共有を無効にする

Adapty モジュールを有効化する際に、idfaCollectionDisabledtrue に設定すると、IDFA の収集と共有を無効にできます。

このパラメーターは、App Store レビューガイドラインに準拠する場合や、アプリで IDFA が不要なときに App Tracking Transparency のプロンプトが表示されるのを避けるために使用してください。デフォルト値は false です。IDFA 収集の詳細については、アナリティクス連携セクションを参照してください。

let configurationBuilder =
    AdaptyConfiguration
        .builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
        .with(idfaCollectionDisabled: true)

IP の収集と共有を無効にする

Adapty モジュールを有効化する際に、ipAddressCollectionDisabledtrue に設定すると、ユーザーの IP アドレスの収集と共有を無効にできます。デフォルト値は false です。

このパラメーターは、ユーザーのプライバシーを強化する場合、GDPR や CCPA などの地域データ保護規制に準拠する場合、またはアプリで IP ベースの機能が不要なときに不要なデータ収集を減らす場合に使用してください。

let configurationBuilder =
    AdaptyConfiguration
        .builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
        .with(ipAddressCollectionDisabled: true)

AdaptyUI のペイウォール向けメディアキャッシュ設定

AdaptyUI の設定はオプションです。設定なしで AdaptyUI モジュールを有効化することもできます。ただし、設定を使用する場合はすべてのパラメーターが必須です。


// Configure AdaptyUI
        let adaptyUIConfiguration = AdaptyUI.Configuration(
            mediaCacheConfiguration: .init(
                memoryStorageTotalCostLimit: 100 * 1024 * 1024,
                memoryStorageCountLimit: .max,
                diskStorageSizeLimit: 100 * 1024 * 1024
            )
        )

        // Activate AdaptyUI
        AdaptyUI.activate(configuration: adaptyUIConfiguration)

パラメーター:

パラメーター必須/任意説明
memoryStorageTotalCostLimit必須ストレージの合計コスト上限(バイト単位)。
memoryStorageCountLimit必須メモリストレージのアイテム数上限。
diskStorageSizeLimit必須ストレージのディスク上のファイルサイズ上限(バイト単位)。0 は上限なしを意味します。

トランザクション終了の動作

この機能は SDK バージョン 3.12.0 以降で利用できます。

デフォルトでは、Adapty は検証が成功した後にトランザクションを自動的に終了します。ただし、高度なトランザクション検証(サーバーサイドのレシート検証、不正検出、カスタムビジネスロジックなど)が必要な場合は、SDK が手動でトランザクションを終了するように設定できます。

let configurationBuilder = AdaptyConfiguration
    .builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
    .with(transactionsFinishBehavior: .manual) // .auto is the default

トランザクションの終了方法の詳細については、ガイドをご覧ください。

バックアップ復元時のデータ消去

clearDataOnBackuptrue に設定すると、SDK はアプリが iCloud バックアップから復元されたことを検知し、キャッシュされたプロファイル情報、プロダクト詳細、ペイウォールを含むローカルに保存されたすべての SDK データを削除します。SDK はその後クリーンな状態で初期化されます。デフォルト値は false です。

削除されるのはローカルの SDK キャッシュのみです。Apple とのトランザクション履歴および Adapty サーバー上のユーザーデータは変更されません。

let configurationBuilder = AdaptyConfiguration
    .builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
    .with(clearDataOnBackup: true) // default – false

トラブルシューティング

Tuist での Swift 6 並行性エラー

Tuist でビルドすると、Swift 6 の strict concurrency コンパイルエラーが発生することがあります。典型的な症状としては、AdaptyUIBuilderLogic での @Sendable 属性の不一致や、類似したモジュール間の Sendability エラーがあります。

これは、Tuist が SPM パッケージから Xcode プロジェクトを生成する際に swift-tools-version: 6.0 の設定を保持しないために発生します。その結果、一部の Adapty ターゲット(AdaptyAdaptyUIAdaptyUIBuilder)が Swift 5 のルールでコンパイルされ、他のターゲットが Swift 6 を使用するため、モジュール間で @Sendable の不一致が生じます。

修正方法: Adapty SDK 3.15.5 以降にアップグレードしてください。Swift の言語バージョンが混在していても問題が解消されます。

回避策: アップグレードできない場合は、Tuist の設定で 3 つの Adapty ターゲットすべてに対して明示的に Swift 6 を設定してください。

targetSettings: [
  "Adapty": .init().swiftVersion("6"),
  "AdaptyUI": .init().swiftVersion("6"),
  "AdaptyUIBuilder": .init().swiftVersion("6"),
]