AdWhirl是一套廣告輪播平台,開發者如果同時有許多廣告商,例如:AdMob, Vpon, KuAD …等等,就可以透過AdWhirl依照自己的需求來設定百分比輪播廣告,這篇文章小蛙要記錄使用Google AdWhirl來播放AdMob廣告

可能有些人會覺得如果只用AdMob就依照上一篇文章使用AdMob就好啦!為什麼還要用到AdWhirl,如果只是要放AdMob的確不需要用到AdWhirl,小蛙會用到AdWhirl的原因是想比較各家廣告商在同一期間內可以獲得的收益狀況,還有一個原因是對於台灣地區來說,由於在地化的關係,Vpon及KuAD撥放出來的廣告會比AdMob的廣告更容易吸引使用者。
千萬注意,這邊小蛙用的AdWhirl是Google AdWhirl by AdMob(https://www.adwhirl.com/),由於AdWhirl是Google Project中的Open Source,所以各家廣告商為了吸引開發商或廣告主,都會打著「整合AdWhirl平台,可以輪播自己想要的廣告」的名號,像Vpon自己的AdWhirl就增加了「自動判斷地區」的服務,由於Vpon服務的客戶有台灣地區及大陸地區,如果能在台灣地區撥放台灣當地的廣告,大陸地區撥放大陸當地的廣告,這樣會使的廣告的投放更有效率(我們會去擊點不相關廣告的機率應該很低吧!比如說在台灣卻去點廣州車商的特惠活動,不小心點到另當別論);kuSOGI也推出自己的AdWhirl,其中強調的就是可以「同時」(也就是設定比例自動輪播)自家的kuAD以及上面提到的Vpon與AdMob廣告。下面三張圖是三家廣告商的AdWhirl,除了網址列之外,網頁外觀一模一樣,不小心就會搞錯。
Google AdWhirl
adwhirl-22
kuSOGO AdWhirl
adwhirl-21
Vpon AdWhirl
adwhirl-20
如同Android一般,AdWhirl由於是Open Source,意味著各家廠商可以依照自己的需求更改程式碼,也使得各家的AdWhirl可能會有不同的行為模式,Google AdWhirl的使用方法未必會與Vpon AdWhirl或kuSOGI AdWhirl相同,小蛙還是要強調這篇文章記錄的是Google AdWhirl,接下來進入正題。

  • AdWhirl申請及設定
  1. https://www.adwhirl.com/註冊一個Google AdWhirl帳號。adwhirl-5
  2. 認證完成功登入後進入「Apps」頁籤,點選「Add Application」。adwhirl
  3. 填入應用程式相關資訊,軟體名稱、應用程式URL(market連結)、廣告平台,其他的小蛙都是直接用預設值。(如果要取得地區資訊,把Allow Location Access改成ON)
    adwhirl-1
  4. 新增完成後就可以在程式列表中看到剛剛新增的應用程式,點選進去。adwhirl-2
  5. 點選AdMob旁邊的「Edit Settings」,將AdMob的發佈商ID填入(Google AdMob for Android步驟6)。並且將Ad Serving選擇成ON,% of Traffic設定成100%。每次更動都別忘了點選最下方有個「Save Changes」。到這邊AdWhirl就設定完畢了。接下來介紹在Android程式的部份。
    adwhirl-23
  • 在Android程式中加入AdWhirl + AdMob
  1. 到「Dev Resources」頁面的「Download the lastest version」下載最新版的AdWhirl套件。adwhirl-25
  2. 下載「AdWhirlSDK_Android_3.1.1.zip」(視當時版本,總之選擇_Android就是了)adwhirl-26
  3. 解壓縮zip檔後得到AdWhirlSDK_Android_3.1.1.jar,與Google AdMob for Android步驟4得到的GoogleAdMobAdsSdk-4.3.1.jar加入到Eclipse中(加入的方法請參考Google AdMob for Android步驟10)。加入成功會在Eclispe專案中看到如下圖。adwhirl-27
  4. 先設定需要擺放廣告的layout,小蛙在主layout main.xml中新增了一個@+id/mainLayout來放置AdWhirl輪播的廣告。
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <!-- 用來放置AdWhirl輪播的區塊 -->
        <LinearLayout
               android:id="@+id/mainLayout"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:paddingBottom="10dp">
        </LinearLayout>
    </LinearLayout>
  5. 接著在AndroidManifest.xml加入user permission,並且加入一個新的Activity。。
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.hans.adwhirl"
        android:versionCode="1"
        android:versionName="1.0" >
        <uses-sdk android:minSdkVersion="8" />
        <!-- 必要 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!-- adwhirl 選用,如果有開啟地區偵測 -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:label="@string/app_name"
                android:name=".TestAdWhirlActivity" >
                <intent-filter >
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <!-- 一定要新增用來播放廣告的Activity -->
            <activity
                android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
                android:name="com.google.ads.AdActivity" />
        </application>
    </manifest>
  6. 程式碼的部份。
    package com.hans.adwhirl;
    import com.adwhirl.AdWhirlLayout;
    import com.adwhirl.AdWhirlManager;
    import com.adwhirl.AdWhirlTargeting;
    import com.adwhirl.AdWhirlLayout.AdWhirlInterface;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.LinearLayout;
    public class TestAdWhirlActivity extends Activity implements AdWhirlInterface {
        AdWhirlLayout adWhirlLayout;
        private static final String ADWHIRL_KEY		= "換上自己的adwhirl_key";
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            // 預留放置廣告的layout
            LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
            // 初始化 adwhirl layout
            adWhirlLayout = new AdWhirlLayout(this, ADWHIRL_KEY);
            AdWhirlManager.setConfigExpireTimeout(1000 * 60);
            // 年齡
            AdWhirlTargeting.setAge(23);
            // 性別
        	AdWhirlTargeting.setGender(AdWhirlTargeting.Gender.MALE);
        	// 郵遞區號
        	AdWhirlTargeting.setPostalCode("115");
        	// 是否為測試模式,上架時要改成false
        	AdWhirlTargeting.setTestMode(true);
        	// 將 adwhirl layout 放入我們預留的顯示廣告的 layout 中
        	layout.addView(adWhirlLayout);
        }
        @Override
        public void adWhirlGeneric() {
            // TODO Auto-generated method stub
        }
    }
  7. 這時候會遇到一個錯誤。解決辦法就是把專案的SDK Version設定成3.2+(設定方法請參考Google AdMob for Android步驟11)
    Description	Resource	Path	Location	Type
    error: Error: String types not allowed (at 'configChanges' with value 'keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize').	AndroidManifest.xml	/TestAdWhirl	line 26	Android AAPT Problem
  8. 如果錯誤還是存在,可以考慮Project –> Clean –> 選擇要清除的專案,執行完畢之後錯誤就消失了!
  9. 趕快運行看看,就可以在模擬器或手機上看到Admob廣告囉!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *