Search...
Menu

Revenue Tracking

💡Tips

  • 🟢 This example uses interstitial ad format for demonstration. Other ad formats follow the same implementation logic
  • 🔵 Callback parameters are for reference only. Select appropriate parameters according to your business requirements

Firebase

  • ⚠️ When using Link AdMob to Firebase, avoid duplicate AdMob revenue reporting
  • The following sample code is for reference only. For detailed information, please refer to the official Firebase documentation
objective-c Copy
#import <FirebaseAnalytics/FIRAnalytics.h>

- (void)didPayRevenueForAd:(MCAdInfo *)ad {
    // Prevent duplicate AdMob reporting  
    // if ([adInfo.networkFirmName caseInsensitiveCompare:@"Admob"] == NSOrderedSame) {
    //    return;
    // }
    
    // Platform type determination
    NSString *adPlatform;
    switch (ad.mediationId) {
        case MCMediationIDTypeTopon:
            adPlatform = @"TopOn";
            break;
        case MCMediationIDTypeMax:
            adPlatform = @"Max";
            break;
        default:
            adPlatform = @"Your Platform Name";
            break;
    }

    // Revenue parameter configuration  
    NSDictionary *params = @{
        kFIRParameterAdPlatform: adPlatform,
        kFIRParameterAdSource: ad.networkName,
        kFIRParameterAdFormat: ad.format.label,
        kFIRParameterAdUnitName: ad.networkPlacementId,
        kFIRParameterValue: @(ad.revenue),
        kFIRParameterCurrency: ad.currency
    };

    [FIRAnalytics logEventWithName:kFIREventAdImpression parameters:params];
}

Adjust

  • The following sample code is for reference only. For detailed information, please refer to the official Adjust documentation
objective-c Copy
#import <AdjustSdk/Adjust.h>
#import <AdjustSdk/ADJAdRevenue.h>

- (void)didPayRevenueForAd:(MCAdInfo *)ad {
    // Platform type determination
    NSString *adPlatform;
    switch (ad.mediationId) {
        case MCMediationIDTypeTopon:
            adPlatform = @"TopOn";
            break;
        case MCMediationIDTypeMax:
            adPlatform = @"Max";
            break;
        default:
            adPlatform = @"Your Platform Name";
            break;
    }

    // Revenue parameter configuration  
    ADJAdRevenue *adjustAdRevenue = [[ADJAdRevenue alloc] initWithSource:adPlatform];
    [adjustAdRevenue setRevenue:ad.revenue currency:ad.currency];
    [adjustAdRevenue setAdRevenueNetwork:ad.networkName];
    [adjustAdRevenue setAdRevenueUnit:ad.networkPlacementId];
    [adjustAdRevenue setAdRevenuePlacement:ad.mediationPlacementId];

    [Adjust trackAdRevenue:adjustAdRevenue];
}

AppsFlyer

  • The following sample code is for reference only. For detailed information, please refer to the official AppsFlyer documentation
objective-c Copy
#import <AppsFlyerLib/AppsFlyerLib.h>

- (void)didPayRevenueForAd:(MCAdInfo *)ad {
    // Platform type determination
    AppsFlyerAdRevenueMediationNetworkType adPlatform;
    switch (ad.mediationId) {
        case MCMediationIDTypeTopon:
            adPlatform = AppsFlyerAdRevenueMediationNetworkTypeTopon;
            break;
        case MCMediationIDTypeMax:
            adPlatform = AppsFlyerAdRevenueMediationNetworkTypeApplovinMax;
            break;
        default:
            adPlatform = AppsFlyerAdRevenueMediationNetworkTypeCustom;
            break;
    }
      
    // Revenue parameter configuration 
    AFAdRevenueData *adRevenueData = [[AFAdRevenueData alloc] initWithMonetizationNetwork:ad.networkName
                                                                         mediationNetwork:adPlatform
                                                                      currencyIso4217Code:ad.currency
                                                                             eventRevenue:@(ad.revenue)];
    NSDictionary *additionalParameters = @{
        kAppsFlyerAdRevenueCountry: ad.country,
        kAppsFlyerAdRevenueAdUnit: ad.networkPlacementId,
        kAppsFlyerAdRevenueAdType: ad.format.label,
        kAppsFlyerAdRevenuePlacement: ad.mediationPlacementId
    };


    [[AppsFlyerLib shared] logAdRevenue:adRevenueData additionalParameters:additionalParameters];
}
Previous
Customized Mediation Adapter
Next
Privacy Policy
Last modified: 2025-06-21Powered by