2011-03-18 297 views
16

你好 我嘗試做一些示例程序,在Android手機上顯示廣告,我試着在V2.2的模擬器上測試它 代碼中的所有內容似乎都很好,但調試器中的AdListener顯示即:Admob - 沒有廣告顯示

響應消息爲零或空;
onFailedToReceiveAd(無廣告顯示)。

有沒有辦法讓它成爲我的錯?有沒有人遇到同樣的問題? 繼承人的代碼 清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.AdTest" 
android:versionCode="1" 
android:versionName="1.0"> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".AdTest" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
<!-- AdMobActivity definition --> 
<activity android:name="com.google.ads.AdActivity" 
android:configChanges="orientation|keyboard|keyboardHidden" /> 
</application> 
<uses-sdk android:minSdkVersion="7"></uses-sdk> 
<!-- AdMob SDK requires Internet permission --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

佈局XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
/> 
</LinearLayout> 

和活動代碼

package com.AdTest; 
import com.google.ads.*; 
import com.google.ads.AdRequest.ErrorCode; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.LinearLayout; 

public class AdTest extends Activity implements AdListener{ 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    LinearLayout layout = (LinearLayout)findViewById(R.id.main); 
    AdView adView = new AdView(this, AdSize.BANNER, "anonymouse"); 
    // Unit ID is correct, I changed it on purpose while pasting here 
    adView.setAdListener(this); 
    layout.addView(adView); 
    AdRequest request= new AdRequest(); 
    adView.loadAd(request);    
    } 

public void onFailedToReceiveAd(AdView adView) 
    { 
     Log.d("AdListener", "onFailedToReceiveAd"); 
    } 

    public void onFailedToReceiveRefreshedAd(AdView adView) 
    { 
     Log.d("AdListener", "onFailedToReceiveRefreshedAd"); 
    } 

    public void onReceiveAd(AdView adView) 
    { 
     Log.d("AdListener", "onReceiveAd"); 
    } 

    public void onReceiveRefreshedAd(AdView adView) 
    { 
     Log.d("AdListener", "onReceiveRefreshedAd"); 
    } 

    @Override 
    public void onDismissScreen(Ad arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { 
      Log.d("AdListener", "onFailedToReceiveAD"); 

    } 

    @Override 
    public void onLeaveApplication(Ad arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPresentScreen(Ad arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onReceiveAd(Ad arg0) { 
     Log.d("AdListener", "Received succesfully"); 

    } 
} 
+0

單曲沒有任何方法,它是我的錯'我們不」?直到我們看到您的代碼才知道。 – Aliostad 2011-03-18 10:55:24

回答

2

我有

面臨同樣的問題

onFailedToReceiveAd(無廣告顯示)。

由於某些原因,AdMob似乎沒有爲我們的應用發送廣告內容。即使我在測試模式下仍然沒有廣告。

我在AdMob上創建我的自家廣告以驗證我的申請。這是一種比測試模式更簡單的開發方式。

1

我也有同樣的問題。因此,我更改了代碼以將測試模式設置爲true,然後Admob測試廣告開始在模擬器上顯示。在onCreate()方法試試這個:

LinearLayout layout = (LinearLayout)findViewById(R.id.main);  
AdView adView = new AdView(this, AdSize.BANNER, "anonymouse");  
// Unit ID is correct, I changed it on purpose while pasting here  
adView.setAdListener(this);  
AdRequest request = new AdRequest(); 
request.setTesting(true);  
adView.loadAd(request); 

如果你一個真實的設備,仍然沒有廣告顯示在運行它,那麼我想它可能有一些利用AdMob做填充率。

+0

雖然填充率雖然很低(約20%),但我發佈了自己的應用程序,並在此實現中發佈了大約100個請求後,真正的廣告開始出現在真實設備上。這證明代碼是正確的,Admob方面存在問題。 – 2011-04-18 19:10:02

0

1 /獲取最新版本的SDK /顯示
2嘗試AdMob的演示與發佈者ID
3 /嘗試在測試模式(這應該總是工作)
4 /嘗試添加一些樣板房廣告(當沒有可用的其他廣告)
5 /試着改變你的關鍵字

一般來說,AdMob的打印詳細的錯誤記錄(ID丟失,活動清單等丟失)。

0

我已經完成了admob集成,並且在設備以及仿真器上運行。

所以,請嘗試以下代碼:

我認爲你必須從主刪除的TextView。XML

也試試這個:

1)在您的AdMob的A/C 2)創建新的應用程序,然後簡單地通過新的

試試吧兄弟取代以前的應用程序的ID。

1

將測試模式更改爲true。請注意,廣告只有在至少有3次訪問嘗試時纔會顯示。

+0

我並不懷疑你,但是你是否有鏈接指出在3天的訪問嘗試之前不會顯示廣告? – CrackerJack9 2011-08-08 16:55:35

+0

對不起,我不記得我在哪裏閱讀,也許在SDK本身。 – 2011-09-03 05:44:53

1

看來最新的admob SDK 4.0.4不會在1.5設備上顯示廣告。

在模擬器中它可以正常工作1.6+,但不是1.5。

我認爲它來自AdSense新的交叉廣告。據我現在可以告訴SDK現在將webview視爲視圖的可視組件,以便它可以發佈不同類型的廣告。仔細看看日誌顯示WebView.multitouch啓用 - 因爲1.5蘋果從嬰兒車扔掉玩具並且有一個dummyspit,我不支持多點觸控(對於我們在Java中的開發人員)(我明白他們相信只有他們被允許)可能啓用webview上的多點觸控導致內部異常,並且該視圖永遠不會被創建,因此無法從admob http服務器接收到HTML回覆。

也看到這個link

2

我實現AdListener的關於我的活動,並將其設置爲監聽的AdView,然後添加以下

public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) 
{ 
    Log.d("AdMob", "Failed to receive an Ad. Requesting a new one..." + arg1); 
    arg0.stopLoading(); 
    arg0.loadAd(new AdRequest()); 

} 
+1

ciclyc冗餘怎麼樣?如果失敗,您可以使用此代碼調用自己 - 無限循環。 – Kostadin 2012-10-15 07:06:36

0

我也搞定這個問題。在加載之前,您可以嘗試自定義請求。就像這樣:

AdRequest re = new AdRequest(); 
//re.setTesting(true); 
re.setGender(AdRequest.Gender.FEMALE); 
adview.loadAd(re); 

我在這裏把我的例子,apk文件和源代碼,你可以嘗試:

Add Google Admob in Android Application