Capacitor - Adapty SDK のインストールと設定

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

  • Core Adapty: アプリで Adapty を正しく動作させるために必要なモジュールです。
  • AdaptyUI: Adapty ペイウォールビルダーを使用する場合に必要なモジュールです。ペイウォールビルダーは、クロスプラットフォームのペイウォールを簡単に作成できるノーコードツールです。AdaptyUI はコアモジュールと同時に自動的に有効化されます。

Adapty SDKがモバイルアプリにどのように統合されるか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを示すサンプルアプリをご覧ください。

要件

Adapty Capacitor SDK には以下のバージョン要件があります:

Adapty SDK バージョンCapacitor バージョンiOS バージョン
3.16.0+815.0+
3.15714.0+

Capacitor バージョン 6 以下はサポートされていません。 Adapty SDK v4(ベータ版)を iOS 向けにビルドするには、Xcode 26 以降が必要です。使用しているネイティブ iOS SDK は Swift tools 6.2 でビルドされています。iOS 15.0+、Capacitor 8、Android の minSdk 24 の要件は SDK 3.16+ と同じです。

SDK v3.17 以降、Adapty SDK はデフォルトで Google Play Billing Library v8.0.0 を使用します。

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

Adapty SDK のインストール

以下の手順では Adapty SDK 3.x をインストールします。SDK v4(ベータ版)— フローBuilder に必要で、クイックスタート でも使用されます — はインストール方法が異なります。下記の Adapty SDK 4.0 (beta) を参照するか、移行ガイド をご確認ください。

Release

Adapty SDK をインストールします:

npm install @adapty/capacitor
npx cap sync

Adapty SDK 4.0 (ベータ版)

Capacitor SDK 4.0 — フロービルダーのサポートを追加 — はプレリリース版です。正確なバージョンを指定してインストールしてください(npm はキャレット/チルダの範囲指定ではプレリリース版を解決しません)。その後、sync を実行します:

npm install @adapty/capacitor@4.0.0-beta.2
npx cap sync

iOS では、v4 はネイティブの Adapty SDK を Swift Package Manager のみ経由で取得します — CocoaPods の podspec は削除されました(CocoaPods のスペックリポジトリは2026年12月に読み取り専用になります)。アプリの iOS プロジェクトでは、Capacitor の SPM インテグレーションを使用する必要があります:

  • 新しいアプリの場合、SPM パッケージマネージャーで iOS プラットフォームを追加します:

    npx cap add ios --packagemanager SPM
  • 既存のアプリの場合、Capacitor の既存プロジェクトへの SPM 導入ガイドに従って、iOS プロジェクトを CocoaPods から SPM に移行してください。

v4 での API 変更の全一覧については、Adapty Capacitor SDK の v4 への移行を参照してください。

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

Adapty SDK のアクティベーションは、アプリ内で一度だけ行う必要があります。

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 を有効化してください:


try {
  await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
      // verbose logging is recommended for the development purposes and for the first production release
        logLevel: 'verbose',
      // in the development environment, use this variable to avoid multiple activation errors. Set it to your development environment variable
      __ignoreActivationOnFastRefresh: true,
    }
  });
  console.log('Adapty activated successfully!');
} catch (error) {
  console.error('Failed to activate Adapty SDK:', error);
}

activate の完了を待ってから、他の Adapty SDK メソッドを呼び出してください。完全な順序については、Capacitor SDK の呼び出し順序を参照してください。

開発環境でのアクティベーションエラーを避けるには、ヒントを参照してください。

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

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

ペイウォールビルダーを使用する予定がある場合は、AdaptyUI モジュールが必要です。コアモジュールを有効化すると自動的に設定されるため、追加の作業は不要です。

オプション設定

ログ

ログシステムの設定

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

LevelDescription
errorエラーのみがログに記録されます
warnエラーと、致命的なエラーにはならないが注意が必要なSDKからのメッセージがログに記録されます
infoエラー、警告、および各種情報メッセージがログに記録されます
verbose関数呼び出し、APIクエリなど、デバッグ時に役立つ追加情報がログに記録されます
Adapty の設定前または設定中にアプリのログレベルを設定できます。
// Set log level before activation
adapty.setLogLevel({ logLevel: 'verbose' });

// Or set it during configuration
await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    logLevel: 'verbose',
  }
});

データポリシー

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

IPアドレスの収集と共有を無効にする

Adaptyモジュールを有効化する際、ipAddressCollectionDisabledtrue に設定すると、ユーザーのIPアドレスの収集と共有を無効にできます。デフォルト値は false です。 このパラメーターを使用すると、ユーザーのプライバシーを強化したり、地域のデータ保護規制(GDPRやCCPAなど)に準拠したり、アプリでIPベースの機能が不要な場合に不必要なデータ収集を減らしたりできます。

