2012年4月30日

Google廣告,AdSense,AdMob Tutorial 教學

一開始以為Google的AdSense 應該會很容易,上了Admob的官網照著做,結果到處都有問題,結果花了一整天一直有問題網路上一大堆的方法,偏方都沒用。
現在把問題記錄下來方便,如果有人跟遇到跟我一樣的問題,希望對你有所幫助。

  • Step 1

    第一步當然是,上網去下載 Google AdMob廣告SDK 這篇文章撰寫時sdk版本是6.0.0


  • Step 2

     解開文件後記得要把 GoogleAdMobAdsSdk-6.0.0.jar 更名成 GoogleAdMobAdsSdk.jar , 然後在 Eclipse Project 底下開個目錄libs,把這個檔案copy
進去



註:請注意,如果沒有改名就Copy進去,會有 Could not find class com.google.ads.AdView 這個怪問題。信不信,我花了半天才找到這個問題,網路上也有一大堆人在問這個奇怪的問題,但就是沒有正解,
爬文爬了一個下午,發現終於有解答了。

有興趣的人可以看一下,就在下面這篇文章,裏面的一小段話,而且他還不是被StakeOverfllow提問人列為正解喔,不只細看還真以為沒解勒。
getting Fatal Exception caused by admob

  • Step3 設定BuildPath

      在Project上按右鍵->build path -> configure build path ,選 add jars 加入上一個步驟加入的GoogleAdMobAdsSdk.jar檔。

  • Step4 設定AndroidManifast.xml

       加入權限
       <uses-permission android:name="android.permission.INTERNET" />
       <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

       加入Activity


<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>


註:看了文件說,只有3.2才支援 screenSize 和 smallestScreenSize,如果你把這兩個傢伙去掉,那就會發生 you must have AdActivity declared in AndroidManifest.xml with configChanges. 這種鬼打牆的情形出現,明明就已經加了AdActivity為什麼還跟我說要設定AdActivity???

結果是 Admob 6.0 支援 Android SDK 3.2 以上,所以一定要把 SDK 改為 3.2以上在重新 Compile過


一樣如果有興趣想進一步研究的,可以看看StakOverflow的解答
Admob implementation Error

  • Step5 取得發佈商ID

      上Admob 取得發佈商ID

  • Step6 在 main.xml 加入AdView

<com.google.ads.AdView android:id="@+id/adView"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" 
             ads:adUnitId="你的 發佈商 id"
             ads:adSize="BANNER"
             ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
             ads:loadAdOnCreate="true"/>

  • Step7 在你的Activity裡面的onCreate加入

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     AdView ad = (AdView) findViewById(R.id.adView);
     ad.loadAd(new AdRequest());
}

完工。









2 則留言:

  1. 請問一下,你說的 只有3.2才支援 screenSize 和 smallestScreenSize 所以我再開發android 2.3程式的時後到底要不要加上這兩個呢?? 因為如果我不加上就會出現錯誤,加上的話要把版本改為3.2以上才能使用。 那我把版本改為3.2 發布到APPSTORE時 2.3的手機還是能夠使用嗎?? 還是一定要發布2.3版本ANDOIRD2.3版本的手機才能執行

    回覆刪除
  2. KVNS 你好,
    不好意思現在才看到體的留言,不知道你的問題解決沒?

    我的設定就是照著上面的方式做的,加入的sdk是3.2但是使用者是可以從2.2以上的設備都可以安裝跟執行的,(如果你的程式沒有用到2.2以上的功能)。

    可以參考我的APP,基本就是按照上面的方法做成的,也支援2.2的設備喔。
    https://play.google.com/store/apps/details?id=tw.com.hertz.antisleep&feature=search_result#?t=W251bGwsMSwyLDEsInR3LmNvbS5oZXJ0ei5hbnRpc2xlZXAiXQ..

    回覆刪除