[Corona SDK] 用 CoronaCards 來開發 Windows Phone程式教學 Part 3

作者: 魏蘶
(感謝台灣 Microsoft 資深平台架構經理 Herman Wu 的大力協助)
(感謝 Corona SDK 台灣區大使 Bob Yeh 大力協助)

1.如果還沒有admob帳號的話,要到admob的網站申請帳號。之後幫自己的程式申請的一個廣告ID。上面步驟都做完後,到Google Mobile Ads SDK網站,下載給Windows Phone8的SDK。

2.下載後的壓縮檔解壓縮後,找到其中一個名為「GoogleAds.dll」的檔。把這個檔存在容易找到的路徑。比方我在C槽下面陸續開了很多個資料夾,把「GoogleAds.dll」存在 C:\dev\mobile\libraries\windows-phone\admob中。

3.回到Visual Studio,按下右邊欄Properties後,左邊應用程式選項中,確認「目標Windows Phone OS版本」選的是Windows Phone 8.0。因為Google Admob廣告目前只有支援Windows Phone 8.0。

4.在右邊欄選取WMAppManifest.xml之後,在左邊視窗上方選取 [功能]。把這個頁面中,下列的選項打勾

ID_CAP_MEDIALIB_AUDIO

ID_CAP_MEDIALIB_PLAYBACK

ID_CAP_NETWORKING

ID_CAP_SENSORS

ID_CAP_WEBBROWSERCOMPONENT

5.在右邊欄的 [參考] 上面按下右鍵。選擇 [加入參考]。

6.選擇在step2下載存檔的「GoogleAds.dll」檔案。

7.在右邊欄選擇 [MainPage.xaml] > [MainPage.xaml.cs]。雙擊打開檔案,就可以在左邊的視窗看到MainPage.xaml.cs的程式碼。如上圖,請先在上面一大串using的程式碼下面,新增下面三行

using CoronaLabs.Corona.WinRT;

using System.Diagnostics;

using GoogleAds;

8.在同一檔案 [MainPage.xaml.cs] 的下面,找到MainPage這個Class。在MainPage()函式之前,如上圖寫上下面的程式碼:

(*注意 >> “把你的廣告ID寫在這邊”這行要換成你的廣告ID )

AdView bannerAd = new AdView

{

  Format = AdFormats.Banner,

  AdUnitId = “把你的廣告ID寫在這邊”,

};

9.如上圖,在MainPage()函式結束之前,在MainPage()函式中加入下面的程式碼:

fCoronaPanel.Runtime.Loaded += OnCoronaRuntimeLoaded;

bannerAd.ReceivedAd += OnAdReceived;

bannerAd.FailedToReceiveAd += OnFailedToReceiveAd;

bannerAd.VerticalAlignment = VerticalAlignment.Bottom;

bannerAd.Visibility = Visibility.Collapsed; //Visible or Collapsed

fCoronaPanel.Children.Add(bannerAd);

AdRequest adRequest = new AdRequest();

//adRequest.ForceTesting = true;

bannerAd.LoadAd(adRequest);

10.在MainPage()函式結束之後,MainPage這個Class結束之前,[也就是說在MainPage()函式的外面,MainPage類別的裡面,]如圖寫下下面的函式:

private void OnCoronaRuntimeLoaded(object sender, CoronaLabs.Corona.WinRT.CoronaRuntimeEventArgs e)

{

// Register bridges with corona.

e.CoronaRuntimeEnvironment.AddEventListener(“ShowAd”, Native_ShowAd);

e.CoronaRuntimeEnvironment.AddEventListener(“HideAd”, Native_HideAd);

}

public ICoronaBoxedData Native_ShowAd(CoronaRuntimeEnvironment sender, CoronaLuaEventArgs e)

{

Debug.WriteLine(“Loading google interstitial ad…”);

bannerAd.Visibility = Visibility.Visible;

return CoronaBoxedBoolean.True;

}

public ICoronaBoxedData Native_HideAd(CoronaRuntimeEnvironment sender, CoronaLuaEventArgs e)

{

bannerAd.Visibility = Visibility.Collapsed;

return CoronaBoxedBoolean.True;

}

private void OnAdReceived(object sender, AdEventArgs e)

{

Debug.WriteLine(“Received ad successfully”);

}

private void OnFailedToReceiveAd(object sender, AdErrorEventArgs errorCode)

{

Debug.WriteLine(“Failed to receive ad with error ” + errorCode.ErrorCode);

}

11.寫完上面的程式碼就OK了,在程式裡要秀出廣告的時候,(請在main.lua或是任何一個場景的程式碼中,)用下面的程式碼秀出廣告:

Runtime:dispatchEvent({name = “ShowAd”})

12.程式裡要隱藏廣告的時候,(請在main.lua或是任何一個場景的程式碼中,)用下面的程式碼隱藏廣告:

Runtime:dispatchEvent({name = “HideAd”})

( [這邊] 是我的MainPage.xaml.cs提供給大家參考。請不要直接拷貝。全部拷貝複製會錯。)

以上就是今天分享的內容。在這篇文章中,我們學到怎麼樣在手機程式中放入 Admob的廣告。這應該是寫App最重要的事情吧?用上面的方法,我已經把很多我的 App 放到 Windows Phone市集了 ,歡迎大家加入我的行列,一起來開發吧!

﹝相關文章﹞

[Corona SDK] 用 CoronaCards 來開發 Windows Phone程式教學 Part 1
[Corona SDK] 用 CoronaCards 來開發 Windows Phone程式教學 Part 2