# Работа с рекламой

## Идентификаторы из личного кабинета

### Идентификатор паблишера (publisher\_id)

Для инициализации плагина вам потребуется идентификатор паблишера (`publisher_id`)&#x20;

Ваш `publisher_id` находится в разделе "Настройки" в личном кабинете Yabbi.

<figure><img src="/files/zpjujJTekWlhxHP8EPch" alt=""><figcaption></figcaption></figure>

### Идентификатор рекламного блока (placement\_name)

При использовании методов плагина вам потребуется идентификатор рекламного блока (`placement_name`) рекламного блока.

`placement_name` - это ID рекламного блока. Рекламные блоки создаются в личном кабинете Yabbi.

<figure><img src="/files/S42GjpTHCMCHLYjpTPs1" alt=""><figcaption></figcaption></figure>

## Тестовые идентификаторы

В процессе интеграции плагина для стабильного получения тестовой рекламы рекомендуем использовать специальные `publisher_id` и `placement_name`.

`Publisher ID` - `65057899-a16a-4877-989b-38c432a7fa15`

#### Формат Interstitial

`Yabbi Interstitial ID` - `b8359c60-9bde-47c9-85ff-3c7afd2bd982`

`Yandex Interstitial ID` - `cd1dff91-76d0-44c2-a6ca-fd3f446ef9b5`

`IronSource Interstitial ID` - `ec9decde-58c8-4d1b-885f-479b05f39dcb`

#### Формат Rewarded Video

`Yabbi Rewarded ID` - `eaac7a7f-b0b0-46d2-ac95-bd58578e9e29`

`Yandex Rewarded ID` - `7e6334fc-ef08-45e9-9581-d18026a2fadb`

`IronSource Rewarded ID` - `9b45ac1a-ca72-4d57-9f0f-7bab924ad1b4`

#### Формат Banner&#x20;

`Yabbi Banner ID` - `27668678-d138-4af4-84f4-891252086125`

## Форматы рекламы

Рекламная сеть Yabbi поддерживает 3 формата рекламы.

### Полноэкранный баннер (Interstitial)

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

Пользователь может закрыть баннер через 3 секунды.

Такой формат обычно используется при запуске приложения, либо при переходах между экранами приложения.

При работе с таким форматом используйте параметр `Yabbi.Interstitial`.

Вот пример вызова метода для показа рекламы такого формата.

```csharp
Yabbi.ShowAd(Yabbi.Interstitial, "placement_name");
```

### Видео с вознаграждением (rewarded video)

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

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

При работе с таким форматом используйте параметр `Yabbi.Rewarded`.

Вот пример вызова метода для показа рекламы такого формата.

```csharp
Yabbi.ShowAd(Yabbi.Rewarded, "placement_name");
```

Для того, чтобы узнать, выдавать пользователю награду, или нет, используйте событие `OnRewardedFinished`.

### Баннер 320x50 (banner)

Реклама показывается в нижней части экрана, содержит интерактивный баннер. По тапу происходит переход по ссылке, указанной рекламодателем.

При работе с таким форматом используйте параметр `Yabbi.Banner`.

Вот пример вызова метода для показа рекламы такого формата.

```csharp
Yabbi.showAd(Yabbi.Banner, "placement_name");
```

#### Автообновление рекламы в баннере

Для увеличения вашей прибыли мы разработали функцию автоматической смены контента в баннере.

Для настройки укажите интервал в секундах (минимум 10 секунд).

Если параметр не заполнен или равен нулю — контент не будет обновляться.

```csharp
var settings = new BannerSettings()
    .SetRefreshIntervalSeconds(10);
Yabbi.SetBannerCustomSettings(settings);
```

#### **Место для показа баннера**

SDK поддерживает пользовательское расположение баннера на экране.

* Снизу по центру — `BannerPosition.BOTTOM_CENTER`
* Снизу слева — `BannerPosition.BOTTOM_LEFT`
* Снизу справа — `BannerPosition.BOTTOM_RIGHT`
* Сверху по центру — `BannerPosition.TOP_CENTER`
* Сверху слева — `BannerPosition.TOP_LEFT`
* Сверху справа — `BannerPosition.TOP_RIGHT`

