【问题标题】:Chartboost with Admob Mediation AndroidChartboost 与 Admob 中介 Android
【发布时间】:2014-03-14 14:40:09
【问题描述】:

我正在尝试将 Chartboost 和 AdMob 插页式广告集成到我通过 AdMob 中介的游戏中。我还希望集成 Chartboost 应用墙和分析。为了使应用程序墙和分析功能正常工作,我需要 AdMob 的自定义事件侦听器类之外的 CB 对象。

目前,我的侦听器活动如下所示。

public class ChartboostAdAdapter  implements CustomEventInterstitial{   
    private Chartboost cb;
    protected static CustomEventInterstitialListener mListener;
    Activity activity;

    @Override
    public void destroy() {
        cb.onDestroy(activity);
    }

    @Override
    public void requestInterstitialAd(CustomEventInterstitialListener customListener, Activity activity,
            String param1, String param2, MediationAdRequest mAdRequest, Object object) {
            mListener = customListener;
            this.activity = activity;
            cb = Chartboost.sharedChartboost();
            cb.cacheInterstitial("Post Game");

    }

    @Override
    public void showInterstitial() {
        cb.showInterstitial();
    }   
}

我的 Chartboost 委托在单独的文件中定义。将 CustmEventInterstitialListener 声明为静态允许我从 CB 委托访问它。虽然设置有效,但由于 CustomEventInterstitialListener 被声明为静态,我担心内存泄漏。

我对如何使用 Chartboost 应用程序墙以及在调整横幅广告时进行分析一无所知。我能想到的唯一选择是在应用程序中使用硬编码中介,并通过 AdMob 牺牲动态重新排序。有没有更好的办法?

更新:更多关于我为什么需要访问CustomEventInterstitialListener 的信息。 我需要调用诸如 cb.cacheMoreApps()cb.getAnalytics().trackEvent("Stats") 之类的方法,这些方法不在 AdMob 中介的范围内。此外,我需要对 didCacheMoreApps 采取行动,以便为 More Apps/App-wall 创建自定义瀑布,我必须在 CustomEventInterstitial 类之外定义 Delegate。

根据要求,这里是 CBDelegate 的代码:

private ChartboostDelegate cbdelegate = new ChartboostDelegate() {

    final String tag = "CHARTBOOST";
    @Override
    public boolean shouldRequestMoreApps() {
        return true;
    }

    @Override
    public boolean shouldRequestInterstitialsInFirstSession() {
        return true;
    }

    @Override
    public boolean shouldRequestInterstitial(String arg0) {
        return true;
    }

    @Override
    public boolean shouldDisplayMoreApps() {
        return true;
    }

    @Override
    public boolean shouldDisplayLoadingViewForMoreApps() {
        return true;
    }

    @Override
    public boolean shouldDisplayInterstitial(String arg0) {
        return true;
    }

    @Override
    public void didShowMoreApps() {
    }

    @Override
    public void didShowInterstitial(String arg0) {
        if(mAdAdapter !=null) mAdAdapter.mListener.onPresentScreen();
    }

    @Override
    public void didFailToLoadMoreApps() {
        Log.i(tag, "Interstital failed to load more interstital");
    // Waterfall code for More-App/App-wall. Use Ad-Mob Custom event to manage it?
    }

    @Override
    public void didFailToLoadInterstitial(String arg0) {
        if(mAdAdapter !=null) mAdAdapter.mListener.onFailedToReceiveAd();
        Log.i(tag, "Interstital failed to load");
    }

    @Override
    public void didDismissMoreApps() {
        Log.i(tag, "More apps dismissed");
        finish();
    }

    @Override
    public void didDismissInterstitial(String arg0) {
        if(mAdAdapter !=null) mAdAdapter.mListener.onDismissScreen();
        Log.i(tag, "Interstital dismissed");
    }

    @Override
    public void didCloseMoreApps() {
        Log.i(tag, "More appds closed");
        finish();
    }

    @Override
    public void didCloseInterstitial(String arg0) {
        Log.i(tag, "Interstital closed");
        if(mAdAdapter !=null) mAdAdapter.mListener.onDismissScreen();
    }

    @Override
    public void didClickInterstitial(String arg0) {
    }

    @Override
    public void didCacheMoreApps() {
        Log.i(tag, "More apps cached");
    }

    @Override
    public void didCacheInterstitial(String arg0) {
        Log.i(tag, "Interstital cached");
        if(mAdAdapter !=null) mAdAdapter.mListener.onReceivedAd();
    }

    @Override
    public void didFailToLoadUrl(String arg0) {
        Log.i(tag, "Interstital failed to load url");
        if(mAdAdapter !=null) mAdAdapter.mListener.onFailedToReceiveAd();
    }

    @Override
    public void didClickMoreApps() {
    }
};

【问题讨论】:

  • 我不明白您为什么需要从 CB 委托访问 CustomEventInterstitialListener。如果您发布该代码会有所帮助。
  • 我需要从 CB 委托访问 CustomeEventInterstitialListener,因为我使用 CB 对象不仅仅是插页式广告,即更多应用程序屏幕和分析。如果它只在 CustomeEventInterstitialListener 中初始化,我就不能这样做,因为我的活动没有 CB 对象引用。我将在一分钟内发布 CBDelegate 代码。

标签: android admob analytics interstitial chartboost


【解决方案1】:

ChartBoostDelegate 似乎不依赖 mAdAdapter 以外的任何东西,我认为 mAdAdapter 是 ChartboostAdAdapter 的一个实例。

因此将 mAdAdapter 注入 ChartBoostDelegate 并避免静态引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多