2017-03-09 161 views
0

我目前正在使用eclipse luna开发libgdx andriod应用程序,并尝试通过admob显示横幅广告。Admob实时广告未出现在libgdx应用程序中 - 无法加载广告:0

我的应用运行良好,显示测试横幅广告没有问题。

当我删除我的手机作为测试设备,以获得即时广告,我得到这个错误的logcat:

There was a problem getting an ad response. ErrorCode: 0 
Failed to load ad: 0 

我测试过我的应用程序上的Galaxy Note 4和三星S5既运行Android版本6.0.1。在任一设备上都没有自定义ROM或广告拦截器,并且这两个测试广告都能正常工作。

我遵循this指南的实施与google's android guide一些参考。

这里就是我认为这个问题是..

通过我的SDK管理器我有谷歌Play服务,修订39和安装谷歌库修订44。

资料说附上谷歌播放-services_lib位于:

C:\用户\ ... \应用程序数据\本地\ Android的\ SDK \演员\谷歌\ google_play_services

但是该文件不再存在,在根据this回答问题后,我发现google-play-services_lib rev 29并将其添加到我的项目库中。如果SDK管理器上的Google Play服务修订版与我手动添加的版本不同,那么修订版是否会有所修改?

无论哪种方式,这应该无关紧要,因为测试广告的工作,但我不知道,我错过了任何可能导致此错误?

我也向google groups(Google移动广告SDK开发人员)寻求帮助,但没有运气。

我的应用程序单元ID:

广告单元ID:为ca-app-PUB-4168523587分之3059505755009716

AP ID:为ca-app-PUB-3059505755009716〜2178916381

我的Java实现(AndriodLauncher.java):

public class AndroidLauncher extends AndroidApplication implements AdsController { 

    private static final String BANNER_AD_UNIT_ID = "ca-app-pub-3059505755009716/4168523587"; 
    // ca-app-pub-3059505755009716/8048823189 
    // ca-app-pub-3059505755009716/4168523587 
    AdView bannerAd; 

    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); 

     // Create a gameView and a bannerAd AdView 
     View gameView = initializeForView(new Boot(this), config); 
     setupAds(); 

     // Define the layout 
     RelativeLayout layout = new RelativeLayout(this); 
     layout.addView(gameView, ViewGroup.LayoutParams.MATCH_PARENT, 
       ViewGroup.LayoutParams.MATCH_PARENT); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
       ViewGroup.LayoutParams.MATCH_PARENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     layout.addView(bannerAd, params); 

     setContentView(layout); 
    } 

    public void setupAds() { 
     bannerAd = new AdView(this); 
     bannerAd.setVisibility(View.GONE); 
     bannerAd.setBackgroundColor(Color.argb(0, 0, 0, 0)); // black 
     bannerAd.setAdUnitId(BANNER_AD_UNIT_ID); 
     bannerAd.setAdSize(AdSize.BANNER); 
    } 

    @Override 
    public void showBannerAd() { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       bannerAd.setVisibility(View.VISIBLE); 
       AdRequest.Builder builder = new AdRequest.Builder(); 


       //builder.addTestDevice("9F2779F709CED00E2ADF6123C0D17A4C"); 
       //builder.addTestDevice("ECDD91BD30440E7B3F4DA0E90F1D67A9"); 
       AdRequest ad = builder.build(); 

       bannerAd.loadAd(ad); 
      } 
     }); 
    } 

    @Override 
    public void hideBannerAd() { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       bannerAd.setVisibility(View.INVISIBLE); 
      } 
     }); 
    } 
} 

代码片段showBannerAd()方法被称为:

public Boot(AdsController adsController){ 
    this.adsController = adsController; 
} 

@Override 
public void create() { 
//Gdx.app.log(TITLE, "started.."); 

// Display ads (andriod launch) 
adsController.showBannerAd(); 

setScreen(new Splash()); 

Timer.schedule(new Task(){ 
    @Override 
    public void run() { 
     assets = new Assets(); 
     assets.load(); 
     assets.manager.finishLoading(); 

     Audio.create(); 
     Audio.bgm.play(); 
     Audio.bgm.setLooping(true); 
     setScreen(new MainMenu()); 
    } 
}, 3f); 
} 

AndriodManifest。XML

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

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

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/GdxTheme" > 
     <activity 
      android:name="com.game.AndroidLauncher" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
      android:label="@string/app_name" 
      android:screenOrientation="landscape" > 
      <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> 

</manifest> 

编辑:注意的行

compile 'com.google.android.gms:play-services-ads:10.0.1' 

从Android的依赖失踪build.grandle内,刷新依赖性仍然没有活广告。

回答

1

据谷歌

“这可能是因为您最近才创建了一个新的广告单元ID,并要求现场的广告。这可能需要几个小时的广告开始得到服务,如果是这种情况。如果您正在收到测试广告,那么您的实施情况良好,只需等待几个小时,看看您是否能够接收实时广告;如果没有,可以向我们发送您的广告单元编号供我们查看。

https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/android/fBe3YL3ffpo

所以要等几个小时。

+0

我有3天的ap单位ID。我已经发布到您提到的论坛,并被告知我的应用ID根据他们的测试正在制作实时广告。 – girthquake

+0

尝试更改广告:adSize =“BANNER”with ads:adSize =“SMART_BANNER” – Aryan

+0

我已经使用SMART_BANNER,BANNER和LARGE_BANNER显示测试广告的所有选项都没有问题。当我注释掉addTestDevice()以获得实时广告时,我得到相同的错误。 – girthquake