ILRD
ILRD (Impression Level revenue data) — функционал для отслеживания и сбора данных из рекламы.
|
Родительский класс |
Метод |
|
InterstitialAdDelegate |
|
|
NativeAdDelegate |
|
|
RewardedAdDelegate |
|
|
BannerAdViewDelegate |
|
У каждого из этих методов есть параметр ImpressionData, который имеет единственный метод rawData, возвращающий JSON string с ILRD (см. таблицу ниже).
Примечание
didTrackImpressionWithData срабатывает только после того, как рекламный показ был засчитан.
-
Logger в виде чистой функции:
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)") } } -
Callback(s) у разных форматов вызова рекламы, в которых можно использовать готовый Logger:
// 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") }
Доступные данные
Парсинг rawData позволит получить следующие данные:
|
Ключ |
Тип |
Описание |
|
|
string |
Уникальный идентификатор ad unit ID. |
|
|
string |
Тип рекламного объявления:
|
|
|
string |
Валюта рекламной сети. |
|
|
string |
Доход за показ в валюте рекламной сети. Используется значение валюты из поля |
|
|
string |
Доход за показ, конвертированный в USD. |
|
|
string |
Точность значения
|
|
|
string |
Название рекламной сети, совершившей показ рекламы. |
|
|
string |
Уникальный идентификатор ad unit ID в рекламной сети, которая совершила показ. |