3

出于某种原因,StartApp 广告没有显示在我的应用程序上,尽管按照他们在其网站上提供的 pdf 中的设置说明进行操作。

showAd()我在和方法上实现了回调,loadAd()并注意到广告已收到但未显示。后来我在将显示启动应用程序广告的视图上创建了一个矩形背景。我注意到加载广告时会显示带有矩形边框的视图,但视图内没有广告内容。见附图。

在日志猫中,报告了“收到广告”,但从未在我的回调中显示“广告显示”或“广告隐藏”消息。

当我单击“广告”视图时,我的应用程序因 StartApp 库引发的数组索引越界异常而崩溃。

查看图像和代码片段。

我的节目添加可运行:

    private Runnable showAdRunnable = new Runnable() {

    @Override
    public void run() {
          /* 
               WAS HERE BUT STILL COULDNT SHOW
               startAppAd.showAd(new AdDisplayListener() {
                @Override
                public void adHidden(Ad ad) {
                    Log.d(TAG, "Ad hidden "+ad.getErrorMessage());
                }
                @Override
                public void adDisplayed(Ad ad) {
                    Log.d(TAG, "Ad displayed "+ad.getErrorMessage());
                }
                }); 
                */
        startAppAd.loadAd (new AdEventListener() {
            @Override
            public void onReceiveAd(Ad ad) {
                Log.d(TAG, "Ad received "+ad.getErrorMessage());

                startAppAd.showAd(new AdDisplayListener() {
                    @Override
                    public void adHidden(Ad ad) {
                        Log.d(TAG, "Ad hidden "+ad.getErrorMessage());
                    }
                    @Override
                    public void adDisplayed(Ad ad) {
                        Log.d(TAG, "Ad displayed "+ad.getErrorMessage());
                    }
                    }); 
            }
            @Override
            public void onFailedToReceiveAd(Ad ad) {
                Log.d(TAG, "Ad not received "+ad.getErrorMessage());
            }
            });
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        showing = false;
    }

};

我的onCreate()

/**
 * Called when the activity is first created.
 */
@Override
public void onCreate(final Bundle savedInstanceState) {
    Log.d(TAG, "onCreate()");
    StartAppAd.init(this, "XXXXXXX", "YYYYYYY");
    super.onCreate(savedInstanceState);

           setContentView(R.layout.main);

    // initialize the coin image and result text views
    initViews();

    // initialize the onclick listener
    coinImage.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(final View v) {
            tossCoin();
        }
    });

    initSounds();

    showing = true;
    new Handler().postDelayed(showAdRunnable , 2*1000);
}

tossmyCoin()方法。当用户单击我的应用程序上的硬币图像以掷硬币时,将调用此方法。我想在每次用户扔硬币时刷新广告,所以我做了:

private void tossCoin() {
    ....

    if (!showing) {
        showing = true;
        new Handler().postDelayed(showAdRunnable , 2*1000);
    }
}

广告的展示方式: 空广告部分

当我点击广告部分时,我的应用程序崩溃并且日志 cat 包含以下内容:

10-21 01:38:47.851: E/AndroidRuntime(23900): FATAL EXCEPTION: main
10-21 01:38:47.851: E/AndroidRuntime(23900): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
10-21 01:38:47.851: E/AndroidRuntime(23900):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
10-21 01:38:47.851: E/AndroidRuntime(23900):    at java.util.ArrayList.get(ArrayList.java:311)
10-21 01:38:47.851: E/AndroidRuntime(23900):    at com.startapp.android.publish.banner.banner3d.Banner3D.onTouchEvent(Unknown Source)
10-21 01:38:47.851: E/AndroidRuntime(23900):    at android.view.View.dispatchTouchEvent(View.java:3885)
10-21 01:38:47.851: E/AndroidRuntime(23900):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
4

5 回答 5

4

我不知道他们为什么提供如此不正确的文档。我提到的每个文档都使用相同的方法来展示这样的插页式广告:

startAppAd.showAd();
startAppAd.loadAd();

方法调用本身的顺序在这里是错误的。这是对我有用的一点:

  • 首先loadAd()是它的 AdEventListener。
  • 在其onReceiveAd()方法上,调用该showAd()方法。

所以它会是这样的:

startAppAd.loadAd(new AdEventListener() {
    @Override
    public void onReceiveAd(Ad ad) {
        System.out.println("Ad received");

        startAppAd.showAd();
    }
}
于 2015-08-12T07:57:18.330 回答
2

我在使用 StartApp Banner Adds 时遇到了类似的问题。尽管文档中提到的所有步骤都已完成,但添加内容不可见。

我解决了这个问题如下。确保在横幅添加中,添加视图的高度必须大于50dp(android:layout_height="50dp")或等于。低于该高度的添加将不可见。

希望能帮助到你。

于 2013-10-29T08:12:01.740 回答
0

我已经通过使用处理程序解决了我的问题..

 new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                startAppAd.showAd();
                startAppAd.loadAd();
            }
        }, 5000);
于 2014-05-30T06:30:13.603 回答
0

你可以用这种方式

import com.searchboxsdk.android.StartAppSearch;
import com.startapp.android.publish.StartAppAd;

//后setContentView(R.layout.main_layout);

startAppAd = new StartAppAd(this);

    StartAppAd.init(this, "App ID", "Dev ID");
    StartAppSearch.init(this, "App ID", "Dev ID");

//并使用这些方法

@Override
public void onResume() {
    startAppAd.onResume();
    super.onResume();

}

@Override
public void onBackPressed() {
    startAppAd.onBackPressed();
    super.onBackPressed();
}

@Override
public void onPause() {
    super.onPause();
    startAppAd.onPause();
}

//也在 manifest.xml 中添加活动

    <activity
        android:name="com.startapp.android.publish.list3d.List3DActivity"
        android:taskAffinity="packagename.AppWall"
        android:theme="@android:style/Theme" />
    <activity
        android:name="com.startapp.android.publish.AppWallActivity"
        android:configChanges="orientation|keyboardHidden"
        android:taskAffinity="packagename.AppWall"
        android:theme="@android:style/Theme.Translucent" />

//添加权限

 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 <uses-permission android:name="android.permission.GET_TASKS"/>
于 2014-03-01T05:30:51.597 回答
0

我意识到广告只显示在应用程序的发布版本而不是调试版本对我来说,将版本版本从发布更改为调试就可以了。

于 2017-02-19T09:15:47.620 回答