По умолчанию баннер позиционируется cнизу по центру, но вы можете изменить это поведение.

```csharp
var settings = new BannerSettings()
    .SetBannerPosition(BannerPosition.BOTTOM_CENTER);
Yabbi.SetBannerCustomSettings(settings);
```

#### **Показ кнопки закрытия**

По умолчанию кнопка закрытия баннера не показывается, но вы можете влючить её:

```csharp
var settings = new BannerSettings()
    .SetShowCloseButton(true);
Yabbi.SetBannerCustomSettings(settings);
```

## Методы плагина

Работа с рекламой сводится к работе с методами Yabbi Plugin.

1. `Initialize` (обязательный). Инициализирует плагин. Достаточно один раз вызвать этот метод при запуске приложения или перед первым обращением к методу `loadAd`.

```csharp
Yabbi.Initialize("publisher_id");
```

2. `LoadAd` (обязательный). Загружает рекламу с сервера. Обычно этот метод вызывается заранее, чтобы к моменту показа контент был загружен. В таком случае время ожидания пользователем показа рекламы будет минимальным.

```csharp
// загрузка рекламы формата Interstitial
Yabbi.LoadAd(Yabbi.Interstitial, "placement_name");
```

```csharp
// загрузка рекламы формата Rewarded video
Yabbi.LoadAd(Yabbi.Rewarded, "placement_name");
```

```csharp
// загрузка рекламы формата Banner
Yabbi.LoadAd(Yabbi.Banner, "placement_name");
```

3. `IsAdLoaded` (необязательный). Проверяет статус загрузки рекламного блока.

```csharp
Yabbi.IsAdLoaded(Yabbi.Interstitial, "placement_name");
```

```csharp
Yabbi.IsAdLoaded(Yabbi.Rewarded, "placement_name");
```

```csharp
Yabbi.IsAdLoaded(Yabbi.Banner, "placement_name");
```

Метод возвращает `true` либо `false`. При отрицательном ответе попытка показать рекламу ни к чему не приведёт.

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

```csharp
// проверка статуса загрузки и последующий запуск показа рекламы формата Interstitial
if (Yabbi.IsAdLoaded(Yabbi.Interstitial, "placement_name")) {    
    Yabbi.ShowAd(Yabbi.Interstitial, "placement_name");
}
```

4. `ShowAd` (обязательный). Вызывает показ рекламы при помощи плеера, встроенного в плагин.

```csharp
Yabbi.ShowAd(Yabbi.Interstitial, "placement_name");
```

```csharp
Yabbi.ShowAd(Yabbi.Rewarded, "placement_name");
```

```csharp
Yabbi.ShowAd(Yabbi.Banner, "placement_name");
```

5. `DestroyAd` (необязательный). Уничтожает рекламный контейнер. Вы можете работать с несколькими рекламными блоками одновременно, однако мы настоятельно рекомендуем уничтожать ненужные во избежание проблем с памятью и других неприятностей.

```csharp
// уничтожение рекламного контейнера с форматом Rewarded Video
Yabbi.DestroyAd(Yabbi.Rewarded, "placement_name");
```

6. `SetUserConsent` (необязательный). Предназначен для передачи статуса согласия пользователя на сбор, обработку и использование персональных данных. По умолчанию - `false`, т.е. пользователь не дал согласия на использование его данных в рекламных и иных целях.\
   \
   Рекомендуем вам использовать этот метод для повышения качества рекламной монетизации. Вы можете получать согласие самостоятельно, или воспользоваться нашим [Consent Manager](/yabbi-documentation/unity-plugin/ekran-polzovatelskogo-soglasiya.md).

## Использование нескольких рекламных блоков

Вы можете работать с несколькими рекламными блоками асинхронно, то есть вызывать методы с разными `placement_name` и форматами независимо друг от друга с помощью метода `LoadAd` асинхронно, то есть загружать несколько рекламных блоков одновременно.

## Отслеживание рекламных событий

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

