2014-09-03 6 views
0

Описание: - Я интегрирую свое приложение с SDK Google Play в соответствии с последними рекомендациями от Google. ранее он был интегрирован с автономным администратором SDK.Службы Google Play: проблема с загрузкой рекламы

ВОПРОС: - Баннерная реклама и полная реклама отображаются правильно, когда отображается один из них. Но когда оба должны быть показаны, они дают непредсказуемые результаты.

Непредсказуемые результаты? Да, когда-то только Баннер загружается, а когда-то отображается только полное объявление. очень редко, что оба они показаны.

ИСПРАВЛЕНИЕ: - 1. Я попытался дать некоторую задержку между Баннером и межстраничным и получил немного лучшие результаты. Но все же результаты в большинстве случаев непредсказуемы.

  1. Я использовал задачу Asynch для полной рекламы. В фоновом режиме() и запустили объявление в PostExecute(). Это дает гораздо лучшие результаты. Но все же из 10 попыток, только в 7 раз показываются оба объявления. остальные 3 раза либо Banner, либо Full, либо ни одна из них не загружена.

Ниже приводится код Основной вид деятельности

package com.example.adtest_new; 
import android.app.Activity; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.widget.Toast; 

import com.google.android.gms.ads.AdListener; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 
import com.google.android.gms.ads.InterstitialAd; 

public class MainActivity extends Activity 
{ 
Context myCont=null; 
private InterstitialAd interstitial = null; 
AdRequest adr; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    //Get the view from activity_main.xml 
    setContentView(R.layout.activity_main); 

    myCont = this; 

    //--------------BANNER AD----------------------------------  
    //Locate the Banner Ad in activity_main.xml 
    AdView adView = (AdView) this.findViewById(R.id.adView); 
    // Request for Ads 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    // Load ads into Banner Ads 
    adView.loadAd(adRequest); 
    //--------------BANNER AD----------------------------------   

//Fix-1 (Did not work) 
    try{Thread.sleep(2*1000);}catch(Exception e){}   

//Fix-2 (Did not work) 
//Called Asynch task here(put delay of 2 seconds in background() and loaded full ad in postexecute()) 

    //--------------FULL AD---------------------------------- 
    //Prepare the Interstitial Ad 
    interstitial = new InterstitialAd(MainActivity.this);   

    //Insert the Ad Unit ID 
    interstitial.setAdUnitId("ca-app-pub-465697675827xxxx/xxxxxxxxxx"); 
    adr = new AdRequest.Builder().build(); 
    //Load ads into Interstitial Ads 

    //Prepare an Interstitial Ad Listener 
    interstitial.setAdListener(new AdListener() 
    { 
     public void onAdLoaded() 
     { 
      //System.out.println("!!! Full Ad loaded !!!"); 
      Toast.makeText(myCont, "!!! Full Ad loaded !!!", Toast.LENGTH_SHORT).show(); 
      //Call displayInterstitial() function 
      displayInterstitial(); 
     } 
    });   
    interstitial.loadAd(adr);  
    //--------------FULL AD---------------------------------- 
}  

public void displayInterstitial() { 
    // If Ads are loaded, show Interstitial else show nothing. 
    if (interstitial.isLoaded()) 
    { 
     interstitial.show(); 
    } 
} 

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/openedWindows" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffffff" 
android:orientation="vertical" > 


<TextView 
    android:id="@+id/completePath" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="left" 
    android:layout_marginTop="0dp" 
    android:layout_marginLeft="3dp" 
    android:text="/mnt/sdcard" 
    android:textColor="#ff2d8df1" 
    android:textSize="16dip" 
    android:textStyle="bold" 
    android:typeface="sans"/> 

<View 
android:id="@+id/bar0" 
android:layout_width="fill_parent" 
android:layout_height="1dp" 
android:layout_marginTop="0dp" 
android:background="#ffb2cb39"  
android:layout_marginBottom="0dp"/> 



<View 
android:id="@+id/bar1" 
android:layout_width="fill_parent" 
android:layout_height="1dp" 
android:layout_marginTop="0dp" 
android:background="#ffb2cb39"  
android:layout_marginBottom="1dp"/> 


<RelativeLayout  
android:id="@+id/temp" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@android:color/transparent" 
android:layout_marginTop="5dp" 
android:layout_marginBottom="5dp" 
android:orientation="vertical"> 

