Перейти к основному содержимому
Версия: 3.4.0-beta.1

GDPR и CCPA

к сведению

Пожалуйста, обратите внимание, что лучше всего обратиться к квалифицированным юристам, чтобы получить дополнительную информацию и быть хорошо подготовленным к соблюдению требований.

Закон Европейского союза о защите персональных данных, более известный как GDPR, вступил в силу 25 Мая 2018 года. Это набор правил, разработанный для жителей Европейского союза, о получении контроля над сбором их персональных данных. Любые бизнесы, основанные в Европейском союзе или имеющие пользователей из Европейского союза, обязаны соответствовать закону о защите персональных данных (GDPR) во избежание связанных рисков. Закон California Consumer Privacy Act (CCPA) вступил в силу 1 Января 2020 года. Мы собрали вместе полезную информацию, для того что бы помочь вам лучше понять необходимые шаги в соответсвии вашего приложения требованиям GDRP.

Вы можете узнать больше о GDPR, CCPA и разнице между ними тут.

Шаг 1. Обновление Политики Конфеденциальности

Добавьте Дополнительную Информацию В Вашу Политику Конфиденциальности

Не забудьте добавить информацию о сборе IP адреса и рекламного ID, так же как ссылку на политику конфиденциальности Appodeal в вашу политику конфиденциальности в App Store и Google Play.

Для ускорения процесса вы можете воспользоваться генераторами политики конфиденциальности, где вам необходимо будет указать ID, IP адрес и локацию (если вы ее собираете) в поле Personally Identifiable Information you collect (в поле с дополнительной информацией о вашем приложении) а так же как ссылку на политику конфиденциальности Appodeal в поле Link to the privacy policy of third party service providers used by the app.

Добавьте Политику Конфиденциальности В Ваше Мобильное Приложение

Вам необходимо явно добавить ссылку на вашу политику конфиденциальности в два места: на страницу приложения в app’s store и в ваше приложение.

Вы можете найти подробные инструкции о добавлении политики конфиденциальности в ваше приложения на официальных ресурсах, например: Iubenda - решение, адаптированное к требованиям законодательства, которое содержит подробное руководство по включению политики конфиденциальности в ваше приложение.

Убедитесь что ваш сайт с политикой конфиденциальности содержит SSL-сертификат — это пункт может казаться очевидным, но это важно.

Ниже вы можете найти две ссылки на ресурсы, которые вы можете использовать во время работы над соответствием вашего приложения:

примечание

Пожалуйста, обратите внимание, что, хотя мы всегда готовы предоставить вам ценную информацию, мы не уполномочены предоставлять какие-либо юридические консультации. Важно адресовать свои вопросы юристам, которые работают в соответствующей области.


к сведению

Начиная с версии 3.2.1 Appodeal SDK полностью совместим с Google UMP и поддерживает IAB TCF v2.

В соответствии с Appodeal и рекламными сетями в предоставлении наиболее подходящей мобильной рекламы конечному пользователю, вам необходимо запрашивать соглашение в регионах GDPR.

Чтобы получить согласие на сбор персональных данных ваших пользователей, мы предлагаем воспользоваться готовым решением - Stack Consent Manager, основанном на Google User Messaging Platform (UMP).

Настройка Google UMP

Перед началом работы, требуется настроить Google UMP. Воспользуйтесь этой инструкцией для настройки окна согласия.

Библиотека Stack Consent Manager включает разработанное окно согласия, показ которого вы можете предоставлять конечному пользователю. Это означает что вам больше не требуется создавать данное окно согласия самостоятельно.

к сведению

Начиная с Appodeal SDK 3.0, Stack Consent Manager включен в состав Appodeal SDK по умолчанию.

Согласие будет запрошено автоматически при инициализации SDK, и форма согласия будет показана, если это необходимо, без дополнительных вызовов.

Имейте в виду, что Согласие будет отображаться только в регионах ЕС, вы можете использовать VPN для тестирования.

Это означает, что код интеграции Appodeal SDK остается прежним:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Appodeal.initialize(activity, appKey, adTypes, object : ApdInitializationCallback {
override fun onInitializationFinished(list: List<ApdInitializationError>?) {
// Инициализация Appodeal завершена
}
})
}

Дополнительно

Stack Consent Manager включен в Appodeal SDK по умолчанию. Согласие будет запрошено автоматически при инициализации SDK, и форма согласия будет показана, если это необходимо, без каких-либо дополнительных вызовов.

Также вы можете использовать свой собственный менеджер согласия или использовать наш Stack Consent Manager в ручном режиме.

Обновление Статуса Согласия

Вы можете управлять согласием и обновлять его вручную с помощью вызовов Stack Consent Manager.

