Capacitor SDK 中的儿童模式
如果您的 Capacitor 应用面向儿童用户,您必须遵守 Apple 和 Google 的相关政策。如果您正在使用 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 收集(如上所述),您的构建文件仍然包含 AdSupport 和 AppTrackingTransparency 框架。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:
- 更新您的 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 将停止收集广告 ID,但 SDK 仍会声明 AD_ID 权限。如果你的应用仅面向儿童,且编译目标为 Android 13(API 33)或更高版本,Google Play 将禁止你申请该权限。
在 <manifest> 元素中添加以下两项内容:
- 声明
tools命名空间(Capacitor 的默认清单文件中未包含此命名空间)。 - 添加一个带有
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>
后续步骤
启用儿童模式后,请确保:
- 全面测试您的应用,确保所有功能正常运行
- 更新应用的隐私政策,反映已禁用数据收集的情况
- 提交应用审核时,附上关于儿童模式合规性的清晰说明
有关各平台具体要求的更多信息,请参阅:
- iOS SDK 中的儿童模式:iOS 配置详情
- Android SDK 中的儿童模式:Android 配置详情