1. Firebase
The TopOn SDK supports real-time revenue acquisition for ads. You can obtain the eCPM value of the current ad by using ad show callback to record the ad_impression event in Google Analytics.
‼️ Note: When linking Firebase with AdMob mediation, non-bidding sources from AdMob do not require reporting.
public void handleFirebase(ATAdInfo adInfo) {
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
if (adInfo != null) {
// When linking Firebase with AdMob mediation, non-bidding sources from AdMob do not require reporting.
if (adInfo.getNetworkFirmId() == 2 && adInfo.isHeaderBiddingAdsource() == 0) return;
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
Bundle params = new Bundle();
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "TopOn");
params.putString(FirebaseAnalytics.Param.AD_SOURCE, adInfo.getNetworkName());
params.putString(FirebaseAnalytics.Param.AD_FORMAT, adInfo.getFormat());
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, adInfo.getNetworkPlacementId());
params.putDouble(FirebaseAnalytics.Param.VALUE, adInfo.getPublisherRevenue());
params.putString(FirebaseAnalytics.Param.CURRENCY, adInfo.getCurrency());
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
}
}
Please call ad show callback within the onAdRevenuePaid(ATAdInfo adInfo)
for the following ad format:
● Banner Ads
Report revenue in onBannerShow()
andonBannerAutoRefreshed()
ofATBannerView#setAdRevenueListener()
. An example of the code is as below:
@Override
public void onBannerShow(ATAdInfo atAdInfo) {
handleFirebase(atAdInfo);
}
@Override
public void onBannerAutoRefreshed(ATAdInfo adInfo) {
handleFirebase(atAdInfo);
}
● Native Ads
Report revenue inonAdImpressed()
ofNativeAd#setNativeEventListener()
. An example of the code is as below:
@Override
public void onAdImpressed(ATNativeAdView view, ATAdInfo atAdInfo) {
handleFirebase(atAdInfo);
}
● Interstitial Ads
Report revenue inonInterstitialAdShow()
ofATInterstitial#setAdListener
. An example of the code is as below:
@Override
public void onInterstitialAdShow(ATAdInfo atAdInfo) {
handleFirebase(atAdInfo);
}
● Rewarded Ads
Report revenue onRewardedVideoAdPlayStart()
ofATRewardVideoAd#setAdListener
. An example of the code is as below:
@Override
public void onRewardedVideoAdPlayStart(ATAdInfo atAdInfo) {
handleFirebase(atAdInfo);
}
● Splash Ads
Report revenue onAdShow()
ofATSplashAd#setAdListener
. An example of the code is as below:
@Override
public void onAdShow(ATAdInfo atAdInfo) {
handleFirebase(atAdInfo);
}
2. Adjust
Refer to the above solution and call handleAdjustRevenueReport()
in ad show callback for each ad format:
public void handleAdjustRevenueReport(ATAdInfo atAdInfo) {
AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue( AdjustConfig.AD_REVENUE_TOPON);
adjustAdRevenue.setRevenue(atAdInfo.getPublisherRevenue(), atAdInfo.getCurrency());
// option
adjustAdRevenue.setAdRevenueNetwork(String.valueOf(atAdInfo.getNetworkFirmId()));
adjustAdRevenue.setAdRevenueUnit(atAdInfo.getAdsourceId());
adjustAdRevenue.setAdRevenuePlacement(atAdInfo.getPlacementId());
// report revenue
Adjust.trackAdRevenue(adjustAdRevenue);
}
3. AppsFlyer
Refer to the above solution and call handleAppsFlyerRevenueReport()
in ad show callback for each ad format:
public void handleAppsFlyerRevenueReport(ATAdInfo atAdInfo) {
//before v6.3.10
//String monetizationNetwork = atAdInfo.getNetworkFirmId();
//v6.3.10+
String monetizationNetwork = atAdInfo.getNetworkName();
Currency currency = Currency.getInstance(Locale.US);
if ("CNY".equalsIgnoreCase(atAdInfo.getCurrency())) {
currency = Currency.getInstance(Locale.CHINA);
}
Map customParams = new HashMap<>();
AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, MediationNetwork.Topon, currency, atAdInfo.getPublisherRevenue(), customParams);
}