WP7 - 開發免費版程式,就來加個廣告吧! - 1

Windows Phone 7 - 開發免費版程式,就來加個廣告吧!

學習WP7的開發,我一直都在周圍環繞,因為想把一些由Silverlight獨立出來for phone的部分,先下手看懂了,

再回歸去看Silverlight最大主體與WPF的深奧之處。因此,學習起來不會比較快,但我至少可以按我的進度進行,

今天要談論的,其實是在學習開發WP7程式時,一個算是要了解的課程:「免費程式與廣告」。

 

其實撰寫免費程式對開發人員而言,其實不會太難,尤其是本來就沒有打算透過賣App賺錢的人,其實重要的是

免費程式裡夾帶的廣告訊息,才是能快速讓自己賺錢的好方法。因此,今天就來了解WP7針對手機廣告這一塊提

供的SDK:「AdMob」與「Smaato」,

 

在往下說明這三個SDK的使用方法時,其實我是第一次撰寫提供廣告的應用程式,如果你跟我一樣,

那也許你會想到我去這三個網站都需要註冊一組publisher ID,並且加入到App中,才有辦法取得廣告資訊。

那到底從你程式裡點擊了廣告是算你賺的還是你要付的呢

根據我研究了一下部落格廣告與行動網路廣告的運作模式之後,其實每一個註冊的publisher ID,是讓廣告商用於

記錄廣告被點擊是由那一個publisher ID而來,然而,當使用者有點擊廣告,那收益就會記錄到你的publisher ID中。

 

〉AdMob

這間公司相信大家都很熟悉,它是被Google買走的一間行動網路公司,負責提供行動、網路上的廣告內容,

包括:活動內容、應用程式、網站等資訊,目前也是iPhone App或Android App的開發上最常嵌入廣告的一個,

至於AdMob的使用方法,可以參考<<Windows Phone 7 廣告服務應用 - AdMob 篇>>,但由於該篇內容撰寫的時候,

AdMob沒有提供WP7的SDK,所以跟現在的寫法有所不同,所以下方補上新的SDK使用方法:

   1: <google:BannerAd 
   2:    xmlns:google="clr-namespace:Google.AdMob.Ads.WindowsPhone7.WPF;assembly=Google.AdMob.Ads.WindowsPhone7"
   3:    AdUnitID="" />

其中[AdUnitID] 即是在AdMob中為要加上廣告的程式,所申請的ID。過去在AdMob加入到WP7時,提供測試的屬性,

現在都不需要了,只需要加上上方的程式片段,並且加上自己的ID,就可以在Emulator完成測試的功能。

以下簡單看個範例

〉實作範例

以公車動態查詢使用的廣告為例,如下:

Admob

‧結果畫面

 Admob1 Admob2 如右二張圖,是在Emulator上測試的結果,當點擊時,它將會進到到google

的畫面,這是正常的,所以不同擔心。實際的廣告效果要等把程式發佈到Device才真正會有效果。

[注意]

AdMob目前測試下來的結果,它的廣告不會很常在程式中出現,大約廣告出現的機率是14.11%。老實說沒有很高的出現率,

這個問題網路上很多人反應,不過當使用Android手機時,他可以一直看到AdMob的廣告,所以…WP7上廣告真的很少。

 

〉Admob & Location

Admob支援透過設定的方式,讓廣告根據指定的地點或區域來顯示相對應的廣告。<Location>這一篇技術文件裡,

也有支援如何透過「System.Device.Location」取得GPS資訊與Demo程式。不過如果你不想做到GPS這麼麻煩的話,

也可以使用如下的指令碼來告知Admob banner元件的location:

   1: //指令locationDescription,記得要refresh一下adcontrol元件,
   2: //讓它向admob重新要求取得廣告資訊。
   3: AdControl.BeginUpdates(); 
   4:  
   5: AdControl.AdUnitID = "MY_AD_UNIT_ID"; 
   6:  
   7: //LocationDescription使用的格式
   8: AdControl.LocationDescription = "Mountain View, CA"; 
   9:  
  10: AdControl.EndUpdates();

 

〉Admob收付款機制

AdMob的收付款機制,主要提供電匯與PayPal的方式,電匯需要向您的使用銀行詢問相關的資料,至於使用PayPal的話,

需要先去註冊PayPal帳號,並且使用信用卡認證自己的帳號。這樣當AdMob結算時,才有辦法匯錢給你。另外,如何把PayPal裡的錢

轉成實際的金額,也可以參考這一篇<從PayPal領錢>。

admob3 admob4

==========================

Smaato

這是另一個蠻有名的行動廣告網站,它更新的頻率比AdMob快一點,並且提供用戶自訂需要Location服務與限制。

Smaato SDK支援也很豐富,包括:iPhone、Android、Windows Phone 7,更支援

QT、Symbian S60、WRT、BlackBerry,所以對我們開發者而言,非常容易上手。不過比較可惜的部分,它目前還沒

有支援繁體中文的網站說明。要取得SDK的話,需要先註冊帳號才有辦法取得。

Smaato1 下載WP7 SDK可以選擇使用的SDK是否需要location,

二者的差別,其實不用太在意,因為location的使用在亞太地區廣告量還是相對比較少的部分,所以就直接下載location就好,

Smaato2 下載的SDK也準備的非常好,也提供XNA、Silverlight更有開發手冊,非常方便。

以下就簡單使用的Silverlight範例來加以呈現。

