admob은 모바일에서 광고를 하기 위한 플랫폼입니다.
Corona SDK에서 지원한다고 해서 가입해 보았습니다.
- 아래 링크 접속해서 가입하기 버튼을 누릅니다.
https://www.google.co.kr/admob/
- 구글 계정 로그인
- adsense 계정이 있으면 편하게 가입이 되네요. 없으면 adsense계정 가입부터 해야 합니다.
- 애드워즈 계정을 입력하고 시작하기 버튼을 눌러줍니다.
- Admob에서 새광고 단위 만들기
광고 단위를 만들어야 어플에서 id를 이용해서 광고를 넣을 수 있습니다. 기본적을 따라하면 어렵지 않게 됩니다. 이미 등록된 어플을 선택할 수도 있고, 등록되지 않은 어플도 추가가 가능합니다. 여기에서는 등록되지 않은 어플 이름을 넣어서 id를 만들었습니다.
- Corona SDK 에서 적용하기
기본적으로 아래 두개의 세팅을 넣어야 합니다.
https://docs.coronalabs.com/api/library/ads/index.html
Project Settings
To use this plugin, add an entry into theplugins
table of build.settings
. When added, the build server will integrate the plugin during the build phase.settings =
{
plugins =
{
["plugin.google.play.services"] =
{
publisherId = "com.coronalabs"
},
},
}
Android
For Android, the following permissions/features are automatically added when using this plugin: android =
{
usesPermissions =
{
"android.permission.INTERNET",
"android.permission.ACCESS_NETWORK_STATE",
},
},
그리고는 아래 url에 참고로 작업해야 하는데요. 간단하면서도 내용이 복잡합니다.
주의할 점은 테스트가 시뮬레이터에서는 되지 않습니다. 따라서 지속적으로 단말에 apk를 올려서 테스트 해봐야 합니다. 가장 중요한점은 테스트시 광고가 Click 되지 않도록 주의합니다. (부정클릭 방지)
https://coronalabs.com/blog/2014/07/15/tutorial-implementing-admob-v2/
아래와같은 admob 에서 광고 단위를 생성하면 id라는게 나오는데요. 아래와 같은 형태가 됩니다. 이것을 Ad Unit ID 혹은 AppID라고 합니다.
ca-app-pub-28374982782348972983749273/4987234823
위 링크에서는 i OS 와 안드로이드를 두개 모두 설명한다고 코드가 복잡한데요.코드에서 사용할때는 아래와 같이 하면 됩니다. 마지막 ads.show() 함수에 y 인자가 100000 인데 시작시점에 광고를 로딩해서 게임중에 느려짐을 방지하기 위함입니다. 그리고 필요한 곳에서 ads.hide()를 호출한뒤 원하는 위치에 ads.show()를 해주면 됩니다.
여기에서는 banner형태의 광고만 예를 들었습니다. show 함수에 인자를 banner를 넣어주면 됩니다. 그리고 ads.show("banner", {x=0, y=100000}) 이렇게 꼭 안해도 됩니다.
이것은 성능개선을 위한 제안일 뿐입니다.
local ads = require( "ads" ) local bannerAppID = "ca-app-pub-nnnnnnnnnnnnnnnn/nnnnnnnnnn" local adProvider = "admob" local function adListener( event ) local msg = event.response -- Quick debug message regarding the response from the library print( "Message from the ads library: ", msg ) if ( event.isError ) then print( "Error, no ad received", msg ) else print( "Got one!" ) adHeight = ads.height() end end ads.init( adProvider, bannerAppID, adListener ) ads.show("banner", {x=0, y=100000})
이건 위의 안보이는곳에 광고가 나와있으므로 지워주는 역할을 합니다.
ads.hide()
진짜 필요한곳에서 아래와 같은 코드를 수행합니다.
ads.show("banner", { x=0, y=0 })
그리고 광고의 위치는 x,y 값 조절로 변경이 가능하나 크기 정보 변경이 안됩니다.
게시글 리플에 보면 아래와 같이 조절하는것처럼 보이나 테스트해보면 반영되지는 않습니다. 그래서 모양이 어울리지 않기때문에 배치는 제일 위나 제일 아래 영역 통째로 광고 배너를 넣는것이 UI상 보기가 좋습니다.
Corona Developer(LK) says:
Position and height-width set :
ads.show(“banner”, { x=100, y=display.contentHeight-30,width=display.contentWidth-200,height=40 })
ads.show(“banner”, { x=100, y=display.contentHeight-30,width=display.contentWidth-200,height=40 })
또한 구글은 배너 광고 시점이 게임의 빠른 처리를 위한 플레이 동안에는 광고를 보여주지 않아야 한다고 강력하게 조언합니다. 무슨 말뜻인지는 알아서 새겨들으면 될 것 같습니다.
Google strongly advises that you do not show banners at times where your CPU time is at a premium, for example, during the main gameplay state of a fast-paced game.