java - 为什么 Admob 横幅广告不向我展示? [Android,libGDX]

标签 java android libgdx admob

我有一个问题:

我已在我的应用中安装了 Admob 广告横幅,当我使用此命令来构建时:

builder.addTestDevice(
            "0277F42DBB49E3FD56F9EFFE3C4380B4"
)

一切正常(我的意思是,我看到横幅上有类似的文字“恭喜,bla-bla-bla,等等”。

但是。

在已发布的游戏中,这当然已禁用该行(addTestDevice),但它不会显示。

list

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hypeofpipe.westernshooter"
    android:versionCode="12"
    android:versionName="1.02">
    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="25" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/GdxTheme" >
        <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
        <activity
            android:name="com.hypeofpipe.westernshooter.AndroidLauncher"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
            <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"
            android:theme="@android:style/Theme.Translucent" />
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

</manifest>

AndroidLauncher.java

    public class AndroidLauncher extends AndroidApplication
            implements UrlOpener, AdHandler {

    protected AdView adView;
    private final int SHOW_ADS = 1;
    private final int HIDE_ADS = 0;

    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case SHOW_ADS:
                    adView.setVisibility(View.VISIBLE);
                    break;
                case HIDE_ADS:
                    adView.setVisibility(View.GONE);
                    break;
            }
        }
    };

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

        adView = new AdView(this);
        RelativeLayout layout = new RelativeLayout(this);

        View gameView = initializeForView(new MainClass(this, this), config);

        adView.setAdListener(new AdListener(){
            @Override
            public void onAdLoaded() {
                int visibility = adView.getVisibility();
                adView.setVisibility(AdView.GONE);
                adView.setVisibility(visibility);
                AudioManager.getInstance().playSound(
                        AudioManager.getInstance().shot_missed
                );
            }
        });
        adView.setAdSize(AdSize.SMART_BANNER);
        adView.setAdUnitId(*here goes my unitid from admob*);

        AdRequest.Builder builder = new AdRequest.Builder();
        RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        layout.addView(gameView);
        layout.addView(adView, adParams);
        adView.loadAd(builder.build());

        setContentView(layout);
    }

    public void openURL(String url) {
        Uri uri = Uri.parse(url);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        this.startActivity(intent);
    }

    @Override
    public void showAds(boolean show) {
        handler.sendEmptyMessage(show ? SHOW_ADS : HIDE_ADS);
    }
    }

MainClass.java

    public class MainClass extends Game {

    public static UrlOpener urlOpener;
    public static AdHandler adHandler;

    public MainClass(UrlOpener urlOpener,
                     AdHandler adHandler)
    {
        this.urlOpener = urlOpener;
        this.adHandler = adHandler;
        adHandler.showAds(false);
    }

    @Override
    public void create() {
        Assets.getInstance().load();
        Assets.getInstance().assetManager.finishLoading();
        setScreen(new ScreenModified(this));
    }

}

代码中的一些 fragment ,其中调用广告来显示。

MainClass.adHandler.showAds(true);

此外,我的应用程序收到了 0 个请求。

Admob

最佳答案

Ads working fine with addTestDevice(XXX) but not getting live Ads.

按照以下步骤操作:

  1. 等待一些时间/小时或一天。
  2. 如果您能够加载/获取测试广告,但无法加载/获取实时广告,这听起来像是您的 AdMob 帐户存在问题。
  3. 等待后仍然存在问题,然后您需要从 AdMob 帐户中交叉检查广告单元 ID 和 AppId。
  4. 确保您正确设置了支付系统和/或验证了您的 PIN 码?如果没有完成,您的帐户将不会转换实时广告。
  5. 现在仍然有问题,您需要在此 group 中发布您的问题寻求帮助。

关于java - 为什么 Admob 横幅广告不向我展示? [Android,libGDX],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303819/

相关文章:

java - Android初始化parse.com代码出错

Java(类似SQL)和Shell脚本运行2个参数的问题

android - 使自定义应用程序成为 android 操作系统的一部分时出错

java - Volley 示例错误不在 MainActivity 中

java - Android LibGDX 游戏 : FPS drops because of long EGLImpl. eglSwapBuffers 调用

java - 使用类路径 (cp) 在单独的位置执行 java 控制台应用程序

Java - JPanel - 使用数组列表绘制文本文件的内容 - 仅第一次有效

android - 设置全局 gradle build dir 相对路径

java - 有没有办法在 LibGDX 中暂时隐藏场景小部件

android - GoogleApiClient 和 Drive.API 错误