Для отслеживания событий необходимо предоставить класс для работы.

Учтите, что рекламные события отрабатывают на любой рекламный блок.

Т.е. если вы вызываете загрузку 2 рекламных блоков одновременно, событие загрузки отработает 2 раза, для каждого блока.

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

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

{% tabs %}
{% tab title="Interstitial" %}

```csharp
class YourClassName : IInterstitialAdListener {
    public void OnInterstitialLoaded(AdPayload adPayload)
    {
        // Вызывается при загрузке рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnInterstitialLoadFailed(AdPayload adPayload, AdException error)
    {
        // Вызывается если при загрузке рекламы произошла ошибка
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
        // С помощью AdException error можно получить подробную информацию об ошибке
    }
    
    public void OnInterstitialShown(AdPayload adPayload)
    {
       // Вызывается при показе рекламы
       // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnInterstitialShowFailed(AdPayload adPayload, AdException error)
    {
        // Вызывается если при показе рекламы произошла ошибка
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
        // С помощью AdException error можно получить подробную информацию об ошибке
    }
    
    public void OnInterstitialClosed(AdPayload adPayload)
    {
        // Вызывается при закрытии рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
}
```

{% endtab %}

{% tab title="Rewarded Video" %}

```csharp
class YourClassName : IRewaredAdListener {
    public void OnRewaredLoaded(AdPayload adPayload)
    {
        // Вызывается при загрузке рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnRewardedLoadFailed(AdPayload adPayload, AdException error)
    {
        // Вызывется если при загрузке рекламы произошла ошибка
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
        // С помощью AdException error можно получить подробную информацию об ошибке
    }
    
    public void OnRewaredShown(AdPayload adPayload)
    {
        // Вызывается при показе рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnRewardedShowFailed(AdPayload adPayload, AdException error)
    {
        // Вызывается если при показе рекламы произошла ошибка
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
        // С помощью AdException error можно получить подробную информацию об ошибке
    }
    
    public void OnRewaredClosed(AdPayload adPayload)
    {
        // Вызывается при закрытии рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnRewardedVideoStarted(AdPayload adPayload)
    {
        // Вызывается когда рекламное видео начало воспроизводиться
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }

    public void OnRewardedVideoCompleted(AdPayload adPayload)
    {
        // Вызывается когда рекламное видео закончилось
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }

    public void OnUserRewarded(AdPayload adPayload)
    {
        // Тут вы можете выдать пользователю награду
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
}
```

{% endtab %}

{% tab title="Banner" %}

```csharp
class YourClassName : IBannerAdListener {
    public void OnBannerLoaded(AdPayload adPayload)
    {
        // Вызывается при загрузке рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnBannerLoadFailed(AdPayload adPayload, AdException error)
    {
        // Вызывается если при загрузке рекламы произошла ошибка
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
        // С помощью AdException error можно получить подробную информацию об ошибке
    }
    
    public void OnBannerShown(AdPayload adPayload)
    {
        // Вызывается при показе рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
    
    public void OnBannerShowFailed(AdPayload adPayload, AdException error)
    {
        // Вызывается если при показе рекламы произошла ошибка
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
        // С помощью AdException error можно получить подробную информацию об ошибке
    }
    
    public void OnBannerClosed(AdPayload adPayload)
    {
        // Вызывается при закрытии рекламы
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }

    public void OnBannerImpression(AdPayload adPayload)
    {
        // Фиксация факта показа баннера
        // С помощью AdPayload adPayload можно получить подробную информацию о запросе
    }
}
```

{% endtab %}
{% endtabs %}

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

{% tabs %}
{% tab title="Interstitial" %}

```csharp
Yabbi.SetInterstitialCallbacks(this);
```

{% endtab %}

{% tab title="Rewarded" %}

```csharp
Yabbi.SetRewardedCallbacks(this);
```

{% endtab %}

{% tab title="Banner" %}

```csharp
Yabbi.SetBannerCallbacks(this);
```

{% endtab %}
{% endtabs %}


---

# 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/rabota-s-reklamoi.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.
