【问题标题】:StartApp Ad not showing on my AppStartApp 广告未在我的应用上显示
【发布时间】:2013-10-20 23:18:13
【问题描述】:

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

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

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

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

查看图片和代码 sn-ps。

我的节目添加可运行:

    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)

【问题讨论】:

  • 我是 StartApp 的 Miki。您似乎有两个问题,即插页式广告和横幅广告。由于您的集成似乎没问题,而且我们对这个错误并不熟悉,我建议您通过开发人员门户或 support@startapp.com 与我们联系。请在您的支持请求中附上您的清单和主要活动。
  • 谢谢你,迈克,我会马上做的。

标签: java android


【解决方案1】:

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

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();
    }
}

【讨论】:

    【解决方案2】:

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      你可以这样用

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

      【讨论】:

        【解决方案4】:

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

         new Handler().postDelayed(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        startAppAd.showAd();
                        startAppAd.loadAd();
                    }
                }, 5000);
        

        【讨论】:

          【解决方案5】:

          我意识到广告仅在应用的发布版本上显示,而不是调试变体对我来说,将构建变体从发布更改为调试就可以了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-10-03
            • 1970-01-01
            相关资源
            最近更新 更多