React Native SDK 中的儿童模式
如果你的 React Native 应用面向儿童,则必须遵守 Apple 和 Google 的相关政策。如果你正在使用 Adapty SDK,只需几个简单的步骤即可将其配置为符合这些政策,并顺利通过应用商店审核。
在 iOS 上,Kids Mode 通过 KidsMode Swift package trait 启用,该 trait 会在编译时移除所有 IDFA、AdSupport 和 AppTrackingTransparency 相关代码。此功能需要 v4 SDK(通过 Swift Package Manager 安装原生 iOS SDK)以及 Xcode 26 或更高版本。详见下方的更新 iOS Podfile。
需要做什么?
你需要配置 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。
更新您的移动应用代码
为符合相关政策,请在激活 Adapty SDK 时禁止收集用户的 IDFA(iOS)、GAID/AAID(Android)以及 IP 地址:
adapty.activate('YOUR_PUBLIC_SDK_KEY', {
// Disable IP address collection
ipAddressCollectionDisabled: true,
// Disable IDFA collection on iOS
ios: {
idfaCollectionDisabled: true,
},
// Disable Google Advertising ID collection on Android
android: {
adIdCollectionDisabled: true,
},
});
更新你的 iOS Podfile
为了满足 App Store 儿童分类(或 COPPA 合规)的要求,原生 iOS SDK 必须使用 KidsMode Swift 包特性进行构建,该特性会在编译时移除所有 IDFA、AdSupport 和 AppTrackingTransparency 相关代码。React Native 通过 Swift Package Manager 安装原生 SDK,但 Swift Package Manager 无法传递包特性,因此 SDK 提供了一个 Podfile 辅助工具来帮你应用该特性。此步骤需要 Xcode 26 或更高版本。
在 ios/Podfile 中,引入辅助工具并在 react_native_post_install 之后调用它:
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native-adapty/ios/adapty_kids_mode.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
# ...
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false
)
adapty_enable_kids_mode(installer)
end
然后运行 pod install:
cd ios && pod install
要确认 Kids Mode 已激活,请检查 adapty.activate(...) 日志行是否显示 kids_mode_enabled: true。请将辅助调用永久保留在 post_install 中——React Native 每次执行 pod install 时都会重新创建 Swift Package 引用,辅助函数会在每次执行时重新应用该特性。
更新 Android 清单
如果你的应用仅面向儿童,且编译目标为 Android 13(API 33)或更高版本,Google Play 要求你不得请求 AD_ID 权限。应用中的其他 SDK(如分析、归因或广告类 SDK)可能通过清单合并自动添加此权限。设置 adIdCollectionDisabled 可以阻止 Adapty 收集该 ID,但不会移除其他 SDK 已声明的权限。
要移除该权限,请在 android/app/src/main/AndroidManifest.xml 的 <manifest> 元素内添加以下内容。<manifest> 元素必须声明 xmlns:tools="http://schemas.android.com/tools"。
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />