Modo Infantil en Capacitor SDK
Si tu aplicación de Capacitor está destinada a niños, debes seguir las políticas de Apple y Google. Si usas el SDK de Adapty, unos pocos pasos sencillos te ayudarán a configurarlo para cumplir con estas políticas y superar las revisiones de las stores.
¿Qué se necesita?
Debes configurar el SDK para desactivar la recopilación de:
- IDFA (Identifier for Advertisers) (iOS)
- Android Advertising ID (AAID/GAID) (Android)
- Dirección IP
Además, te recomendamos usar el customer user ID con cuidado. Un ID en formato
<FirstName.LastName>se considerará claramente como recopilación de datos personales, al igual que usar un correo electrónico. Para el Modo Infantil, la mejor práctica es usar identificadores aleatorios o anonimizados (por ejemplo, IDs con hash o UUIDs generados por el dispositivo) para garantizar el cumplimiento normativo.
Activar el Modo Infantil
Cambios en el Adapty Dashboard
En el Adapty Dashboard, debes deshabilitar la recopilación de direcciones IP. Para ello, ve a App settings y haz clic en Disable IP address collection en Collect users’ IP address.
Actualizaciones en el código de tu app móvil
Para cumplir con las políticas, desactiva la recopilación del IDFA, GAID y dirección IP del usuario:
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);
}
Configuraciones específicas por plataforma
iOS
Aunque deshabilites la recopilación de IDFA en el código (como se indica arriba), tu build sigue incluyendo los frameworks AdSupport y AppTrackingTransparency. La categoría Kids de la App Store no los permite. Y dado que el SDK v4 instala el SDK nativo de iOS a través de Swift Package Manager, no hay ningún paso en el Podfile para eliminarlos.
Para cumplir con los requisitos de Apple, añade el comando adapty-kids-mode que incluye el SDK al postinstall de tu app. Habilita el trait KidsMode del SDK, que excluye ese código de la compilación. El comando se vuelve a aplicar en cada instalación:
{
"scripts": {
"postinstall": "adapty-kids-mode"
}
}Luego reinstala y vuelve a resolver los paquetes de iOS, y compila con Xcode 26 o posterior:
npm install
npx cap sync iosPara desactivar el Modo Infantil, ejecuta adapty-kids-mode disable y vuelve a sincronizar.
Si usas CocoaPods para iOS, también puedes activar el Modo Infantil a nivel nativo:
- Actualiza tu Podfile:
- Si no tienes una sección
post_install, añade el bloque de código completo que aparece a continuación. - Si sí tienes una sección
post_install, combina las líneas resaltadas en ella.
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-
Ejecuta el siguiente comando para aplicar los cambios:
pod install
Android: eliminar el permiso de ID publicitario
Establecer adIdCollectionDisabled: true (más arriba) evita que Adapty recopile el ID publicitario, pero el SDK sigue declarando el permiso AD_ID. Si tu app está dirigida únicamente a niños y compila contra Android 13 (API 33) o superior, Google Play te prohíbe incluso solicitarlo.
Realiza dos adiciones en tu elemento <manifest>:
- Declara el espacio de nombres
tools(el manifiesto predeterminado de Capacitor no lo incluye). - Añade una entrada
<uses-permission>paraAD_IDcontools:node="remove"para eliminarlo.
<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>
Próximos pasos
Una vez que hayas activado el Modo Infantil, asegúrate de:
- Probar tu app a fondo para garantizar que toda la funcionalidad funciona correctamente.
- Revisar la política de privacidad de tu app para reflejar la recopilación de datos deshabilitada.
- Enviar tu app a revisión con documentación clara sobre el cumplimiento del Modo Infantil.
Para más información sobre los requisitos específicos de cada plataforma:
- Modo Infantil en iOS SDK para detalles adicionales de configuración en iOS
- Modo Infantil en Android SDK para detalles adicionales de configuración en Android