Hướng dẫn log revenue lên Firebase, Appsflyer, Adjust

1. Các định dạng quảng cáo của IronSource (LevelPlay)

Lắng nghe sự kiện (dùng chung cho tất cả các định dạng quảng cáo: banner, interstitial, rewarded)

IronSourceEvents.onImpressionDataReadyEvent += OnImpressionDataReadyEvent;

Thực hiện log revenue khi sự kiện trả về:

private static void OnImpressionDataReadyEvent(IronSourceImpressionData impressionData)
{
    if (impressionData?.revenue == null) return;
    
    Firebase.Analytics.Parameter[] adParameters = {
        new Firebase.Analytics.Parameter("ad_platform", "ironSource"),
        new Firebase.Analytics.Parameter("ad_source", impressionData.adNetwork),
        new Firebase.Analytics.Parameter("ad_unit_name", impressionData.instanceName),
        new Firebase.Analytics.Parameter("ad_format", impressionData.adUnit),
        new Firebase.Analytics.Parameter("currency","USD"),
        new Firebase.Analytics.Parameter("value", impressionData.revenue.Value)
    };
    FirebaseAnalytics.LogEvent("ad_impression", adParameters);
    
//Appsflyer 
    var dic = new Dictionary<string, string>
    {
        { "ad_unit_name", impressionData.instanceName },
        { "ad_format", impressionData.adUnit }
    };
            
    //Version >= 6.15.0 (dùng trực tiếp SDK log)
    var logRevenue = new AFAdRevenueData(impressionData.adNetwork, MediationNetwork.IronSource, "USD", impressionData.revenue.Value);
        AppsFlyer.logAdRevenue(logRevenue, dic);
        
    //Version <= 6.14.2 (phải tích hợp thêm Ad Revenue SDK Connector để log)
    AppsFlyerAdRevenue.logAdRevenue(impressionData.adNetwork, AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeIronSource, 
        impressionData.revenue.Value, "USD", dic);

//Nếu dùng Adjust (Nếu dùng appsflyer thì bỏ qua phần này)
    AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceIronSource);
    adjustAdRevenue.setRevenue(impressionData.revenue.Value, "USD");
    adjustAdRevenue.setAdRevenueNetwork(impressionData.adNetwork);
    adjustAdRevenue.setAdRevenueUnit(impressionData.adUnit);
    adjustAdRevenue.setAdRevenuePlacement(impressionData.placement);
    Adjust.trackAdRevenue(adjustAdRevenue);
}

2. Các định dạng quảng cáo của Admob:

Các định dạng quảng cáo của admob đều trả về micro value nên trước log phải * 0.000001 để đưa về giá trị tính theo USD. Dưới đây là ví dụ log revenue cho định dạng Collapsible Banner của Admob. Các định dạng khác log tương tự:

// Raised when the ad is estimated to have earned money. 
_bannerView.OnAdPaid += (AdValue adValue) =>
{
    if (adValue == null) return;    
    double value = adValue.Value * 0.000001f;
    
    Firebase.Analytics.Parameter[] adParameters = {
        new Firebase.Analytics.Parameter("ad_source", "admob"),
        new Firebase.Analytics.Parameter("ad_format", "collapsible_banner"),
        new Firebase.Analytics.Parameter("currency","USD"),
        new Firebase.Analytics.Parameter("value", value)
    };
    FirebaseAnalytics.LogEvent("ad_impression", adParameters);
    
//Appsflyer
    var dic = new Dictionary<string, string>
    {
        { "ad_format", "collapsible_banner" }
    };
            
    //Version >= 6.15.0 (dùng trực tiếp SDK log)
    var logRevenue = new AFAdRevenueData("Admob", MediationNetwork.GoogleAdMob, "USD", value);
        AppsFlyer.logAdRevenue(logRevenue, dic);
    
    //Version <= 6.14.2 (phải tích hợp thêm Ad Revenue SDK Connector để log)
    AppsFlyerAdRevenue.logAdRevenue("Admob", AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeGoogleAdMob, 
        value, "USD", dic);
        
//Nếu dùng Adjust (Nếu dùng appsflyer thì bỏ qua phần này)
    AdapterResponseInfo loadedAdapterResponseInfo = _bannerView.GetResponseInfo().GetLoadedAdapterResponseInfo();
    AdjustAdRevenue adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceAdMob);
    adRevenue.setRevenue(value, "USD");
    adRevenue.setAdRevenueNetwork(loadedAdapterResponseInfo.AdSourceName);
    Adjust.trackAdRevenue(adRevenue);
};

3. Các định dạng quảng cáo của Max Mediation:

Lắng nghe sự kiện OnAdRevenuePaidEvent cho những định dạng được sử dụng (định dạng nào không sử dụng thì bỏ qua):

MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;

Thực hiện log revenue khi sự kiện trả về. Lưu ý: giá trị của revenue trả về có thể = -1 trong trường hợp bị lỗi. Nên cần phải có đoạn code check revenue > 0 trước khi log.

private void OnAdRevenuePaidEvent(string message, MaxSdkBase.AdInfo adInfo)
{
    if (adInfo == null) return;
    if (adInfo.Revenue < 0) return;

    Firebase.Analytics.Parameter[] adParameters = {
        new Firebase.Analytics.Parameter("ad_platform", "Applovin"),
        new Firebase.Analytics.Parameter("ad_source", adInfo.NetworkName),
        new Firebase.Analytics.Parameter("ad_unit_name", adInfo.AdUnitIdentifier),
        new Firebase.Analytics.Parameter("ad_format", adInfo.AdFormat),
        new Firebase.Analytics.Parameter("currency","USD"),
        new Firebase.Analytics.Parameter("value", adInfo.Revenue)
    };
    FirebaseAnalytics.LogEvent("ad_impression", adParameters);

//Appsflyer                
    var dic = new Dictionary<string, string>
    {
        { "ad_unit_name", adInfo.AdUnitIdentifier },
        { "ad_format", adInfo.AdFormat }
    };
        
    //Version >= 6.15.0 (dùng trực tiếp SDK log)
    var logRevenue = new AFAdRevenueData(adInfo.NetworkName, MediationNetwork.ApplovinMax, "USD", adInfo.Revenue);
        AppsFlyer.logAdRevenue(logRevenue, dic);        
    
    //Version <= 6.14.2 (phải tích hợp thêm Ad Revenue SDK Connector để log)
    AppsFlyerAdRevenue.logAdRevenue(adInfo.NetworkName, AppsFlyerAdRevenueMediationNetworkType.AppsFlyerAdRevenueMediationNetworkTypeApplovinMax, 
        adInfo.Revenue, "USD", dic);

//Nếu dùng Adjust (Nếu dùng appsflyer thì bỏ qua phần này)
    var adRevenue = new AdjustAdRevenue(AdjustConfig.AdjustAdRevenueSourceAppLovinMAX);
    adRevenue.setRevenue(adInfo.Revenue, "USD");
    adRevenue.setAdRevenueNetwork(adInfo.NetworkName);
    adRevenue.setAdRevenueUnit(adInfo.AdUnitIdentifier);
    adRevenue.setAdRevenuePlacement(adInfo.Placement);
    Adjust.trackAdRevenue(adRevenue);                
}

Last updated