await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    ipAddressCollectionDisabled: true,
  }
});

広告IDの収集と共有を無効にする

Adaptyモジュールを有効化する際に、広告識別子の収集を無効にするには、ios.idfaCollectionDisabled(iOS)またはandroid.adIdCollectionDisabled(Android)をtrueに設定してください。デフォルト値はfalseです。

このパラメータは、App Store / Play Storeのポリシーに準拠する場合、App Tracking Transparencyのプロンプトを表示したくない場合、または広告IDを使用したアトリビューションやアナリティクスが不要な場合にご利用ください。

await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    ios: {
      idfaCollectionDisabled: true,
    },
    android: {
      adIdCollectionDisabled: true,
    },
  }
});

AdaptyUI のメディアキャッシュを設定する

デフォルトでは、AdaptyUI はパフォーマンスの向上とネットワーク使用量の削減のために、画像や動画などのメディアをキャッシュします。カスタム設定を指定することで、キャッシュの設定をカスタマイズできます。

デフォルトのキャッシュ設定を上書きするには、mediaCache を使用してください:

await adapty.activate({
  apiKey: 'YOUR_PUBLIC_SDK_KEY',
  params: {
    mediaCache: {
      memoryStorageTotalCostLimit: 200 * 1024 * 1024, // Optional: memory cache size in bytes
      memoryStorageCountLimit: 2147483647,            // Optional: max number of items in memory
      diskStorageSizeLimit: 200 * 1024 * 1024,       // Optional: disk cache size in bytes
    },
  }
});
パラメーター必須説明
memoryStorageTotalCostLimit任意メモリ上のキャッシュサイズ(バイト単位)。デフォルト値はプラットフォームによって異なります。
memoryStorageCountLimit任意メモリストレージのアイテム数の上限。デフォルト値はプラットフォームによって異なります。
diskStorageSizeLimit任意ディスク上のファイルサイズの上限(バイト単位)。デフォルト値はプラットフォームによって異なります。

ローカルアクセスレベルを有効にする(Android)

デフォルトでは、ローカルアクセスレベルは iOS では有効、Android では無効になっています。Android でも有効にするには、localAccessLevelAllowedtrue に設定してください。

await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
        android: {
            localAccessLevelAllowed: true,
        },
    }
});

バックアップ復元時にデータを削除する

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

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

await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
        ios: {
            clearDataOnBackup: true,
        },
    }
});

開発環境のヒント

Capacitorのライブリロードでのアクティベーションエラーのトラブルシューティング

CapacitorでAdapty SDKを開発中に、Adapty can only be activated once. Ensure that the SDK activation call is not made more than once. というエラーが発生することがあります。

これはCapacitorのライブリロード機能が開発中に複数回アクティベーションを呼び出すことが原因です。これを防ぐには、__ignoreActivationOnFastRefresh オプションにCapacitorの開発モードフラグを設定してください。使用しているバンドルによって異なります。

try {
  await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
        // Set your development environment variable
      __ignoreActivationOnFastRefresh: true,
    }
  });
} catch (error) {
  console.error('Failed to activate Adapty SDK:', error);
  // Handle the error appropriately for your app
}

トラブルシューティング

iOSの最低バージョンエラー

これはCocoaPodsベースのプロジェクトでSDK 3.xを使用している場合に適用されます。SDK 4.0はSwift Package Manager経由でのみインストールされ(Podfileは不要)、iOS 15.0が必要です。Xcodeのデプロイメントターゲットを15.0に設定してください。

SDK 3.xで最低iOSバージョンエラーが発生した場合は、Podfileを更新してください:

-platform :ios, min_ios_version_supported
+platform :ios, '15.0'

Androidのバックアップルール(Auto Backup設定)

一部のSDK(Adaptyを含む)には、独自のAndroid Auto Backup設定が含まれています。バックアップルールを定義する複数のSDKを使用している場合、Androidのマニフェストマージャーが android:fullBackupContentandroid:dataExtractionRules、または android:allowBackup に関するエラーで失敗することがあります。

よくあるエラーの症状: Manifest merger failed: Attribute application@dataExtractionRules value=(@xml/your_data_extraction_rules) is also present at [com.other.sdk:library:1.0.0] value=(@xml/other_sdk_data_extraction_rules)

これらの変更は、Androidプラットフォームのディレクトリ(通常はプロジェクトの android/ フォルダー内)で行う必要があります。

この問題を解決するには、以下が必要です:

  • バックアップ関連の属性に対して、アプリの値を使用するようマニフェストマージャーに指示する。

  • AdaptyのルールとほかのSDKのルールをマージしたバックアップルールファイルを作成する。

1. マニフェストに tools 名前空間を追加する