Smaato3

Smaato與AdMob比較不同的地方,它除了PublishID之外,更有一組AdSpaceID的帳號,這二個帳號主要用途跟定義如下:

‧PublishID

定義指定發佈的程式或網站,以WP7 App為例,當註冊的WP7 App是發佈者,那Publish ID代表的就是指App,當然你也可

以在其他的App使用相同的Publish ID,但它仍會記錄在此ID中。

‧Ad Space ID

一個Account可以最多註冊5個Ad Space ID,當然如果需要更多的AdSpaceID,可以向Smaato申請。

當這二個屬性的值為0時,代表是測試帳號

 

其他可以提供設定廣告元件的屬性如下:

屬性 描述 目的 類型 範例
Age 設定讀取廣告的用戶年紀。 定義指定人口年紀範圍。 int 30
Gender 設定讀取廣告的用戶性別。 定義指定人口性別。 character m或r
Kws 設定廣告搜尋與呈現的內容。 定義網頁或程式內容為何。 string,
用「,」當分隔符號

Automotive
news, cars

Qs 設定廣告呈現的關鍵字。 定義搜尋字的關鍵參數。 string
用「,」當分隔符號

Madonna
ringtone, fast,
food, football

City 設定讀取廣告用戶的城市。     redwood+city
(參數中如有空白用+號)
State 設定讀取廣告用戶的州。     california
Country 設定讀取廣告用戶的國家。     united+states
(參數中如有空白用+號)
Countrycode 設定讀取廣告用戶的國家代碼。   string us
Zip 設定讀取廣告用戶的地區號碼。   string 94539
AdInterval 設定廣告元件更新週期。 單位:毫秒。 int 預設60000(60秒)
LocationUserOk 設定廣告元件是否使用Location的功能。 ture,廣告元件會配合WP7 Location Service一起使用。 bool true/false
BackgroundColor 設定廣告元件呈現字樣的色彩。 預設使用WP7主題的顏色    
ShowErrors 設定當廣告元件取得廣告失敗時,是否呈現出來。   bool true/false
PopupAd 設定廣告是否彈出顯示。 true,代表heigh預設為0,當有廣告抵達時,廣告元件的height會動態依照PopupAdDuration設定的時間調整來顯示廣告內容。 bool true/false
PopupAdDuration 設定廣告持續彈出時間。 單位:毫秒,配合PopupAd=true時使用。 int 預設10000(10秒)
Status 取得目前廣告元件的狀態。 依照呼叫StartAds()與StopAds()來改變。 string started/stopped

上面有這麼多屬性,其實最常被用的,不外乎:Age、PopupAd、AdInterval與其他相關Location的使用,

透過Location的使用可以提供廣告元件向SOMA要求廣告時,更容易取得對應的廣告內容,但是它與AdMob一樣,

如果你設定的Location是相關亞洲地區的話,其實廣告的量相對是比較少的。

 

以下舉個簡單的實作範例:

〉實作範例

‧XAML:

   1: <smaato:SomaAdViewer 
   2:         xmlns:smaato="clr-namespace:SOMAWP7;assembly=SOMAWP7" 
   3:         Name="somaAdViewer" 
   4:         PopupAd="True" ShowErrors="True"
   5:         Adspace="0" Pub="0" />

‧Code

   1: public AdvPage()
   2: {
   3:     InitializeComponent();
   4:     //初始化取得Smaato廣告
   5:     SmaatoAdv();
   6: }
   7:  
   8: private void SmaatoAdv()
   9: {
  10:     // Developer pub ID for testing
  11:     somaAdViewer.Pub = 0;       
  12:     // Developer adSpace ID for testing
  13:     somaAdViewer.Adspace = 0;   
  14:     // 指定廣告年紀限制
  15:     somaAdViewer.Age = 35;
  16:     
  17:     //啟動廣告
  18:     somaAdViewer.StartAds();
  19: }
  20:  
  21: private void PhoneApplicationPage_BackKeyPress
  22:         (object sender, System.ComponentModel.CancelEventArgs e)
  23: {
  24:     // 退出鍵,關掉廣告請求。
  25:     somaAdViewer.StopAds();
  26: }

 Smaato5 Smaato7Smaato6

〉Smaato收付款機制

付款機制其實跟AdMob是相同的,也是透過電匯與PayPal的付款機制。因此,這篇就不在多加說明。

 

==========================

以上是分享一些相關可以嵌入廣告到自己App裡的方式,因為撰寫要賣錢的程式,雖然不錯,

但我覺得如果寫免費程式的話,加廣告給自己多一點賺錢的機會,也是蠻好的。

再加上現在行動網路廣告商都有提供好用的SDK,對開發人員撰寫的App更容易嵌入是非常好的。

 

Refenreces:

An Update on Windows Phone Marketplace; new tips, policies and regional access program

Google AdMob Ads Windows Phone 7 Fundamentals (重要)

Microsoft Advertising SDK for Windows Phone 7

AdMob 增加 Windows Phone 7 SDK,并开始支持 HTML 5 和平板

Admob廣告服務demo影片

【WP7进阶】——详细教你使用帮你赚钱的广告控件 & 一起学WindowsPhone7开发-26-(Advertising)

Microsoft Advertising pubCenter

WP7 Advertising Resources for 3rd Party Developers

Microsoft Advertising pubCenter

iAd Vs. AdMob – Clicks, Fill Rate, Impressions, eCPM and Revenue