---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/easy/integration/ios/advanced-settings/ilrd.md
  - https://ads.yandex.com/helpcenter/ru/easy/integration/ios/advanced-settings/ilrd.md
  - https://ads.yandex.com/helpcenter/zh/easy/integration/ios/advanced-settings/ilrd.md
  - href: ru/easy/integration/ios/advanced-settings/ilrd.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/ru/llms.txt

# ILRD

<!-- source: ru/easy/_includes/sdk-guide.md -->
**ILRD (Impression Level revenue data)** — функционал для отслеживания и сбора данных из рекламы.
<!-- endsource: ru/easy/_includes/sdk-guide.md -->

#|
||

**Родительский класс**

|

**Метод**

||
||

InterstitialAdDelegate

|

`didTrackImpression`

||
||

NativeAdDelegate

|

`didTrackImpression`

||
||

RewardedAdDelegate

|

`didTrackImpression`

||
||

BannerAdViewDelegate

|

`bannerAdView(_:didTrackImpression:)`

||
|#

У каждого из этих методов есть параметр `ImpressionData`, который имеет единственный метод `rawData`, возвращающий JSON string с ILRD (см. [таблицу ниже](#data)).

{% note info %}

`didTrackImpressionWithData` срабатывает только после того, как рекламный показ был засчитан.

{% endnote %}

1. **Logger** в виде чистой функции:

    ```Swift
    struct NetworkData: Decodable {
        let name: String
        let ad_unit_id: String
    }

    struct ImpressionDataModel: Decodable {
        let ad_unit_id: String
        let adType: String
        let currency: String
        let revenue: String
        let revenueUSD: String
        let precision: String
        let network: NetworkData
    }

    func logImpression(_ impressionData: ImpressionData?, tag: String = "Ad") {
        guard let raw = impressionData?.rawData else {
            print("[\(tag)] Impression: no data")
            return
        }
        
        guard let jsonData = raw.data(using: .utf8) else {
            print("[\(tag)] Impression: invalid encoding")
            return
        }
        
        do {
            let parsed = try JSONDecoder().decode(ImpressionDataModel.self, from: jsonData)
            
            print("""
            [\(tag) Impression]
            ├─ adUnitId: \(parsed.ad_unit_id)
            ├─ adType: \(parsed.adType)
            ├─ currency: \(parsed.currency)
            ├─ revenue: \(parsed.revenue)
            ├─ revenueUSD: \(parsed.revenueUSD)
            ├─ precision: \(parsed.precision)
            ├─ networkName: \(parsed.network.name)
            └─ networkAdUnitId: \(parsed.network.ad_unit_id)
            """)
            
        } catch {
            print("[\(tag)] Impression parse error: \(error.localizedDescription)")
            print("[\(tag)] Raw: \(raw)")
        }
    }
    ```

1. **Callback(s)** у разных форматов вызова рекламы, в которых можно использовать готовый **Logger**:

    ```Swift
    // MARK: - Interstitial
    func interstitialAd(_ ad: InterstitialAd, didTrackImpressionWith impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Interstitial")
    }

    // MARK: - Rewarded
    func rewardedAd(_ ad: RewardedAd, didTrackImpressionWith impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Rewarded")
    }

    // MARK: - Native
    func nativeAd(_ ad: NativeAd, didTrackImpressionWith impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Native")
    }

    // MARK: - AppOpen
    func appOpenAd(_ ad: AppOpenAd, didTrackImpressionWith impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "AppOpen")
    }

    // MARK: - Banner
    func adView(_ adView: AdView, didTrackImpression impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Banner")
    }
    ```


#### Доступные данные {#data}

Парсинг `rawData` позволит получить следующие данные:

#|
||

**Ключ**

|

**Тип**

|

**Описание**

||
||

`ad_unit_id`

|

string

|

Уникальный идентификатор ad unit ID.

||
||

`adType`

|

string

|

Тип рекламного объявления:

* баннер (inline/sticky);

* межстраничная реклама;

* нативная реклама;

* реклама с вознаграждением;

* реклама при открытии приложения.

||
||

`currency`

|

string

|

Валюта рекламной сети.

||
||

`revenue`

|

string

|

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

||
||

`revenueUSD`

|

string

|

Доход за показ, конвертированный в USD.

||
||

`precision`

|

string

|

Точность значения `revenue`. Допустимые значения:

* `publisher_defined` — значение с учетом порога CPM из интерфейса медиации;

* `estimated` — значение с учетом автостратегий.

||
||

`network.name`

|

string

|

Название рекламной сети, совершившей показ рекламы.

||
||

`network.ad_unit_id`

|

string

|

Уникальный идентификатор ad unit ID в рекламной сети, которая совершила показ.

||
|#

