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 のインストール
Adapty SDK は Swift Package Manager でインストールします。Xcode で File -> Add Package Dependency… を選択してください。パッケージ依存関係の追加手順は Xcode のバージョンによって異なる場合があるため、必要に応じて Xcode のドキュメントを参照してください。
- リポジトリ URL を入力します。
https://github.com/adaptyteam/AdaptySDK-iOS.git - バージョンを選択し(最新の安定版を推奨)、Add Package をクリックします。
- Choose Package Products ウィンドウで、必要なモジュールを選択します。
- Adapty(コアモジュール)
- AdaptyUI(オプション - ペイウォールビルダーを使用する場合のみ)
注意:
- キッズモードを有効にするには、Adapty の代わりに Adapty_KidsMode を選択してください。
- リストに表示される他のパッケージは選択しないでください。それらは不要です。
- Add Package をクリックしてインストールを完了します。
- インストールの確認: プロジェクトナビゲーターの Package Dependencies 以下に「Adapty」(および選択した場合は「AdaptyUI」)が表示されていることを確認してください。
Adapty iOS SDK 4.0 はプレリリース版です。Swift Package Manager は Up to Next Major Version(from:)ルールではベータ版を解決しないため、正確なバージョンを固定する必要があります。Xcode では Dependency Rule を Exact 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 を取得するには:
- Adapty ダッシュボードを開き、App settings → General に移動します。
- Api keys セクションで、Public SDK Key(Secret Key ではない)をコピーします。
- コード内の
"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 ペイウォールビルダーを使用する場合は、まず下記の AdaptyUI モジュールを有効化するを行い、その後ペイウォールビルダーのクイックスタートに従ってください。
- 独自のペイウォール UI を構築する場合は、カスタムペイウォールのクイックスタートをご覧ください。
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 モジュールを有効化する際に、idfaCollectionDisabled を true に設定すると、IDFA の収集と共有を無効にできます。
このパラメーターは、App Store レビューガイドラインに準拠する場合や、アプリで IDFA が不要なときに App Tracking Transparency のプロンプトが表示されるのを避けるために使用してください。デフォルト値は false です。IDFA 収集の詳細については、アナリティクス連携セクションを参照してください。
let configurationBuilder =
AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(idfaCollectionDisabled: true)
IP の収集と共有を無効にする
Adapty モジュールを有効化する際に、ipAddressCollectionDisabled を true に設定すると、ユーザーの 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
トランザクションの終了方法の詳細については、ガイドをご覧ください。
バックアップ復元時のデータ消去
clearDataOnBackup を true に設定すると、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 ターゲット(Adapty、AdaptyUI、AdaptyUIBuilder)が 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"),
]