StartApp广告未在我的应用上显示
出于某种原因,尽管我们在其网站上提供的pdf中遵循了设置说明,但我的应用程序中未显示StartApp广告。
我在showAd()
和loadAd()
方法上实现了回调,并注意到广告已收到但未显示。 我后来在视图上创建了一个矩形背景,其中将显示启动应用广告。我注意到,加载广告时会显示带有矩形边框的视图,但视图中没有广告内容。 见附图。
在日志cat中,系统会报告“广告已收到”,但我的回调中从未显示“广告显示”或“广告隐藏”消息。
当我点击广告视图时,我的应用程序崩溃,并且从StartApp库中抛出了Array Index out of boundsexception。
请参阅图像和代码段。
我的节目添加了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)
我不知道为什么他们提供这么不正确的文件。 我提到的每个文档都说明了显示插页式广告的相同方法:
startAppAd.showAd(); startAppAd.loadAd();
方法调用本身的顺序在这里是错误的。 这对我有用:
- 首先,使用AdEventListener加载Ad
loadAd()
。 - 在
onReceiveAd()
方法上,调用showAd()
方法。
所以它会是这样的:
startAppAd.loadAd(new AdEventListener() { @Override public void onReceiveAd(Ad ad) { System.out.println("Ad received"); startAppAd.showAd(); } }
我在使用StartApp Banner Adds时遇到了类似的问题。 尽管文件中提到的所有步骤都已完成,但仍无法看到添加内容。
我解决了这个问题如下。 确保在横幅中添加,添加视图的高度必须为50dp(android:layout_height="50dp")
或更多。 高度低于此值时,添加将不可见。
希望能帮助到你。
你可以用这种方式
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中添加活动
//添加权限
我通过使用处理程序解决了我的问题..
new Handler().postDelayed(new Runnable() { @Override public void run() { startAppAd.showAd(); startAppAd.loadAd(); } }, 5000);
我意识到广告只显示在应用程序的Release版本而不是Debug变体对我来说,将构建变体从Release更改为Debug就可以了。