為了獲利,難免都會加作廣告,
我們就以很多人常用的AdMob來當範例。
首先,您必須到AdMob去申請一個帳號,
然後新增你要加入廣告的APP,
細節這邊就先不提了,
原則上,AdMob有二個樣式,
一個是橫幅(banner),一個是插頁(interstitial),
如果你是同時要支援Android和iOS平台,
那各別都要申請,
也就是說,你總共會需要4個廣告編號。
接著我們來看程式部份:
Add plugin
首先,我們需要在build.settings加入plug-in:
settings = { plugins = { ["plugin.google.play.services"] = { publisherId = "com.coronalabs" }, }, android = { usesPermissions = { "android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE", }, }, }另外,Android需要增加網路存取的權限
Show the Ads
要顯示廣告,只要按照以下寫法即可
local ads = require( "ads" ) local bannerAppID = "ca-app-pub-3001435268155896/xxxxxxxxxx" --for your iOS banner local interstitialAppID = "ca-app-pub-3001435268155896/xxxxxxxxxx" --for your iOS interstitial if ( system.getInfo("platformName") == "Android" ) then bannerAppID = "ca-app-pub-3001435268155896/xxxxxxxxxx" --for your Android banner interstitialAppID = "ca-app-pub-3001435268155896/xxxxxxxxxx" --for your Android interstitial end local adProvider = "admob" local function adListener( event ) local msg = event.response print( "Message from the ads library: ", msg ) if (event.type == "banner") then if ( event.isError ) then print( "Error, no bannser ad received", msg ) else print( "Got one banner AD" ) end elseif(event.type == "interstitial") then if ( event.isError ) then print( "Error, no interstitial ad received", msg ) elseif ( event.phase == "loaded" ) then print("interstitial ads got...") elseif ( event.phase == "shown" ) then print("interstitial has been shown and closed") end end end ads.init( adProvider, bannerAppID, adListener ) ads.show( "banner", { x=0, y=0, appId=bannerAppID} )--show banner ads ads.show( "interstitial", { x=0, y=0, appId=interstitialAppID} )--show banner ads ads.hide() -- hide the ads上面的bannerAppID和interstitialAppID,就是你去AdMob申請得到的廣告unit id,
ads.init()只要做一次即可,
之後在ads.show()裡再帶入想要顯示的ads型態和對應的appId即可,
橫幅廣告Banner Ads
ads.show( "banner", { x=0, y=0, appId=bannerAppID} )可以顯示橫幅的廣告,
上面的參數裡,x=0, y=0表示要顯示在最上方,位置你可以自己決定,
所以程式的UI配置要先決定, 以不影響遊戲進行就好,
大部份不是最上方就最下方,
然後預留給它的寬度是整個螢幕寛度,
那高度呢?要預留多高才行?
AdMob有所謂的Smart Banners,
手機上面, 在landscape模式時,高度是32,
在portrait模式時,高度是50,
平板上面,高度就是90,
不過,我有遇過手機上得到的banner高度是70左右,
為了保險起見,預留90或者100就能適合各種情形
插頁廣告Interstitial Ads
插頁廣告會佔用全螢幕,所以ads.show()裡傳入的x,y值就沒有差別,
插頁廣告最好不要太多,不然使用者可能會覺得很煩,
另外,插頁廣告下載需要一段時間,
所以我們最好是先預載到手機或平板上,如下面的方法:
ads.load( "interstitial", { appId=interstitialAppID } ) --load the "interstitial" ads in advance這個動作可以程式一啓動就先做,
要顯示廣告時,先判斷是否已下載回來了:
if(ads.isLoaded("interstitial"))then ads.show( "interstitial", { x=0, y=0, appId=interstitialAppID } ) end要注意的是,如果你呼叫過ads.show(),
即使是ads.show( "banner", { x=0, y=0, appId=bannerAppID} ),
ads.isLoaded("interstitial")都會變成false,
在Android平台上,只要曾經呼叫過ads.load( "interstitial", { appId=interstitialAppID } ),
之後呼叫ads.show()後,雖然ads.isLoaded("interstitial")會被清為false,
但是它會自已在reload,
可是在iOS平台,每次都必須呼叫ads.load( "interstitial", { appId=interstitialAppID } ), ads.isLoaded("interstitial")才會再度為true,
Ads只有在實機上才有用,
所以,上面的程式,最好是可以加上判斷,
也就是說system.getInfo( "environment" ) ~= "simulator"時才執行
沒有留言:
張貼留言