Пустой макет AdWhirl на Android (без рекламы)

#android #adwhirl

#Android #adwhirl

Вопрос:

У меня странная проблема с интеграцией AdWhirl в мое приложение для Android.

Сети, подключенные через AdWhirl:
* Mileniall Media
* AdMob
* InMobi (выдает ошибку недопустимого адаптера, но это известная проблема, а не основная)

Я загрузил и включил AdWhirl SDK 3.0.0, jar для соответствующей сети и выполнил все шаги, указанные в руководстве (изменения в файле манифеста, включая библиотеку и т.д.)

И я поместил код AdWhirl в свое приложение.

Макет, который является заполнителем для AdWhirlLayout.

 <LinearLayout
        android:id="@ id/ads"
        android:layout_width="fill_parent"
        android:layout_height="52dip"
        android:layout_weight="0"
        android:background="#0f0"/>
  

Код для размещения рекламы:

 adLayout = (LinearLayout) findViewById(R.id.ads);
AdWhirlLayout adWhirlLayout = new AdWhirlLayout(this, "ad whirl code");
RelativeLayout.LayoutParams adWhirlLayoutParams = new RelativeLayout.LayoutParams(UIUtils.dip(320), UIUtils.dip(52));
adWhirlLayout.setBackgroundColor(Color.DKGRAY);
adLayout.addView(adWhirlLayout, adWhirlLayoutParams);
adLayout.invalidate();
  

Я вижу, что показаны оба макета (из-за цвета, который у них есть).

Я также знаю, что сети подключены правильно, потому что я вижу это в logcat

 05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013): Showing ad:
05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013):     nid: d10c4fe5e08f469ca1992bfe277902f5
05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013):     name: millennial
05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013):     type: 6
05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013):     key: XXXXX
05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013):     key2: 
05-11 15:11:52.279: DEBUG/AdWhirl SDK(8013): Valid adapter, calling handle()
  

и на сетевых сайтах — я вижу там запрос на рекламу.

Но макет остается серым, несмотря ни на что. Я озадачен.

Ответ №1:

Документация для AdWhirl довольно ужасна. Попробуйте этот гораздо более простой способ увеличить макет AdWhirl:

Вместо создания макета с помощью кода вы можете просто создать его с помощью обычного файла макета XML. Не используйте LinearLayout , как предлагают их инструкции (я думаю, что это устарело). Вместо этого просто разместите этот элемент в своем макете там, где вы хотите разместить баннер:

     <com.adwhirl.AdWhirlLayout
         android:layout_width="fill_parent"
         android:layout_height="wrap_content" />
  

Серьезно, это все. Убедитесь, что ваш ключ AdWhirl также присутствует в манифесте (либо в теге <activity> or <application> ):

     <meta-data android:value="Your Key"
         android:name="ADWHIRL_KEY"/>
  

Если вам действительно нужно что-то сделать программно, вы можете сделать макет id как обычно и использовать findViewById . Дайте мне знать, если это поможет.

Комментарии:

1. Не оставляет ли это себя немного уязвимым для проблем с AdWhirl? Если вы используете wrap_content и они показывают вам рекламу неправильного размера, у вашего приложения проблемы. (И да, это было бы ошибкой со стороны рекламной сети, но, по крайней мере, есть способы настроить, насколько это затрудняет вашу точку доступа).

2. @James Да, есть что-то вроде конфликта, потому что «лучшие практики» Android предполагают, что вы стараетесь не вводить жесткие размеры кода. Я думаю, что инструкции AdWhirl рекомендуют установить высоту в 50 пикселей (или эквивалент в dp). И на самом деле существует рекламная сеть MdotM, в которой есть именно та ошибка, о которой вы упомянули. Проблема с жестким кодированием в dimensions заключается в том, что при отсутствии рекламы в вашем пользовательском интерфейсе останется пустое поле. Есть способ обойти это, используя их плохо документированный метод setMaxHeight (), но я опустил его для простоты. Вероятно, мне следует отредактировать свой ответ