即使在测试模式下,Android-Onfailedtoreceivead(广告请求成功)也会发生?

时间:2014-08-26 22:36:43

标签: android admob ads

我一直试图在我的Android应用上运行广告但是它们不会出现。我搜索了很多网站,但没有人得到答案。最后我开始使用本教程http://www.smartlab.at/articles/admob_advertising_android_tutorial/。我下载了这个例子,它运行得很好,所以我复制了代码。但广告不会显示在我的应用中。

我知道由于缺少广告资源而收到“onfailedtorecieve(广告请求成功)” 错误意味着我的代码很好,但问题是我处于测试模式,并且在我试图计算如何添加广告的数小时内,我发现即使缺少广告资源,广告也应始终显示在testmode中。我输入了我从logcat获得的设备ID,但仍然没有广告出现。这是我的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 


xmlns:tools="http://schemas.android.com/tools"
xmlns:myapp="http://schemas.android.com/apk/res/com.example.test"

android:id="@+id/main_view"
android:layout_width="match_parent"
android:layout_height="match_parent"

android:background="#FFFFFF"
android:debuggable="true"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >

tools:context=".MainActivity" >  


      <com.google.ads.AdView
    android:id="@+id/adview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="AD UNIT ID"
    ads:loadAdOnCreate="true"
    ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
    />    

我确保将“TEST_DEVICE_ID”替换为我的实际设备ID,将“AD UNIT ID”替换为我从admob获得的广告单元ID。

以下是我的活动中的代码:

    @Override

    protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE); //hide title bar


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RelativeLayout layout=(RelativeLayout)findViewById(R.id.main_view);





     adView = (AdView)this.findViewById(R.id.adview); 
     adView.loadAd(new AdRequest());

}

像我说什么都没有出现一样。但是,如果我将ad_unit_id放在我从教程网站下载的示例中,它就能完美运行。

这是他们的代码:

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

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

<com.google.ads.AdView
    android:id="@+id/adview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="a1501676c633fac" <!-- This is the adunitid in the tutorial i downloaded-->
    ads:loadAdOnCreate="true"
    ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
    />
 </LinearLayout>

这是他们的活动代码:

package at.smartlab.androidbook.AdMobTest;

import com.google.ads.AdRequest;
import com.google.ads.AdView;

import android.app.Activity;
import android.os.Bundle;

public class AdMobTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    // Look up the AdView as a resource and load a request.
    AdView adView = (AdView)this.findViewById(R.id.adview);


    adView.loadAd(new AdRequest());
}
}

有趣的是,我没有必要将我的实际设备ID放在我下载的示例的xml代码中,无论我输入我的ID还是不这样做,它都能正常工作。此外,我可以使用我的adunitid或使用他们的,它可以正常工作。

我确保在androidmanifest.xml文件和正确的标签中添加适当的权限。老实说,我不明白为什么广告不会出现在我的应用上,而是出现在我下载的示例中。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

首先,你要使用旧的教程。

标签现在应该是 Com.Google.android.gms.adView ..不要介意我手机上的随机大写字母。您还需要确保拥有适用于Google Play服务的SDK

<强> XML

   //at the top
      xmlns:ads="http://schemas.android.com/apk/res-auto 

  <com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
    ads:adSize="BANNER"
    ads:adUnitId="your new pub Id goes here ca-app-something">

</com.google.android.gms.ads.AdView>

<强>的java

       //calling ads
       adView=(AdView)findViewById(R.id.adView);

       AdRequest adRequest=new.   AdRequest.Builder().build();
      adView.loadAd(adRequest);

<强>清单

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

测试广告的代码

           adView=(AdView)findViewById(R.id.MyAdView);
  AdRequest adRequest=new.AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).addTestDevice("7XXXXXXXXXXXXXXXXXXXXX").build();
 adView.loadAd(adRequest);