Google AdMob for Android

這幾天小蛙搞Android Ads花了不少時間,這篇文章紀錄一下Google AdMob如何在Android App中加入廣告。之後會把AdWhirl + Vpon, KuAD, AdMob … 操作的流程也陸續記錄下來。

這篇文章只分享單純在加入Google AdMob,後續再紀錄導入AdWhirl過程。

  1. 第一步先註冊 AdMob 帳號,網站是正體中文,申請的部分小蛙就略過了。
  2. 登入之後點選「網站與應用程式」頁籤中的「新增網站/應用程式」,接著新增Android應用程式。
  3. 輸入應用程式名稱、URL、類別及應用程式說明。
  4. 完成後會跳到網站程式碼下載頁面,直接點選「下載 AdMob Android SDK」,下方有官方文件連結(http://code.google.com/mobile/ads/docs/android/),其實裡面已經寫得很詳細了。
  5. 回到主頁面後可以看到剛剛新增的「我的股票精算師」已經出現在網站/應用程式列表中,點選「管理設定」。
  6. 紅色框框部分最好選擇上方的測試模式設定,如果不想莫名其妙被Google停權的話…
  7. 回到Eclipse Android專案部分,在專案上點選滑鼠右鍵 -> Properties -> Java Build Path -> Libraries -> Add External JARs -> 選取步驟4下載的GoogleAdMobAdsSdk-4.3.1.jar -> OK。
  8. AndroidManifest.xml中新增一個com.google.ads.AdActivity。(放在<application>放在這</application>中間>)
    <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
  9. AndroidManifest.xml中新增兩個users-permission
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  10. 加入程式碼。(下方是官方的範例)

    public class BannerExample extends Activity {
      private AdView adView;
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 建立 adView
        adView = new AdView(this, AdSize.BANNER, "這裡改成步驟6看到的發佈商ID");
        // 這裡是指定廣告要出現的layout,把R.id.mainLayout換成自己的
        // 或者是把自己的指定成 android:id="@+id/mainLayout"
        LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
        // 把admob view加入
        layout.addView(adView);
        // 載入廣告
        adView.loadAd(new AdRequest());
      }
      @Override
      public void onDestroy() {
        adView.destroy();
        super.onDestroy();
      }
    }
  11. 這裡有一個部份要注意,就是在專案上點選滑鼠右鍵 -> Properties -> Android -> Project Build Target 要選 Android 3.2,不然一直會提示AndroidManifest.xml錯誤(參考自Admob的另一個選擇︰Vpon @ 小鰻的Android學習筆記

有什麼問題都可以留言一起討論,如果小蛙幫得上忙的話,最近被這些廣告搞到快昏頭了,之後再把 adwhirl, vpon, kuad, admob … 等整合的方法記錄下來。

7 則留言

  1. 請問一下喔@@~我一步一步照著做,也有參考很多跟您類似的方法或是google api文件~但最後在模擬機上發布測試時,總是彈出”應用程式未預期結束的視窗”…這,我哪裡做錯了嗎@@….
    而且這種情形只有在我加入admob的時候才有,拿掉admob,應用程式又可以在模擬器上正確運作….不曉得您能幫我解惑一下嗎…感激阿

    • Dear zemaitis:
      光是從這樣文字敘述小蛙也很難幫得上忙>< 可能要麻煩您附上DDMS中的Logcat錯誤訊息, 正常來說如果發生錯誤的話,Logcat應該會顯示錯誤訊息才對。 如果有詳細Admob程式碼部分及xml部分就更好了! (可以直接貼這邊或是mail給小蛙) 初步聽起來eclipse可以給過,卻又發生錯誤的情況, 很有可能是NullPointerException吧! (純粹猜測,要看到錯誤訊息或原始碼才能做判斷)

  2. 板主你好:
    我是一個剛進入android市場的新手,寫了一個簡單的程式已發佈到google play,目前想將vpon的廣告加進程式內卻出現一些問題,然後我將它的sample程式在模擬器上執行也無法執行(跳出一個對話框說此程式stop,須強制關閉)(Logcat上一堆紅,其中有””06-09 10:27:38.819: E/dalvikvm(577): Could not find class ‘com.vpon.adon.android.AdView’, referenced from method com.mar.unit_conversion.Area.findViews
    以及 “06-09 03:11:22.450: E/AndroidRuntime(357): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597”)等等,不知是何原因,不知版主是否方便能為我解惑,麻煩你了,謝謝!!

    • Dear mm:
      adView 的高度可以透過 adView.getHeight() 取得,如果取到的結果是 0 的話,
      表示 adView 裡面的內容還沒有完全載入,所以是 0,
      可以從 implements AdListener 介面裡的 onReceiveAd(Ad ad) 測試,
      第一次的時候是 0,第二次取得廣告的時候就可以得到真正的高度了,
      應該可以從這邊著手,延後取得高度的時間,
      onReceived 方法看起來只是開始載入廣告的時候呼叫的,
      此時廣告還沒有完全在 AdView 中呈現,
      提供您參考囉!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *