首页 文章

Admob广告未显示

提问于
浏览
8

我正在尝试在Android中实施Admob,我看到请求进入AdMob . 但是,我没有看到Admob广告在模拟器和Android测试手机的Android屏幕上显示 .

如前所述,我可以看到请求进入我的AdMob帐户 . 但是,内容未显示 . 是否需要在我的帐户,main.xml,AndroidManifest.xml或应用程序的加载中启用某些功能?

我的应用程序配置和代码如下 . 请告知我们需要什么 . 谢谢!

AndroidManifest:

<meta-data 
            android:value="My Publisher ID"
            android:name="ADMOB_PUBLISHER_ID" />
        <activity android:name="com.admob.android.ads.AdMobActivity"/>
        <receiver 
            android:name="com.admob.android.ads.analytics.InstallReceiver"
            android:exported="true">
         <intent-filter>
         <action android:name="com.android.vending.INSTALL_REFERRER"/>
         </intent-filter>
         </receiver>
         <meta-data 
             android:value="true" 
             android:name="ADMOB_ALLOW_LOCATION_FOR_ADS"/>

主要:

<com.google.ads.AdView
    android:id="@+id/adView"
   android:layout_alignParentBottom="true"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="My Publisher ID"
    ads:loadAdOnCreate="true"/>

在创建代码:

AdView adView = (AdView)this.findViewById(R.id.adView);
        AdRequest re = new AdRequest();
        re.setTesting(true);
        adView.loadAd(re);

任何帮助表示赞赏!!

12 回答

  • 3

    确保嵌入AdView的布局不会在AdView上施加任何填充 . AdView的尺寸必须精确到320x50 . 如果它没有足够的空间,它不会出现 .

    还要检查设备的日志输出 . 在Eclipse中切换到DDMS透视图,选择您的设备并观察LogCat输出 .

  • 2

    我有类似的问题 . 如果您的父布局上有任何填充,那么您可能没有足够的广告宽度 . 如果您在纵向视图中使用它,请尝试切换到横向视图以查看它是否显示 . 如果确实如此,那么您的布局中某处可能会出现宽度问题 .

  • 2

    广告通常需要一段时间才能通过admob展示 . 如果您刚刚在admob上注册并启动了第一个应用程序,就会发生这种情况 . 如果上面给出的建议得到了解,如果您的浏览页面显示“绿色”状态,我不会太担心它 . 一旦填充率提高,您就会开始看到越来越多的广告 .

  • 1

    确保您的Admob布局显示在xml视图中 . 将您的admob视图放在RelativeLayout中并尝试使用 android:alignparentBottom:true

    <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >
         <RelativeLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
    <!--Do our code that you want to show in xml -->
    
    <!--Put adview in bottom of screen -->
            <com.google.ads.AdView
                    android:id="@+id/adView"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    ads:adSize="BANNER"
                    android:layout_alignParentBottom="true"
                    ads:adUnitId="@string/addmob_id"
                    ads:loadAdOnCreate="true"
                    ads:testDevices="HT9CWP803129" />
        </RelativeLayout>
        </LinearLayout>
    

    在你的java代码中将这些行放在 onCreate 方法中

    // Load addvertisment
            AdView adView = (AdView) findViewById(R.id.adView);
            // Request for Ads
            AdRequest adRequest = new AdRequest();
            adRequest.addTestDevice("FF9CD441FA62FD456D7D571B91DD11DD");
    
            adView.loadAd(adRequest);
    

    这在我的代码中有用,希望它也能帮到你 .

  • 1

    小心id,有2个代码:编辑器编号(如:pub-xxxxxxxxxxxxxxxx),另一个是 Banner ID(如下所示:ca-app-pub-xxxxxxxxxxxxxxxx / xxxxxxxxxx)

    你需要使用最后一个,如果你使用第一个不工作:)

  • 2

    您正在使用广告:adUnitId =“我的发布商ID”将其替换为广告:adUnitId =“此处此应用的AdUnitId”注意:您必须在Admob上创建应用,您将获得该创建应用的AdUnitId . 您不必使用Publisher ID .

  • 1

    根据您发布的内容,我看到您的代码中存在两个问题: -

    • <metadata> 部分应包含ADMOB_APP_ID而不是您的发布商ID . 这应该在ApplicationManifest.xml中的 <application> 标记下声明 .
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="[ADMOB_APP_ID]"/>
    

    您可以在ADMOB仪表板上找到ADMOB_APP_ID,单击该应用程序
    并检查"App Settings" . 你可以看到开始的APP_ID
    通常使用ca-app-pub-0123456789012345 .

    • 第二个问题是,您在布局中声明了AdView . 请注意,您必须提供广告单元而不是您的publisherID,您可以通过点击“广告单元”标签在ADMOB信息中心中创建该ID
      根据你的申请 . 将正确的"ad unit"放在您的AdView上,如下所示 .
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111" <!-- remember this is adUnit not App ID and this value above is for test banner Ad. -->
    

    解决上述问题后,请执行以下操作: -

    MobileAds.initialize(this, "YOUR_ADMOB_APP_ID"); 在你的第一个活动的onCreate中 . 这只需要进行一次,因此正确的位置是您的第一个活动或应用程序的onCreate回调 .

    在活动onCreate中找到您在布局中包含AdView的AdView .

    mAdView = findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);
    

    测试广告通过提供由谷歌发布的测试广告来工作 .

    mAdView.setAdSize(AdSize.BANNER);
    mAdView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
    

    此外,如果您要处理广告事件,请执行以下操作: -

    mAdView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            // Code to be executed when an ad finishes loading.
        }
    
        @Override
        public void onAdFailedToLoad(int errorCode) {
            // Code to be executed when an ad request fails.
        }
    
        @Override
        public void onAdOpened() {
            // Code to be executed when an ad opens an overlay that
            // covers the screen.
        }
    
        @Override
        public void onAdLeftApplication() {
            // Code to be executed when the user has left the app.
        }
    
        @Override
        public void onAdClosed() {
            // Code to be executed when when the user is about to return
            // to the app after tapping on an ad.
        }
    });
    
  • 4

    其中一些可能的解决方案可能听起来很明显,但请确保完成以下操作:

    • 使用您的实际发布商ID替换android:value =“我的发布商ID”中的“我的发布商ID” .

    • 确保在清单文件中包含互联网权限:

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

    如果您已完成这些操作,还可以尝试将以下代码放在“On create”部分而不是当前代码中:

    AdView adView = (AdView)this.findViewById(R.id.adView);
       AdRequest adRequest = new AdRequest();
       adRequest.setTesting(true);
       adView.loadAd(adRequest);
       adView.loadAd(new AdRequest());
    

    要么

    AdManager.setTestDevices( new String[] {AdManager.TEST_EMULATOR});
    
        AdView adView = (AdView)findViewById(R.id.adView);
        adView.requestFreshAd();
    

    在发布之前,不要忘记一定要摆脱setTestDevice!

  • 10

    确保您的admob发布商ID正确无误 . 它发生在我身上一次,我无法弄清楚错误大约15天 .

    在Admob中,您提交的每个应用都会获得不同的发布商ID . 每个应用程序都是唯一的,而不是每个用户 .

  • 7

    这可能是一个问题空间,您需要确保空间可用于显示广告 . 如果在父布局上有填充,则可能会减少可用空间 . 根据google Admob docs,如果没有空格可以显示,则不会显示任何广告 .

    “SDK将请求请求AdView实例化的任何大小 . 如果设备屏幕上没有足够的空间来显示广告,则不会显示任何内容 . ”

    所以我的建议是确保父布局上没有填充,并实际为这样的 Banner 广告指定高度和宽度

    <com.google.ads.AdView
        android:id="@+id/adView"
        android:layout_alignParentBottom="true"
        android:layout_width="@dimen/banner_width"
        android:layout_height="@dimen/banner_height"
        ads:adSize="BANNER"
        ads:adUnitId="My Publisher ID"
        ads:loadAdOnCreate="true"/>
    

    并将您的dimens.xml中的相应维度存储在values文件夹中 .

  • 0

    这是因为管理员库存需要生成一些请求以检查应用程序是否可以获得一些利润!

    请妥善设置广告并发布应用,在提出约1k请求后,广告会自动显示!

    当我发布自己的应用程序时,我也遇到了这个问题并得到了答案!

  • 0

    如果您的应用不是基于位置的应用,请转到 admob.com 上的 app settings 并确保关闭 use location data for ads .

    Use location data for ads 用于根据位置过滤广告,仅适用于已授予位置权限的应用 . 如果应用不使用位置权限,则不会显示广告 .

相关问题