Режим «Для детей» в Capacitor SDK

Если ваше приложение на Capacitor предназначено для детей, вы обязаны соблюдать политики Apple и Google. Несколько простых шагов помогут настроить Adapty SDK в соответствии с этими требованиями и успешно пройти модерацию.

Что нужно сделать?

Необходимо настроить SDK, чтобы отключить сбор:

  • IDFA (Identifier for Advertisers) (iOS)
  • Android Advertising ID (AAID/GAID) (Android)
  • IP-адреса Кроме того, рекомендуем обращаться с customer user ID с осторожностью. User ID в формате <FirstName.LastName> однозначно расценивается как сбор персональных данных — так же, как и использование email. Для режима «Для детей» лучшая практика — использовать рандомизированные или анонимизированные идентификаторы (например, хэшированные ID или UUID, сгенерированные на устройстве), чтобы обеспечить соответствие требованиям.

Включение режима «Для детей»

Настройки в дашборде Adapty

В дашборде Adapty необходимо отключить сбор IP-адресов. Для этого перейдите в App settings и нажмите Disable IP address collection в разделе Collect users’ IP address.

Обновления в коде мобильного приложения

Чтобы соответствовать требованиям политик, отключите сбор 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. Категория Kids в App Store их не допускает. А поскольку SDK v4 устанавливает нативный iOS SDK через Swift Package Manager, убрать их через Podfile не получится.

Чтобы соответствовать требованиям Apple, добавьте команду adapty-kids-mode, поставляемую вместе с SDK, в postinstall вашего приложения. Она включает трейт KidsMode в SDK, который исключает этот код из компиляции. Команда применяется заново при каждой установке:

{
  "scripts": {
    "postinstall": "adapty-kids-mode"
  }
}

Затем переустановите и пересоберите iOS-пакеты, после чего выполните сборку в Xcode 26 или новее:

npm install
npx cap sync ios

Чтобы отключить Kids Mode, выполните adapty-kids-mode disable и синхронизируйте проект снова.

Если вы используете CocoaPods для iOS, 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: удаление разрешения на рекламный идентификатор

Установка adIdCollectionDisabled: true (выше) останавливает сбор рекламного идентификатора в Adapty, однако SDK по-прежнему объявляет разрешение AD_ID. Если ваше приложение ориентировано исключительно на детей и компилируется под Android 13 (API 33) или выше, Google Play запрещает его запрашивать.

Добавьте два элемента в тег <manifest>:

  1. Объявите пространство имён tools (в манифесте Capacitor по умолчанию оно отсутствует).
  2. Добавьте запись <uses-permission> для AD_ID с атрибутом 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>

Следующие шаги

После включения режима «Для детей» убедитесь, что:

  1. Приложение тщательно протестировано и все функции работают корректно.
  2. Политика конфиденциальности обновлена с учётом отключённого сбора данных.
  3. При отправке приложения на проверку приложена документация, подтверждающая соответствие требованиям режима «Для детей».

Дополнительные сведения о платформенных требованиях: