# Экран пользовательского согласия

{% hint style="info" %}
Минимальные требования:

* Используйте Unity 2018.3+ версии.
* Используйте Android API level 22 (Android OS 5.1) и выше.
* Используйте iOS 13.0 и выше.
* Используйте Xсode 13 или выше.
  {% endhint %}

{% hint style="warning" %}
Информация, приведенная ниже, не является юридической консультацией. Yabbi не несет ответственности за последствия ее использования. Перед принятием юридически значимых решений рекомендуется проконсультироваться с юристом.
{% endhint %}

## Общая информация

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

Помимо согласия пользователя, вам потребуется подготовить надлежащим образом политику конфиденциальности и другие документы, требуемые магазинами приложений и законодательством тех стран, в которых опубликовано ваше приложение.&#x20;

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

* Федеральный закон от 27 июля 2006 г. N 152-ФЗ "О персональных данных"
* GDPR (General Data Protection Regulation, Постановление (Европейский союз) 2016/679)
* COPPA (Children's Online Privacy Protection Rule)
* CCPA (California Consumer Privacy Act)

{% hint style="warning" %}
Обращаем ваше внимание, что данный список не является исчерпывающим. Рекомендуем изучить законодательство, регулирующее персональные данные пользователей, в тех странах, в которых опубликовано ваше приложение, и проконсультироваться с юристом перед принятием юридически значимых решений.
{% endhint %}

## Consent screen и Consent Manager

Обычно получение согласия пользователя происходит на специальном экране при первом запуске приложения — consent-screen.

\
В Yabbi SDK реализован такой экран, вы можете добавить и настроить его с помощью работы с библиотекой **Consent Manager**. Вы можете использовать его, чтобы не создавать Consent Screen самостоятельно.

## Демо-приложение

Используйте наше демо-приложение в качестве примера.

{% embed url="<https://github.com/YabbiSDKTeam/yabbi-unity-demo>" %}

## Установка

### Скачайте плагин

1. Установите Yabbi Plugin. Подробно процесс установки описан в [соответствующем разделе](/yabbi-documentation/unity-plugin/ustanovka-i-nastroika-plagina.md).
2. Consent Manager поставляется в плагине. \
   Никаких допольнительных действий для установки не нужно.

## Настройка библиотеки Consent Manager

Перед использование экрана пользовательского согласия необходимо настроить его.

Для того, чтобы задать параметры, вызывайте методы переменной `builder`. Ниже представлен список всех доступных настроек:

* `AppendPolicyURL` - устанавливает ссылку на политику конфиденциальности вашего приложения. Рекомендуем вам относиться к этому параметру как к обязательному. Ссылки на политики конфиденциальности Yabbi и наших партнёров уже добавлены на экран согласия.
* `AppendBundle` - устанавливает кастомный Bundle. Он используется для установки иконки приложения в TopBar экрана пользовательского согласия.\
  Если параметр не заполнен, то отобразится существующая иконка приложения.
* `AppendName` - устанавливает имя вашего приложения в TopBar экрана пользовательского согласия. Если параметр не заполнен, то отобразится существующее название приложения.
* `AppendGDPR` - добавляет кнопку отказа от сбора данных.\
  \
  Consent screen с одной кнопкой, возможность отказа от сбора данных доступна пользователю только через ограничение настроек устройства.<br>

  <div align="left"><figure><img src="/files/zL3vQoUvysdXZ92x78Yq" alt="" width="156"><figcaption><p>Android</p></figcaption></figure> <figure><img src="/files/NS3v9gIuwKb3U1nYkZek" alt="" width="148"><figcaption><p>iOS</p></figcaption></figure></div>

  \
  Consent screen с двумя кнопками, возможность отказа от сбора данных доступна пользователю по тапу на кнопку "Нет".<br>

  <div align="left"><figure><img src="/files/DZdnVKgmEOLXkyUyA1J0" alt="" width="156"><figcaption><p>Android</p></figcaption></figure> <figure><img src="/files/tnwugDTe795kCIMrkkk8" alt="" width="148"><figcaption><p>iOS</p></figcaption></figure></div>

Взгляните на полный пример заполнения параметров:

```csharp
var builder = new ConsentBuilder()
        .AppendPolicyURL("https://yabbi.me/policy")
        .AppendGdpr(true)
        .AppendBundle("me.yabbi.ads.app")
        .AppendName("Example name");
        
consentManager.RegisterCustomVendor(builder);
```

## Работа с библиотекой Consent Manager

### Инициализация

Создайте в вашем скрипте переменную `ConsentManager`.

```csharp
private ConsentManager consentManager = new();
```

Мы рекомендуем вызывать инициализацию SDK  в `Start` методе.

```csharp
private void Start()
{
    consentManager.LoadManager();
}
```

### Показ экрана с запросом разрешений

Чтобы показать экран, необходимо вызывать метод `showConsentWindow`.

```csharp
consentManager.ShowConsentWindow();
```

### Узнать статус согласия пользователя

Если пользователь дал согласие на сбор данных, метод вернёт `true`:

```csharp
consentManager.HasConsent();
```

Если метод возвращает `false`, настоятельно рекомендуем не собирать никакие данные об этом пользователе.

### Обновление статуса согласия пользователя (метод SDK для работы с рекламой)

Для обновления статуса согласия в Yabbi SDK (для работы с рекламой) используется метод `SetUserConsent`.

```csharp
Yabbi.SetUserConsent(consentManager.HasConsent());
```

С остальными методами Yabbi SDK (для работы с рекламой) вы можете ознакомиться в [соответствующем разделе](/yabbi-documentation/unity-plugin/rabota-s-reklamoi.md#metody-sdk).

### Режим отладки

Если вам требуется логирование ошибок и событий, включите режим отладки.\
По умолчанию он выключен.

Для включения режима отладки воспользуйтесь методом `EnableLog`.

```csharp
consentManager.EnableLog(true);
```

## Отслеживание событий

Consent Manager позволяет вам отслеживать события, связанные с согласием пользователя на сбор данных.

#### Для отслеживания событий необходимо:

1. Наследуйте класс который будет работать с рекламными событиями от интерфейса для отлеживания событий.

```csharp
class YourClassName : IConsentListener {
    public void OnConsentManagerLoaded()
    {
        // Вызывается когда менеджер готов к показу
    }
    
    public void OnConsentManagerLoadFailed(string error)
    {
        // Вызывется если при загрузке произошла ошибка
    }
    
    public void OnConsentWindowShown()
    {
        // Вызывается при показе экрана
    }
    
    public void OnConsentManagerShownFailed(string error)
    {
        // Вызывется если при показе экрана произошла ошибка
    }
    
    public void OnConsentWindowClosed(bool hasConsent)
    {
        // Вызывается при закрытии экрана
        // hasConsent - определяет дал ли пользователь согласие
    }
}
```

2. Свяжите ваш класс для отслеживания событий с Consent Manager SDK.\
   \
   Обычно класс, который работает с рекламой, одновременно является и классом для отслеживания событий, поэтому в качестве свойства делегата можно указать `this`.&#x20;

```csharp
consentManager.SetListener(self);
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yabbi.gitbook.io/yabbi-documentation/unity-plugin/ekran-polzovatelskogo-soglasiya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
