Menu

Revenue Reporting

1. Firebase

The TopOn SDK supports real-time revenue acquisition for ads. You can obtain the eCPM value of the current ad by using onAdRevenuePaid() 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 handleFirebase() within the onAdRevenuePaid(ATAdInfo adInfo) for the following ad format:

Banner Ads

Report revenue in onAdRevenuePaid(ATAdInfo adInfo)ofATBannerView#setAdRevenueListener(). An example of the code is as below:

mBannerView.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

 

Native Ads

Report revenue in onAdRevenuePaid(ATAdInfo adInfo)ofNativeAd#setAdRevenueListener(). An example of the code is as below:

mNativeAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

 

Interstitial Ads

Report revenue in onAdRevenuePaid(ATAdInfo adInfo)ofATInterstitial#setAdRevenueListener(). An example of the code is as below:

mInterstitialAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

 

● Rewarded Ads

Report revenue in onAdRevenuePaid(ATAdInfo adInfo)ofATRewardVideoAd#setAdRevenueListener(). An example of the code is as below:

mRewardVideoAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

 

Splash Ads

Report revenue in onAdRevenuePaid(ATAdInfo adInfo)ofATSplashAd#setAdRevenueListener(). An example of the code is as below:

mSplashAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

 

2. Adjust

Refer to the above solution and call handleAdjustRevenueReport()inonAdRevenuePaid(ATAdInfo adInfo) 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()inonAdRevenuePaid(ATAdInfo adInfo) 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);
}
Previous
TopOn ADX reports OAID
Next
Revenue reporting for v6.3.70 and below
Last modified: 2025-07-18Powered by