UDN
Search public documentation:
InGameAdsKR
English Translation
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
In-Game Ads (게임내 광고)
문서 변경내역: Jeff Wilson 작성. 홍성진 번역.
개요
Ad Manager
InGameAdManager
라는 특수 클래스가 iAd 네트워크를 통한 게인매 광고 표시와 관리를 담당합니다. 이 클래스가 In-Game Ads 획득, 표시, 상호작용 관련 기능 전부를 처리합니다.
프로퍼티
- bShouldPauseWhileAdOpen 광고 실행시 일시정지 - 참이면 사용자가 광고를 눌러 화면이 덮일 지도 모르는 상황에서는 게임이 일시정지됩니다.
- Init - 광고 시스템 초기화 처리를 위해 엔진이 호출하는 이벤트입니다.
- ShowBanner [bShowBottomOfScreen] - In-Game Ads 를 배너에 보이게 합니다.
- bShowBottomOfScreen - 참이면 배너가 화면 하단에, 거짓이면 상단에 표시됩니다.
- HideBanner - 게임내 보이는 광고 배너를 숨깁니다. 광고가 현재 열려있으면 (, 즉 사용자가 광고를 보고 있으면) 광고를 강제로 닫습니다. (ForceCloseAd 참고)
- ForceCloseAd - (클릭하여) 열린 광고를 강제로 닫고 배너 상태로 돌아가게 합니다. 수익 감소로 이어질 수 있으니, 남용하지 마시기 바랍니다.
- SetPauseWhileAdOpen [bShouldPause] - 광고를 클릭했을 때 게임을 포즈시킬 것인지 설정합니다.
- bShouldPause - 참이면 광고를 클릭했을 때 게임이 포즈됩니다. 거짓이면 게임이 계속 실행됩니다.
EAdManagerDelegate
enum 은 콜백을 받을 수 있는 델리게이트 유형에 대한 ID 를 정의합니다. 플랫폼 인터페이스 델리게이트 시스템을 사용하여 이들 각각에 델리게이트를 할당할 수 있습니다.
- AMD_ClickedBanner - 이 ID 에 할당된 델리게이트는, 사용자가 배너 광고를 클릭할 때 실행됩니다.
- bSuccessful - 참 입니다.
- Data - 데이터를 담지 않습니다.
- AMD_UserClosedAd - 이 ID 에 할당된 델리게이트는 사용자가 (배너를 클릭한 다음) 애드를 닫을 때 실행됩니다. 일시정지 해제는 베이스 클래스가 이미 담당하니, 델리게이트는 추가 처리가 필요할 때만 필요합니다.
- bSuccessful - 참 입니다.
- Data - 데이터를 담지 않습니다.
구현
PlayerController
의 PostBeginPlay()
함수 안에서, 관련 델리게이트를 할당시켜 배너를 표시할 수 있습니다. 물론 게임이나 레벨 시작과 동시에 배너를 표시하려는 경우에만 그렇다는 소리입니다. 원하는 시간 어느 때고 InGameAdManager
에서 관련 함수를 호출하여 광고를 표시하거나 숨길 수 있습니다.
PlatformInterfaceBase
에는 현재 InGameAdManager
로의 참조를 반환하는 스태틱 함수가 있습니다. PlayerController
안에서 이를 사용하여 그에 대한 참조를 구하고 그 함수를 호출할 수 있습니다. 게임이 플랫폼에서 실행중이 아니거나 In-Game Ads 를 지원하지 않는다면 이 함수는 None
을 반환한다는 점 유념해 주시기 바랍니다.
셋업
여기, PlatformInterfaceBase
에서 InGameAdManager
로의 참조를 구한 다음 델리게이트를 추가하고 광고 배너를 표시했습니다. 추가한 델리게이트는 적절한 시기에 실행되고 있음을 확인시켜 드리기 위한 예제일 뿐입니다.
var InGameAdManager AdManager; ... simulated function PostBeginPlay() { Super.PostBeginPlay(); AdManager = class'PlatformInterfaceBase'.static.GetInGameAdManager(); if (AdManager != none) { AdManager.AddDelegate(AMD_ClickedBanner, OnUserClickedAdvertisement); AdManager.AddDelegate(AMD_UserClosedAd, OnUserClosedAdvertisement); AdManager.ShowBanner(true); } } /** * 사용자가 In-Game Ads 를 클릭했을 때 모든 플레이어 콘트롤러에서 호출. * 게임에서는 이 시점에서 포즈 등을 해야 할 수도. */ function OnUserClickedAdvertisement(const out PlatformInterfaceDelegateResult Result) { `log("MobilePC::OnUserClickedBanner"); } /** * In-Game Ads 가 닫혔을 때 모든 플레이어 콘트롤러에서 호출. * (보통 사용자가 완료 등을 클릭했을 때.) 포즈 해제 등의 시점. */ event OnUserClosedAdvertisement(const out PlatformInterfaceDelegateResult Result) { `log("MobilePC::OnUserClosedAd"); }
PlayerController
의 Destroyed()
이벤트를 사용하면 이미 지정해 둔 델리게이트를 제거한다든가 하는 클린업 작업을 약간 해줄 수 있습니다.
event Destroyed() { super.Destroyed(); if (AdManager != none) { AdManager.ClearDelegate(AMD_ClickedBanner, OnUserClickedAdvertisement); AdManager.ClearDelegate(AMD_UserClosedAd, OnUserClosedAdvertisement); } }
PlayerController
안에 위의 코드를 가지고 iOS 디바이스에서 게임을 실행하면 화면 하단에 바로 광고 배너가 표시될 것입니다.
그 배너에 탭하면 전체 광고 창이 열립니다:
위의 이미지에서 보듯, 이 시점에서는 테스트 광고만 볼 수 있습니다. 실제 광고를 받으려면 애플의 개발자 사이트를 통해 iAd 네트워크에 참여해야 합니다.