【问题标题】:Android adMob : ads not showing (tried everything)Android adMob:广告不显示(尝试了一切)
【发布时间】:2014-10-20 20:36:44
【问题描述】:

我的问题是 AdMob 广告没有在我的物理设备上的测试应用中展示。我在这里几乎浏览了所有类似的问题,没有运气。所以我的 xml 中有经典的 AdView 声明:

<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
         android:id="@+id/adView"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         ads:adUnitId="my_actual_publisher_id"
         ads:adSize="BANNER"/>

我的清单包含所需的权限、广告活动和 Google Play 服务:

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

<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" />

我确保我的广告有足够的空间:我把它放在一个 TableRow 中,并且下一个 TableRow 有足够的空间来展示。为我的 AdView “保留”的空间与我的预期一致。

在相应的片段 onCreate() 中,我请求了一个新广告(我已经调试了那段代码,它已正确执行):

AdView adView = (AdView) result.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().addTestDevice("my_real_device_id").build();
    adView.loadAd(adRequest);

我的 AdMob 信息中心没有显示任何请求...我做错了什么?谢谢

编辑:一个奇怪的事实可能值得一提:我试图在 TableLayout 中向上移动包含我的广告的 TableRow,以防万一这是渲染空间或类似问题。当我尝试以编程方式获取曾经是我的广告 before 而现在是 after 的 View 时,我现在遇到了类转换异常:

Button clearButton = (Button) view.findViewById(R.id.clearButton);

在我的 activity.onCreate() 中,我正在执行上面的代码来执行一些初始化,现在这段代码失败并出现异常:

java.lang.ClassCastException: android.widget.TableRow 无法转换为 android.widget.Button

就好像我的 R 类没有重新编译,它的指针指向任何地方!!!???

【问题讨论】:

  • 您在 logcat 中看到了什么(与 Admob 标签相关)?

标签: android admob


【解决方案1】:

我曾经在我的应用程序中添加这个简单的代码。希望它也能帮助你...... :)

private static final String AD_UNIT_ID = "ca-app-pub-7742695752659854/6319679360"; // admob id

// ******************************** For Admob

    private void createBanner() {
        // Create an ad.
        adView = new AdView(this);
        /*
         * Ad unit name : MobilePASystemBanner in the AdMob Website. App Name :
         * MobilePASystem .
         */
        adView.setAdSize(AdSize.BANNER);
        adView.setAdUnitId(AD_UNIT_ID);

        /*
         * Add the AdView to the view hierarchy. The view will have no size
         * until the ad is loaded.
         */
           // a linear layout at the bottom to display an add (make it in your xml also)
        mlnr_displayBanner.addView(adView);  

        /*
         * Create an ad request. 
         */
        AdRequest adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();

        /*
         * Start loading the ad in the background.
         */
        try {
            adView.loadAd(adRequest);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

在要显示添加的地方调用此方法。

将此添加到您的清单中:

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

不要忘记添加库。

****************** 检查您是否从此处获取您的添加单位 ID *******************

【讨论】:

  • 这几乎是我所拥有的......我必须非常接近,因为例如当我忘记 AdView 定义中的“adSize”时,我有一个很好的警告出现在我的广告应该在的位置。我现在在想 a) xmlns 中的问题 b) 不正确的发布者 ID(我使用的和你不一样,我的开头是“pub-”而不是“ca-app-”)
  • 好吧,“ca-app-pub-”是要使用的前缀。如果这个关键字不在您的 id 中,那么我很确定 admob id 中有一些错误。
  • 我在答案中附上了一张图片。你可以检查一下你的添加单位id是不是这样。
  • 谢谢,我今晚试试。当我意识到单独使用“pub-”时,我产生了怀疑,adMob 无法区分来自同一发布商的两个应用程序。奇怪的是我使用了那个 ID,因为这几乎是我从互联网上所有我能读到的东西中找到的那个......我猜我看错了 :)
  • 是的,就是这样!感谢您的帮助,它现在可以正常工作了:)
猜你喜欢
  • 2018-12-14
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多