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

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

### Идентификатор паблишера (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`.

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

```javascript
Yabbi.showAd(Yabbi.INTERSTITIAL, "placement_name");
```

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

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

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

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

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

```javascript
Yabbi.showAd(Yabbi.REWARDED, "placement_name");
```

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

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

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

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

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

```javascript
Yabbi.showAd(Yabbi.BANNER, "placement_name");
```

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

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

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

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

```javascript
const refreshIntervalSeconds = 10;
Yabbi.setBannerCustomSettings(_, __, refreshIntervalSeconds);
```

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

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

Определите позицию баннера через `BannerSettings`

Нижняя часть экрана:

```javascript
const bannerPosition = Yabbi.BANNER_POSITION_BOTTOM;
const refreshIntervalSeconds = 10;
Yabbi.setBannerCustomSettings(_, bannerPosition, refreshIntervalSeconds);
```

Верхняя часть экрана:

```javascript
const bannerPosition = Yabbi.BANNER_POSITION_TOP;
const refreshIntervalSeconds = 10;
Yabbi.setBannerCustomSettings(_, bannerPosition, refreshIntervalSeconds);
```

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

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

```javascript
const showCloseButton = true;
const bannerPosition = Yabbi.BANNER_POSITION_BOTTOM;
const refreshIntervalSeconds = 10;

Yabbi.setBannerCustomSettings(
  showCloseButton,
  bannerPosition,
  refreshIntervalSeconds
);
```

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

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

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

```javascript
Yabbi.initialize("publisher_id");
```

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

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

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

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

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

```javascript
Yabbi.isAdLoaded(Yabbi.INTERSTITIAL, "placement_name");
```

```javascript
Yabbi.isAdLoaded(Yabbi.REWARDED, "placement_name");
```

```javascript
Yabbi.isAdLoaded(Yabbi.BANNER, "placement_name");
```

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

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

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

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

```javascript
Yabbi.showAd(Yabbi.INTERSTITIAL, "placement_name");
```

```javascript
Yabbi.showAd(Yabbi.REWARDED, "placement_name");
```

```javascript
Yabbi.showAd(Yabbi.BANNER, "placement_name");
```

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

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

6. `setUserConsent` (необязательный). Предназначен для передачи статуса согласия пользователя на сбор, обработку и использование персональных данных. По умолчанию - `false`, т.е. пользователь не дал согласия на использование его данных в рекламных и иных целях.\
   \
   Рекомендуем вам использовать этот метод для повышения качества рекламной монетизации.

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

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

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

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

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

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

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

Вот примеры установки существующих рекламных событий.

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

```javascript
window.addEventListener('onInterstitialLoaded', function (adInfo) {
    // Вызывается при загрузке рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onInterstitialLoadFailed', function (adInfo) {
    // Вызывается если при загрузке рекламы произошла ошибка
    // Узнайте подробнее об ошибке используя параметр adInfo.error
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onInterstitialShown', function (adInfo) {
    // Вызывается при показе рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onInterstitialShowFailed', function (adInfo) {
    // Вызывается если при показе рекламы произошла ошибка
    // Узнайте подробнее об ошибке используя параметр adInfo.error
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onInterstitialClosed', function (adInfo) {
    // Вызывается при закрытии рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
```

{% endtab %}

{% tab title="Rewarded Video" %}

```javascript
window.addEventListener('onRewardedLoaded', function (adInfo) {
    // Вызывается при загрузке рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onRewardedLoadFailed', function (adInfo) {
    // Вызывется если при загрузке рекламы произошла ошибка
    // Узнайте подробнее об ошибке используя параметр adInfo.error
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onRewardedShown', function (adInfo) {
    // Вызывается при показе рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onRewardedShowFailed', function (adInfo) {
    // Вызывется если при показе рекламы произошла ошибка
    // Узнайте подробнее об ошибке используя параметр adInfo.error
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onRewardedClosed', function (adInfo) {
    // Вызывается при закрытии рекламы
});
window.addEventListener('onRewardedVideoStarted', function (adInfo) {
    // Вызывается когда рекламное видео начало воспроизводиться
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onRewardedVideoCompleted', function (adInfo) {
    // Вызывается когда рекламное видео закончилось
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onUserRewarded', function (adInfo) {
    // Тут вы можете выдать пользователю награду
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
```

{% endtab %}

{% tab title="Banner" %}

```javascript
window.addEventListener('onBannerLoaded', function (adInfo) {
    // Вызывается при загрузке рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onBannerLoadFailed', function (adInfo) {
    // Вызывается если при загрузке рекламы произошла ошибка
    // Узнайте подробнее об ошибке используя параметр adInfo.error
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onBannerShown', function (adInfo) {
    // Вызывается при показе рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onBannerShowFailed', function (adInfo) {
    // Вызывается если при показе рекламы произошла ошибка
    // Узнайте подробнее об ошибке используя параметр adInfo.error
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
window.addEventListener('onBannerClosed', function (adInfo) {
    // Вызывается при закрытии рекламы
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
 window.addEventListener('onBannerImpression', function (adInfo) {
    // Фиксация факта показа баннера
    // С помощью объекта adInfo можно получить подробную информацию о запросе
});
```

{% 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/cordova-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.
