ILRD
ILRD (Impression Level revenue data) — функционал для отслеживания и сбора данных из рекламы.
|
Родительский класс |
Метод |
|
InterstitialAdDelegate |
|
|
NativeAdDelegate |
|
|
RewardedAdDelegate |
|
|
AdViewDelegate |
|
У каждого из этих методов есть параметр 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 в рекламной сети, которая совершила показ. |