AndroidManifest.xml ファイルのルートの <manifest> タグに tools が含まれていることを確認してください:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">

    ...
</manifest>

2. <application> でバックアップ属性を上書きする

同じ AndroidManifest.xml ファイルで、<application> タグを更新して、アプリが最終的な値を提供し、マニフェストマージャーにライブラリの値を置き換えるよう指示します:

<application
android:name=".App"
android:allowBackup="true"
android:fullBackupContent="@xml/sample_backup_rules"           
android:dataExtractionRules="@xml/sample_data_extraction_rules"
tools:replace="android:fullBackupContent,android:dataExtractionRules">

    ...
</application>

いずれかのSDKが android:allowBackup も設定している場合は、tools:replace に含めてください:

tools:replace="android:allowBackup,android:fullBackupContent,android:dataExtractionRules"

3. マージしたバックアップルールファイルを作成する

AndroidプロジェクトのAdaptyのルールとほかのSDKのルールを組み合わせた res/xml/ ディレクトリにXMLファイルを作成します。AndroidはOSのバージョンによって異なるバックアップルール形式を使用するため、両方のファイルを作成することで、アプリがサポートするすべてのAndroidバージョンとの互換性が確保されます。

以下の例では、サンプルのサードパーティSDKとしてAppsFlyerを使用しています。アプリで使用しているほかのSDKのルールに置き換えるか、追加してください。

Android 12以降(新しいデータ抽出ルール形式を使用):

<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
    <cloud-backup>
        
        <exclude domain="sharedpref" path="appsflyer-data"/>
        <exclude domain="sharedpref" path="appsflyer-purchase-data"/>
        <exclude domain="database" path="afpurchases.db"/>
        
        <exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
    </cloud-backup>

    <device-transfer>
        
        <exclude domain="sharedpref" path="appsflyer-data"/>
        <exclude domain="sharedpref" path="appsflyer-purchase-data"/>
        <exclude domain="database" path="afpurchases.db"/>
        <exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>
    </device-transfer>
</data-extraction-rules>

Android 11以前(従来のフルバックアップコンテンツ形式を使用):

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    
    <exclude domain="sharedpref" path="appsflyer-data"/>

    
    <exclude domain="sharedpref" path="AdaptySDKPrefs.xml"/>

    

ネイティブの Android ファイルを変更した後、プラットフォームを再生成する場合は npx cap sync android を実行して、Capacitor が更新されたリソースを取り込むようにしてください。

別のアプリから戻った後に Android で購入が失敗する

購入フローを開始する Activity が非デフォルトの launchMode を使用している場合、ユーザーが Google Play、銀行アプリ、またはブラウザから戻ったときに Android がその Activity を誤って再作成または再利用することがあります。これにより、購入結果が失われたり、キャンセルとして扱われたりする可能性があります。 購入フローを正しく動作させるには、購入フローを開始する Activity に standard または singleTop のみのランチモードを使用し、それ以外のモードは避けてください。

AndroidManifest.xml で、購入フローを開始する Activity が standard または singleTop に設定されていることを確認してください。

<activity
    android:name=".MainActivity"
    android:launchMode="standard" />

Podfile の SWIFT_VERSION オーバーライドによる Swift 6 ビルドエラー

これは SDK 3.x の CocoaPods ベースのプロジェクトに適用されます。SDK 4.0 はネイティブ SDK を Swift Package Manager 経由でインストールするため、調整が必要な Podfile は存在しません。

Capacitor アプリを iOS 向けにビルドする際、Adapty の pod ターゲットで Swift 6 のコンパイルエラーが発生することがあります。よくある症状としては、AdaptyUIBuilderLogic での @Sendable の不一致、Adapty 型への Sendable 準拠の欠如、またはアクター分離エラーなどが挙げられます。 Adapty の Pod は s.swift_version = '6.0' を宣言しており、ビルドに Swift 6 が必要です。アプリ本体のコードは Swift 5 のままで構いません。Swift 6 でビルドが必要なのは、Adapty の Pod ターゲット(AdaptyAdaptyUIAdaptyUIBuilderAdaptyLoggerAdaptyPlugin)のみです。

最もよくある原因は、ios/App/Podfile 内の post_install フックがすべての Pod ターゲットの SWIFT_VERSION を書き換えてしまっていることです。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '5.9'
    end
  end
end

修正方法: Adapty の pod ターゲットをオーバーライドから除外します:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    next if %w[Adapty AdaptyUI AdaptyUIBuilder AdaptyLogger AdaptyPlugin].include?(target.name)
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '5.9'
    end
  end
end

次に npx cap sync ios を実行してリビルドしてください。

確認するには、ios/App/Pods/Pods.xcodeproj を開き、Adapty pod ターゲットを選択して Build SettingsSwift Language Version を確認します。Swift 6 になっているはずです。