Чтобы обновить согласие, вызовите метод:

override fun onCreate(savedInstanceState: Bundle?) {
ConsentManager.requestConsentInfoUpdate(
parameters = ConsentUpdateRequestParameters(
activity = YourActivity@ this,
key = YOUR_APP_KEY,
tagForUnderAgeOfConsent = false,
sdk = "Appodeal",
sdkVersion = Appodeal.getVersion()
),
callback = object : ConsentInfoUpdateCallback {
override fun onUpdated() {
// Статус согласия пользователя успешно обновлен.
}

override fun onFailed(error: ConsentManagerError) {
// Инициализируйте Appodeal SDK с параметрами по умолчанию.
}
}
)
}
подсказка

requestConsentInfoUpdate может быть запрошен в любой момент жизненного цикла приложения. Мы рекомендуем запросить его при запуске приложения. Допускается несколько вызовов по запросу.

примечание

Необходимые параметры: YOUR_APP_KEY - Ключ приложения Appodeal, его можно получить в личном кабинете;

ConsentUpdateRequestParameters - Класс данных, представляющий параметры для запроса на обновление согласия в Appodeal Consent Manager. Используйте этот класс для инкапсуляции необходимой информации и для обновления предпочтений согласия. Параметры:

  • activity - Активность Активность, в которой запрашивается обновление согласия.
  • key - Ключ, связанный с пользователем, для которого обновляется согласие.
  • tagForUnderAgeOfConsent - Опционально. Указывает, помечен ли данный пользователь как не достигший возраста согласия. Устанавливается в true, если пользователь не достиг возраста согласия, в противном случае устанавливается в false или null.
  • sdk - Опционально. Идентификатор SDK, выполняющего запрос на обновление согласия.
  • sdkVersion - Опционально. Версия SDK, выполняющего запрос на обновление согласия.

ConsentInfoUpdateCallback - слушатель для запроса результата.

После обновления информации о согласии вы можете проверить текущий consent статус:

val status: ConsentStatus = ConsentManager.status
к сведению

Класс Enum, представляющий возможные статусы согласия в Appodeal Consent Manager.

  • Unknown - Представляет неизвестный статус согласия;
  • Required - Представляет статус требуемого согласия;
  • NotRequired - Представляет необязательный статус согласия;
  • Obtained - Представляет статус полученного согласия.

Возможность показа персонализированной рекламы

Вы можете проверить, можно ли показывать рекламу, основываясь на текущем статусе согласия, используя:

ConsentManager.canShowAds()
примечание

Если пользователь не находится в зоне действия законов ограничивающих сбор персональных даных(ConsentStatus.NotRequired) или форма согласия уже была показана, и ответ от пользователя был получен(ConsentStatus.Obtained) то canShowAds() возвращает true, показывая, что реклама может быть показана, в противном случае - false.

Загрузка формы согласия

Вы можете загрузить и получить ConsentForm, используя следующий код:

ConsentManager.load(
context = YourActivity@this,
successListener = object : OnConsentFormLoadSuccessListener {
override fun onConsentFormLoadSuccess(consentForm: ConsentForm) {
// ConsentForm была загружена. Теперь вы можете показать ее в виде диалога
}
},
failureListener = object : OnConsentFormLoadFailureListener {
override fun onConsentFormLoadFailure(error: ConsentManagerError) {
// Не удалось загрузить или показать ConsentForm. Дополнительную информацию можно найти в объекте 'error'
// Инициализируте Appodeal SDK с параметрами по умолчанию.
}
}
)

Отображение формы согласия

После того как окно согласия будет загружено, вы можете показать его.


consentForm.show(
activity = InterstitialActivity@this,
listener = object : OnConsentFormDismissedListener {
override fun onConsentFormDismissed(error: ConsentManagerError?) {
// Не удалось загрузить или показать форму согласия, либо она не требуется.
// Более подробную информацию можно найти в объекте 'error'
}
}
)

Загрузка и показ формы если это необходимо

Вы также можете загрузить форму и сразу же показать ее если это необходимо

ConsentManager.loadAndShowConsentFormIfRequired(
activity = YourActivity@this,
dismissedListener = object : OnConsentFormDismissedListener {
override fun onConsentFormDismissed(error: ConsentManagerError?) {
// Не удалось загрузить или показать форму согласия, либо она не требуется.
// Более подробную информацию можно найти в объекте 'error'
}
}
)

Вы можете сбросить статус согласия на неизвестный, используя метод:

ConsentManager.revoke(context = YourActivity@this)
к сведению

Параметры: context - Контекст, в котором сбрасывается статус согласия.