Capacitor SDK 中的儿童模式

如果您的 Capacitor 应用面向儿童用户,您必须遵守 AppleGoogle 的相关政策。如果您正在使用 Adapty SDK,只需几个简单步骤即可完成配置,以满足这些政策要求并通过应用商店审核。

需要做什么?

你需要配置 Adapty SDK,禁止收集以下信息:

  • IDFA(广告标识符)(iOS)
  • Android 广告 ID(AAID/GAID)(Android)
  • IP 地址 此外,我们建议谨慎使用 customer user 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 收集(如上所述),您的构建文件仍然包含 AdSupportAppTrackingTransparency 框架。App Store 儿童类别不允许使用这些框架。由于 v4 SDK 通过 Swift Package Manager 安装原生 iOS SDK,因此无法通过 Podfile 步骤将其移除。

为符合 Apple 的要求,请将 SDK 自带的 adapty-kids-mode 命令添加到您应用的 postinstall 中。该命令会启用 SDK 的 KidsMode 特性,从而在编译时排除相关代码。每次执行 install 时该命令都会重新生效:

{
  "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 将停止收集广告 ID,但 SDK 仍会声明 AD_ID 权限。如果你的应用仅面向儿童,且编译目标为 Android 13(API 33)或更高版本,Google Play 将禁止你申请该权限。

<manifest> 元素中添加以下两项内容:

  1. 声明 tools 命名空间(Capacitor 的默认清单文件中未包含此命名空间)。
  2. 添加一个带有 tools:node="remove" 属性的 <uses-permission> 条目,用于移除 AD_ID 权限。
<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. 提交应用审核时,附上关于儿童模式合规性的清晰说明

有关各平台具体要求的更多信息,请参阅: