出于某种原因,我的应用程序中没有显示StartApp广告,尽管他们已按照他们在其网站上提供的pdf中的设置说明进行操作。
我在showAd()
和loadAd()
方法上实施了回调,并注意到广告已收到但未显示。我后来在视图上创建了一个矩形背景,其中将显示启动应用广告。我注意到,加载广告时会显示带有矩形边框的视图,但视图中没有广告内容。见附图。
在日志记录中,系统会报告“广告已收到”,但我的回调中从未显示“广告显示”或“广告隐藏”消息。
当我点击广告视图时,我的应用程序因从StartApp lib抛出的Array Index out of bounds异常而崩溃。
查看图片和代码段。
我的节目添加了runnable:
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);
}
}
广告的展示方式:
当我点击广告部分时,我的应用崩溃了,日志猫包含以下内容:
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)
答案 0 :(得分: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();
}
}
答案 1 :(得分:1)
我遇到了与StartApp Banner Adds类似的问题。尽管文件中提到的所有步骤都已完成,但仍无法看到添加内容。
我解决了以下问题。
确保在横幅中添加,添加视图的高度必须为50dp(android:layout_height="50dp")
或更高。
高于此值的高度不会显示添加。
希望它有所帮助。
答案 2 :(得分: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"/>
答案 3 :(得分:0)
我通过使用处理程序解决了我的问题..
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
startAppAd.showAd();
startAppAd.loadAd();
}
}, 5000);
答案 4 :(得分:0)
我意识到广告只在应用的发布版上显示,而不是调试变体对我来说,将版本变体从Release更改为Debug就可以了。