Android 展示级收入集成
集成展示量级别收入(ILR) SDK API 可捕获每个展示量的实时广告收入数据,从而实现详细的 Monetization 见解并与第三方数据分析服务平台无缝集成。
阅读时间5 分钟最后更新于 2 天前
先决条件
确保已将 LevelPlay SDK 9.5.0+ 正确集成到应用程序中。请参阅 Android 集成核对表。
实现 LevelPlayImpressionDataListener
LevelPlay SDK 会触发回传以通知您显示的广告。LevelPlayImpressionDataListener 是一个可选监听器,可以实现该监听器来接收展示数据。此监听器将为您提供有关所有广告单位的信息,并且您可以使用展示量收入来识别不同的广告服务。
要将 LevelPlayImpressionDataListener 添加到应用程序中,请在初始化 LevelPlay SDK 之前声明监听器,以避免任何信息丢失。
public static void addImpressionDataListener(LevelPlayImpressionDataListener listener)
LevelPlay SDK 将通知您的监听器与展示数据相关的成功回传:
public static void addImpressionDataListener(ImpressionDataListener listener){ /** 成功显示广告并记录展示数据时调用 **/ }
设置印象监听器
实现并通过调用 在每个广告对象上进行设置。在构建广告对象之后以及加载或显示广告对象之前立即附加广告对象,这样就不会错过展示。每个监听器仅接收其所挂的实例的展示。
LevelPlayImpressionDataListenersetImpressionDataListener()Java
import com.unity3d.mediation.impression.LevelPlayImpressionData;import com.unity3d.mediation.impression.LevelPlayImpressionDataListener;// InterstitialLevelPlayInterstitialAd interstitialAd = new LevelPlayInterstitialAd("adUnitId");interstitialAd.setImpressionDataListener(new LevelPlayImpressionDataListener() { @Override public void onImpressionSuccess(LevelPlayImpressionData impressionData) { Log.d(TAG, "Interstitial onImpressionSuccess: " + impressionData); }});// RewardedLevelPlayRewardedAd rewardedAd = new LevelPlayRewardedAd("adUnitId");rewardedAd.setImpressionDataListener(new LevelPlayImpressionDataListener() { @Override public void onImpressionSuccess(LevelPlayImpressionData impressionData) { Log.d(TAG, "Rewarded onImpressionSuccess: " + impressionData); }});// BannerLevelPlayBannerAdView bannerAdView = new LevelPlayBannerAdView(this, "adUnitId");bannerAdView.setImpressionDataListener(new LevelPlayImpressionDataListener() { @Override public void onImpressionSuccess(LevelPlayImpressionData impressionData) { Log.d(TAG, "Banner onImpressionSuccess: " + impressionData); }});
科特林
import com.unity3d.mediation.impression.LevelPlayImpressionDataimport com.unity3d.mediation.impression.LevelPlayImpressionDataListener// Interstitialval interstitialAd = LevelPlayInterstitialAd("adUnitId")interstitialAd.setImpressionDataListener(object :LevelPlayImpressionDataListener { override fun onImpressionSuccess(impressionData:LevelPlayImpressionData) { Log.d(TAG, "Interstitial onImpressionSuccess: $impressionData") }})// Rewardedval rewardedAd = LevelPlayRewardedAd("adUnitId")rewardAd.setImpressionDataListener(object :LevelPlayImpressionDataListener { override fun onImpressionSuccess(impressionData:LevelPlayImpressionData) { Log.d(TAG, "Rewarded onImpressionSuccess: $impressionData") }})// Bannerval bannerAdView = LevelPlayBannerAdView(this, "adUnitId")bannerAdView.setImpressionDataListener(object :LevelPlayImpressionDataListener { override fun onImpressionSuccess(impressionData:LevelPlayImpressionData) { Log.d(TAG, "Banner onImpressionSuccess: $impressionData") }})
删除展示数据监听器
要停止接收广告对象的展示数据,请将通道给 。
nullsetImpressionDataListener()Java
interstitialAd.setImpressionDataListener(null);rewardedAd.setImpressionDataListener(null);bannerAdView.setImpressionDataListener(null);
科特林
interstitialAd.setImpressionDataListener(null)rewardedAd.setImpressionDataListener(null)bannerAdView.setImpressionDataListener(null)
集成 ILR 数据
实现 LevelPlayImpressionDataListener 后,您可以将展示数据发送到您自己的专有 BI 工具和 DWH,或者将其与第三方工具集成。
您可以单独引用每个字段,也可以使用 allData 方法获取所有信息:
public void onImpressionSuccess (LevelPlayImpressionData impressionData){ Double revenue = impressionData.getRevenue(); String adNetwork = impressionData.getAdNetwork(); JSONObject allData = impressionData.getAllData(); }
有关可用 ILR 数据的完整列表,包括字段描述和类型,请参阅 Impression Level Revenue SDK API。
以下示例展示了如何将展示级别收入 SDK API 数据与 Google Firebase 数据分析服务集成。您可以按原样使用,或进行任何必要的更改,以便与第三方报告工具或您自己的专有优化工具和数据库集成。
/** 成功显示广告并记录展示数据时调用 **/ @Overridepublic void onImpressionSuccess(LevelPlayImpressionData impressionData) { // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened. // For banners, the impression is reported on load success.Log.d(TAG, "onImpressionSuccess" + impressionData); if (impressionData != null) { Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "LevelPlay"); bundle.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getAdNetwork()); bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdFormat()); bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getInstanceName()); bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); bundle.putDouble(FirebaseAnalytics.Param.VALUE, java.util.Objects.quirNonNullElse(impressionData.getRevenue(), 0.0)); // 为 null 值添加保护 mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle); } }