💡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
- ⚠️ 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
#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];
}
- The following sample code is for reference only. For detailed information, please refer to the official Adjust documentation
#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];
}
- The following sample code is for reference only. For detailed information, please refer to the official AppsFlyer documentation
#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];
}