<Button 
    android:id="@+id/selectAll" 
    android:layout_width="wrap_content" 
    android:layout_height="25dp" 
    android:layout_gravity="left" 
    android:layout_marginBottom="1dp" 
    android:layout_marginLeft="15dp" 
    android:layout_alignParentLeft="true" 
    android:background="@drawable/button_green" 
    android:textSize="15dip" 
    android:text="BUTTON1" 
    android:paddingLeft="10px" 
    android:paddingRight="10px" 
    android:textColor="#ffffff" 
    android:textStyle="bold" /> 

<Button 
    android:id="@+id/selectBtn" 
    android:layout_width="wrap_content" 
    android:layout_height="25dp" 
    android:layout_marginRight="15dp" 
    android:layout_marginBottom="1dp" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/button_green" 
    android:textSize="15dip" 
    android:text="BUTTON2" 
    android:paddingLeft="10px" 
    android:paddingRight="10px" 
    android:textColor="#ffffff" 
    android:textStyle="bold" /> 
</RelativeLayout> 


<View 
android:layout_width="fill_parent" 
android:layout_height="1dp" 
android:layout_above="@+id/tableRow2" 
android:background="#444444"  
android:layout_marginBottom="0dp"/> 

<TableRow 
android:id="@+id/tableRow2" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
<com.google.android.gms.ads.AdView 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/adView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    ads:adSize="BANNER" 
    ads:adUnitId="ca-app-pub-465697675827xxxx/xxxxxxxxxx" 
    />  
</TableRow> 

</LinearLayout> 

манифеста

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.adtest_new" 
    android:versionCode="1" 
    android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="21" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> 
    <meta-data android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version"/> 

</application> 

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

</manifest> 

Просьба сообщить мне, как разрешить это? Standalone admob SDK отлично работает для обоих типов объявлений.

ответ

0

Я вижу, что вы загружаете «настоящие» объявления (т. Е. Не тестовые объявления), так как вы не объявляете тестовые устройства. Я не уверен на 100% о том, что я собираюсь сказать, но это может быть причиной этой проблемы. При отображении реальных объявлений, я думаю, вы не всегда будете иметь доступные объявления от Admob/Google Play Services, поэтому иногда у вас не будет отображаемых объявлений (я думаю, что код ошибки загрузки равен 3, что означает «без заполнения»). Вы можете протестировать при объявлении тестовых устройств, что приведет к использованию тестовых объявлений, которые всегда доступны.

Кроме того, рекомендуется использовать тестовые устройства во время разработки, потому что, если вы щелкаете по своим объявлениям (по ошибке или просто для тестирования), вы можете быть заблокированы из AdMob.

Чтобы увидеть, как добавить тестовые устройства, Cf это

Тестовые объявления

Вы должны использовать тестовые объявления в процессе разработки, чтобы избежать возникновения ложных впечатлений. Кроме того, вы всегда можете рассчитывать на наличие тестового объявления . Настройте тестовые объявления, передав хешированный идентификатор устройства на AdRequest.Builder.addTestDevice: запрос AdRequest = новый AdRequest.Builder() .addTestDevice (AdRequest.DEVICE_ID_EMULATOR) // Все эмуляторы .addTestDevice ("AC98C820A50B4AD8A2106EDE96FB87D4") // Мой Galaxy Nexus тест телефона .build();

LogCat напечатает Дев

льда MD5-хеш идентификатора для удобства, например: Используй AdRequest.Builder.addTestDevice («AC98C820A50B4AD8A2106EDE96FB87D4») для испытаний прибудут объявлений на этом устройстве.

(https://developers.google.com/mobile-ads-sdk/docs/admob/android/banner)

уход

Примите, что некоторые люди говорят, что тестовые объявления не работают должным образом, если ваш телефон не на английском языке (AdMob test ads shows only on English devices)

Edit: Конечно реальные пользователи вашего приложения будут используйте настоящие объявления, чтобы они могли также испытывать «проблему» не всегда доступных объявлений, но это нормально. Вы все еще можете регулярно настраивать новые загрузки (для межстраничного, баннер регулярно перезагружается), чтобы попытаться справиться с этим, я думаю.

Редактировать 2: Кстати, это может быть немного неуместно для вашей проблемы, но люди обычно настоятельно советуют не отображать объявление из метода AdListener.onAdLoaded, но вызывать это вручную в тот момент, когда вы хотите, чтобы он (если isLoaded истинно). Но это только вопрос эргономики, нет ошибки-мудрый

Смежные вопросы