Capacitor SDKのキッズモード
Capacitorアプリが子ども向けの場合、AppleとGoogleのポリシーに従う必要があります。Adapty SDKを使用している場合、いくつかの簡単な手順でポリシーに準拠した設定を行い、アプリストアの審査を通過できます。
何が必要ですか?
以下の収集を無効にするよう Adapty SDK を設定する必要があります:
- IDFA(広告識別子) (iOS)
- Android 広告 ID(AAID/GAID) (Android)
- IP アドレス
さらに、カスタマーユーザー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 iosKids Mode を無効にするには、adapty-kids-mode disable を実行して再度同期してください。
iOS に CocoaPods を使用している場合は、ネイティブレベルで Kids Mode を有効にすることもできます:
- 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
-
次のコマンドを実行して変更を適用します:
pod install
Android: 広告IDパーミッションの削除
adIdCollectionDisabled: true(上記)を設定すると、AdaptyによるAdvertising IDの収集は停止されますが、SDKは引き続きAD_IDパーミッションを宣言します。アプリが子供専用を対象とし、Android 13(API 33)以上でコンパイルされている場合、Google Playはそのリクエスト自体を禁止しています。
<manifest>要素に次の2つを追加してください:
tools名前空間を宣言します(Capacitor のデフォルトマニフェストにはこれが含まれていません)。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>
次のステップ
キッズモードを有効にしたら、以下を確認してください:
- アプリを十分にテストし、すべての機能が正常に動作することを確認する
- 無効にしたデータ収集を反映するよう、アプリのプライバシーポリシーを見直す
- キッズモードのコンプライアンスに関する明確なドキュメントを添えてアプリを審査に提出する
プラットフォーム固有の要件の詳細については:
- iOS SDKのキッズモード(追加のiOS設定の詳細)
- Android SDKのキッズモード(追加のAndroid設定の詳細)