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完成測試的功能。
以下簡單看個範例
〉實作範例:
以公車動態查詢使用的廣告為例,如下:
‧結果畫面
如右二張圖,是在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領錢>。
==========================
〉Smaato:
這是另一個蠻有名的行動廣告網站,它更新的頻率比AdMob快一點,並且提供用戶自訂需要Location服務與限制。
SDK支援也很豐富,包括:iPhone、Android、Windows Phone 7,更支援
QT、Symbian S60、WRT、BlackBerry,所以對我們開發者而言,非常容易上手。不過比較可惜的部分,它目前還沒
有支援繁體中文的網站說明。要取得SDK的話,需要先註冊帳號才有辦法取得。
下載WP7 SDK可以選擇使用的SDK是否需要location,
二者的差別,其實不用太在意,因為location的使用在亞太地區廣告量還是相對比較少的部分,所以就直接下載location就好,
下載的SDK也準備的非常好,也提供XNA、Silverlight更有開發手冊,非常方便。
以下就簡單使用的Silverlight範例來加以呈現。
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 |
Qs | 設定廣告呈現的關鍵字。 | 定義搜尋字的關鍵參數。 | string 用「,」當分隔符號 |
Madonna |
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: }
〉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 和平板
‧【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