Объявление StartApp не показывается в моем приложении

По какой-то причине объявления StartApp не показываются в моем приложении, несмотря на то, что они следовали инструкциям по настройке в формате pdf, который они предоставили на своем сайте.

Я реализовал обратные вызовы на showAd() а также loadAd() Методы и отметил, что объявления получены, но не показаны. Позже я создал прямоугольный фон в представлении, где будет отображаться объявление в стартовом приложении. Я заметил, что представление с моей прямоугольной рамкой отображается, когда объявление загружено, но в нем нет содержимого рекламы. Смотрите прикрепленное изображение.

В журнале cat отображается сообщение "Объявление получено", но сообщения "Не показываются" и "Реклама скрыты" от моих обратных вызовов никогда не отображаются.

Когда я щелкаю по представлению "Реклама", происходит сбой моего приложения с исключением индекса массива за пределами границ, генерируемым в библиотеке StartApp.

Смотрите изображения и фрагменты кода.

My Show добавить работоспособный:

    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)

5 ответов

Я не знаю, почему они предоставляют такую ​​неправильную документацию. Каждая документация, на которую я ссылался, содержит один и тот же метод показа промежуточной рекламы, например:

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

Я сталкивался с подобной проблемой при добавлении баннеров StartApp. Добавления не были видны, несмотря на то, что все шаги, упомянутые в их документе, были выполнены.

Я решил проблему следующим образом. Убедитесь, что в добавлении баннера высота представления добавления должна быть 50dp(android:layout_height="50dp") или больше. Добавления не будут видны в высоту меньше, чем это.

Надеюсь, поможет.

Я решил свою проблему с помощью обработчика..

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

Я понял, что реклама отображается только в версии Release приложения, а не в варианте Debug. Для меня изменение варианта сборки с Release на Debug помогло.

Вы можете использовать этот способ

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"/>
Другие вопросы по тегам