ILRD

通过展示层级收入数据 (ILRD),您可以追踪并收集广告数据。

父类

方法

InterstitialAdDelegate

didTrackImpression

NativeAdDelegate

didTrackImpression

RewardedAdDelegate

didTrackImpression

AdViewDelegate

didTrackImpression

每个方法都包含一个 ImpressionData 参数,并带有一个 rawData 方法。此方法返回一个包含 ILRD 的 JSON 字符串(请参阅下表)。

备注

didTrackImpressionWithData 方法仅在统计广告展示次数后触发。

  1. 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)")
        }
    }
    
  2. Callbacks 用于支持内置 Logger 的不同广告代码格式:

    // MARK:- 插播广告
    func interstitialAd(_ ad: InterstitialAd, didTrackImpressionWith impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Interstitial")
    }
    
    // MARK:- 激励广告
    func rewardedAd(_ ad: RewardedAd, didTrackImpressionWith impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Rewarded")
    }
    
    // MARK:- 原生广告
    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:- 横幅广告
    func adView(_ adView: AdView, didTrackImpression impressionData: ImpressionData?) {
        logImpression(impressionData, tag: "Banner")
    }
    

可用数据

您可以解析 rawData 以获取下列信息:

键值

类型

描述

ad_unit_id

字符串

唯一的 ad unit ID

adType

字符串

广告类别:

  • 内嵌或粘性横幅广告。

  • 插屏广告。

  • 原生广告。

  • 激励广告。

  • 开屏广告。

currency

字符串

广告网络使用的货币。

revenue

字符串

以广告网络货币计算的展示收入。使用 currency 字段中指定的货币。

revenueUSD

字符串

单次展示的收入,以美元为单位。

precision

字符串

revenue 值的准确度。可接受的值:

  • publisher_defined:考虑聚合界面 CPM 底价的数值。

  • estimated:基于自动策略生成的数值。

network.name

字符串

提供本次展示机会的广告网络的名称。

network.ad_unit_id

字符串

投放广告的网络中的唯一 ad unit ID。

上一篇
下一篇