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廣告囉!

相關文章

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

18

Android Vuforia with jPCT-AE (4) – 載入 3DS 測試

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。
2016-07-06 10:24:33
hans

18

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

18

Android Vuforia with jPCT-AE (2) – 載入 obj 測試

上一篇 Android Vuforia with jPCT-AE (1) –
2016-07-06 08:24:55
hans

18

Android Vuforia with jPCT-AE (1) – 基本範例

說來慚愧,從 Google Adsense 被 ban 之後,就好久沒有發文了,站上 Vuforia 的文章也已經是好久以前的事情了 (遠目),最近有專案要用到 Vuforia,爬以前的文回來看,蛙哩咧 ... 現在已經更新到 Vu
2016-07-06 07:57:58
hans

18

Google Nexus 7 (2013 版本 USB Driver 安裝)

(2015-02-05 更新) Nexus 7 二代在 ASUS 官網上面寫叫做 Nexus 7 2013,前陣子把電腦更新成 Windows 8.1 64bit 之後,這台 Nexus 7 2013 的 driver 就一直裝不上去,裝置
2014-03-15 13:55:42
hans

18

[網站管理員工具] Google 網站管理員工具:http://s9134131.pixnet.net/ 的內容可能已違反品質規範

前幾天突然收到一封 Google 寄來的信,標題是小蛙在 pixnet 的網站 - 生活蛙齋違反品質規範,這篇文章記錄一下如果自認為自己的網站是沒有違反 Google 規定的解決方式。
2013-06-08 11:27:25
hans

18

org.apache.jasper.JasperException : Expecting “jsp:param” standard action with “name” and “value” attributes

今天遇到一個很有趣的問題,有個系統要從舊的環境移到新的環境,在程式碼沒有變動的情況下,新環境會出現這個錯誤,由於舊的環境 JDK 跟 Tomcat 真的是太舊了,會有這些錯誤不意外,環境不一致所造成的不相容也只好慢慢修掉。
2012-10-02 09:50:48
hans

18

Google Admob透過HSBC Direct電匯方式請款

(2014-01-23 更新) 過了好久久好久終於可以有機會請款,在Admob控制台中可以看到提供有兩種匯款方式(
2012-06-30 14:17:29
hans

18

Android Tabhost with FragmentActivity

(2013-01-30 更新) 接續Android TabHost
2012-02-29 23:26:55
hans

18




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha