我的应用程序中没有显示StartApp广告

3
因某种原因,尽管我按照StartApp网站上提供的pdf文件中的设置说明进行了设置,但我的应用程序上没有显示StartApp广告。
我在showAd()和loadAd()方法上实现了回调,并注意到广告已被接收但未显示。后来我在Start App广告应该显示的视图上创建了一个矩形背景。我注意到当广告加载时,带有矩形边框的视图会显示出来,但是视图内没有广告内容。请参见附加的图片。
在日志cat中,报告了“广告已接收”,但从我的回调中从未收到“广告已显示”或“广告已隐藏”的消息。
当我点击广告视图时,我的应用程序崩溃并抛出了来自StartApp库的数组索引越界异常。
请参见图像和代码片段。
我的Show add 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);
    }
}

Ad是如何展示的: 空广告版块 当我点击广告版块时,我的应用程序会崩溃,日志记录器包含以下内容:
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)

我是来自StartApp的Miki。看起来您有两个问题,一个是插页式广告,另一个是横幅广告。 由于您的集成似乎没有问题,而且这个错误对我们来说并不熟悉,我建议您从开发者门户网站或support@startapp.com与我们联系。请在支持请求中附上您的清单和主要活动。 - mikibe
谢谢你,Mike。我会立刻去做。 - nmvictor
5个回答

4

我不知道为什么他们提供如此错误的文档。每个我参考过的文档都说要像这样展示插页式广告:

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

这里方法调用的顺序是错误的。这是我使用的代码:

  • 首先使用其AdEventListener调用loadAd()
  • 在其onReceiveAd()方法中,调用showAd()方法。

所以代码应该像这样:

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

        startAppAd.showAd();
    }
}

2

我曾经遇到了与StartApp横幅广告类似的问题。尽管按照他们的文档中提到的所有步骤都已完成,但广告仍然不可见。

我通过以下方式解决了这个问题。 确保在横幅广告中,广告视图的高度必须为50dp(android:layout_height="50dp")或更高。 如果高度小于此值,则广告将不可见。

希望它有所帮助。


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

    <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"/>

0
我通过使用处理程序解决了我的问题。
 new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                startAppAd.showAd();
                startAppAd.loadAd();
            }
        }, 5000);

0

我意识到广告只在应用程序的发布版本上显示,而不是调试变体。对我来说,将构建变体从发布更改为调试就解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接