Capacitor SDKのキッズモード

Capacitorアプリが子ども向けの場合、AppleGoogleのポリシーに従う必要があります。Adapty SDKを使用している場合、いくつかの簡単な手順でポリシーに準拠した設定を行い、アプリストアの審査を通過できます。

何が必要ですか?

以下の収集を無効にするよう Adapty SDK を設定する必要があります:

さらに、カスタマーユーザーIDの使用には注意が必要です。<FirstName.LastName> 形式のユーザーIDは、メールアドレスの使用と同様に、個人データの収集とみなされる可能性があります。キッズモードでは、コンプライアンスを確保するために、ランダム化または匿名化された識別子(例:ハッシュ化されたIDやデバイスが生成したUUID)を使用することがベストプラクティスです。

キッズモードの有効化

Adapty ダッシュボードでの設定

Adapty ダッシュボードでIPアドレスの収集を無効にする必要があります。App settingsに移動し、Collect users’ IP addressの下にあるDisable IP address collectionをクリックしてください。

モバイルアプリのコードの変更

ポリシーに準拠するため、ユーザーのIDFA、GAID、およびIPアドレスの収集を無効にしてください。


try {
  await adapty.activate({
    apiKey: 'YOUR_PUBLIC_SDK_KEY',
    params: {
      // Disable IP address collection
      ipAddressCollectionDisabled: true,

      // Disable IDFA collection on iOS
      ios: {
        idfaCollectionDisabled: true
      },

      // Disable Google Advertising ID collection on Android
      android: {
        adIdCollectionDisabled: true
      }
    }
  });
  console.log('Adapty activated with Kids Mode enabled');
} catch (error) {
  console.error('Failed to activate Adapty with Kids Mode:', error);
}

プラットフォーム固有の設定

iOS

IDFAの収集をコード上で無効にしていても(上記参照)、ビルドにはAdSupportおよびAppTrackingTransparencyフレームワークが含まれたままになります。App StoreのKidsカテゴリではこれらのフレームワークは許可されていません。また、v4 SDKはネイティブのiOS SDKをSwift Package Manager経由でインストールするため、Podfileでこれらを除外するステップが存在しません。

Appleの要件に準拠するには、SDKに同梱されているadapty-kids-modeコマンドをアプリのpostinstallに追加してください。これにより、SDKのKidsModeトレイトが有効になり、該当コードがコンパイル時に除外されます。このコマンドはインストールのたびに再適用されます。

{
  "scripts": {
    "postinstall": "adapty-kids-mode"
  }
}

その後、iOS パッケージを再インストール・再解決し、Xcode 26 以降でビルドします:

npm install
npx cap sync ios

Kids Mode を無効にするには、adapty-kids-mode disable を実行して再度同期してください。

iOS に CocoaPods を使用している場合は、ネイティブレベルで Kids Mode を有効にすることもできます:

  1. Podfile を更新します:
  • post_install セクションがない場合は、以下のコードブロック全体を追加してください。

    • post_install セクションがある場合は、ハイライトされた行をそのセクションにマージしてください。
    def adapty_enable_kids_mode(installer)
      installer.pods_project.targets.each do |target|
        next unless target.name == 'Adapty'
        target.build_configurations.each do |config|
          flags = config.build_settings['OTHER_SWIFT_FLAGS'] || '$(inherited)'
          flags = flags.join(' ') if flags.is_a?(Array)
          config.build_settings['OTHER_SWIFT_FLAGS'] = "#{flags} -DADAPTY_KIDS_MODE"
        end
        target.frameworks_build_phase.files.dup.each do |bf|
          target.frameworks_build_phase.remove_build_file(bf) if bf.display_name.to_s.include?('AdSupport')
        end
      end
      installer.pods_project.save
      Dir.glob(File.join(installer.sandbox.root, 'Target Support Files', '**', '*.xcconfig')).each do |xc|
        File.write(xc, File.read(xc).gsub(/\s*-framework\s+"?AdSupport"?/, ''))
      end
    end
    
    post_install do |installer|
      # ... keep your existing post_install body (Flutter adds one automatically) ...
    
      adapty_enable_kids_mode(installer)   # <-- enable Adapty Kids Mode
    end
  1. 次のコマンドを実行して変更を適用します:

    pod install

Android: 広告IDパーミッションの削除

adIdCollectionDisabled: true(上記)を設定すると、AdaptyによるAdvertising IDの収集は停止されますが、SDKは引き続きAD_IDパーミッションを宣言します。アプリが子供専用を対象とし、Android 13(API 33)以上でコンパイルされている場合、Google Playはそのリクエスト自体を禁止しています。

<manifest>要素に次の2つを追加してください:

  1. tools 名前空間を宣言します(Capacitor のデフォルトマニフェストにはこれが含まれていません)。
  2. AD_ID<uses-permission> エントリを tools:node="remove" 付きで追加して、削除します。
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission
        android:name="com.google.android.gms.permission.AD_ID"
        tools:node="remove" />

    <!-- your existing manifest content -->
</manifest>

次のステップ

キッズモードを有効にしたら、以下を確認してください:

  1. アプリを十分にテストし、すべての機能が正常に動作することを確認する
  2. 無効にしたデータ収集を反映するよう、アプリのプライバシーポリシーを見直す
  3. キッズモードのコンプライアンスに関する明確なドキュメントを添えてアプリを審査に提出する

プラットフォーム固有の要件の詳細については: