The TopOn SDK supports obtaining the revenue of real-time displayed ads. You can listen to the
onAdRevenuePaid()callback to get the eCPM value of the currently displayed ad to record the Google Analytics ad_impression event.
‼️ Note: When using Firebase with AdMob integrated in association, AdMob's non-bidding sources do not need to be reported.
public void handleFirebase(ATAdInfo adInfo) {
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
if (adInfo != null) {
// When using Firebase with AdMob integrated in association, AdMob's non-bidding sources do not need to be reported.
// if (adInfo.getNetworkFirmId() == 2 && adInfo.isHeaderBiddingAdsource() == 0) return;
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
Bundle params = new Bundle();
// Revenue parameter configuration
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);
}
}
public void handleFirebase(TUAdInfo adInfo) {
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
if (adInfo != null) {
// When using Firebase with AdMob integrated in association, AdMob's non-bidding sources do not need to be reported.
if (adInfo.getNetworkFirmId() == 2 && adInfo.isHeaderBiddingAdsource() == 0) return;
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
Bundle params = new Bundle();
// Revenue parameter configuration
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);
}
}
Call the handleFirebase() method in the onAdRevenuePaid(ATAdInfo adInfo) callback of the following ad types:
Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATBannerView#setAdRevenueListener(). The sample code is as follows:
mBannerView.setAdRevenueListener(new ATAdRevenueListener() {
@Override
public void onAdRevenuePaid(ATAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TUBannerView#setAdRevenueListener(). The sample code is as follows:
mBannerView.setAdRevenueListener(new TUAdRevenueListener() {
@Override
public void onAdRevenuePaid(TUAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of NativeAd#setAdRevenueListener(). The sample code is as follows:
mNativeAd.setAdRevenueListener(new ATAdRevenueListener() {
@Override
public void onAdRevenuePaid(ATAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of NativeAd#setAdRevenueListener(). The sample code is as follows:
mNativeAd.setAdRevenueListener(new TUAdRevenueListener() {
@Override
public void onAdRevenuePaid(TUAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATRewardVideoAd#setAdRevenueListener(). The sample code is as follows:
mRewardVideoAd.setAdRevenueListener(new ATAdRevenueListener() {
@Override
public void onAdRevenuePaid(ATAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TURewardVideoAd#setAdRevenueListener(). The sample code is as follows:
mRewardVideoAd.setAdRevenueListener(new TUAdRevenueListener() {
@Override
public void onAdRevenuePaid(TUAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATInterstitial#setAdRevenueListener(). The sample code is as follows:
mInterstitialAd.setAdRevenueListener(new ATAdRevenueListener() {
@Override
public void onAdRevenuePaid(ATAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TUInterstitial#setAdRevenueListener(). The sample code is as follows:
mInterstitialAd.setAdRevenueListener(new TUAdRevenueListener() {
@Override
public void onAdRevenuePaid(TUAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATSplashAd#setAdRevenueListener(). The sample code is as follows:
mSplashAd.setAdRevenueListener(new ATAdRevenueListener() {
@Override
public void onAdRevenuePaid(ATAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TUSplashAd#setAdRevenueListener(). The sample code is as follows:
mSplashAd.setAdRevenueListener(new TUAdRevenueListener() {
@Override
public void onAdRevenuePaid(TUAdInfo adInfo) {
handleFirebase(adInfo);
}
});
Refer to Firebase above. Call the following handleAdjustRevenueReport method in the onAdRevenuePaid(ATAdInfo adInfo) of each ad type:
public void handleAdjustRevenueReport(ATAdInfo adInfo) {
// Supported in adjust 4.38.1 and above
AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue( "topon_sdk");
adjustAdRevenue.setRevenue(adInfo.getPublisherRevenue(), adInfo.getCurrency());
// Optional configuration
adjustAdRevenue.setAdRevenueNetwork(String.valueOf(adInfo.getNetworkFirmId()));
adjustAdRevenue.setAdRevenueUnit(adInfo.getAdsourceId());
adjustAdRevenue.setAdRevenuePlacement(adInfo.getPlacementId());
// Send revenue data
Adjust.trackAdRevenue(adjustAdRevenue);
}
Refer to Firebase above. Call the following handleAdjustRevenueReport method in the onAdRevenuePaid(TUAdInfo adInfo) of each ad type:
public void handleAdjustRevenueReport(TUAdInfo adInfo) {
// Supported in adjust 4.38.1 and above
AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue( AdjustConfig.AD_REVENUE_TOPON);
adjustAdRevenue.setRevenue(adInfo.getPublisherRevenue(), adInfo.getCurrency());
// Optional configuration
adjustAdRevenue.setAdRevenueNetwork(String.valueOf(adInfo.getNetworkFirmId()));
adjustAdRevenue.setAdRevenueUnit(adInfo.getAdsourceId());
adjustAdRevenue.setAdRevenuePlacement(adInfo.getPlacementId());
// Send revenue data
Adjust.trackAdRevenue(adjustAdRevenue);
}
Refer to Firebase above. Call the following handleAppsFlyerRevenueReport method in the onAdRevenuePaid(ATAdInfo adInfo) of each ad type:
public void handleAppsFlyerRevenueReport(ATAdInfo adInfo) {
// v6.3.10+
String monetizationNetwork = adInfo.getNetworkName();
Currency currency = Currency.getInstance(Locale.US);
if ("CNY".equalsIgnoreCase(adInfo.getCurrency())) {
currency = Currency.getInstance(Locale.CHINA);
}
Map customParams = new HashMap<>();
AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, MediationNetwork.Topon, currency, adInfo.getPublisherRevenue(), customParams);
}
Refer to Firebase above. Call the following handleAppsFlyerRevenueReport method in the onAdRevenuePaid(TUAdInfo adInfo) of each ad type:
public void handleAppsFlyerRevenueReport(TUAdInfo adInfo) {
// v6.3.10+
String monetizationNetwork = adInfo.getNetworkName();
Currency currency = Currency.getInstance(Locale.US);
if ("CNY".equalsIgnoreCase(adInfo.getCurrency())) {
currency = Currency.getInstance(Locale.CHINA);
}
Map customParams = new HashMap<>();
AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, MediationNetwork.Topon, currency, adInfo.getPublisherRevenue(), customParams);
}