이 가이드에서는 네이티브 광고 부가기능을 사용하여 Unity 앱에서 AdMob 네이티브 광고를 구현하는 방법과 구현 시 고려해야 하는 중요한 사항을 설명합니다.
네이티브 광고는 광고가 게재되는 사용자 환경의 형식 및 기능과 배치되도록 합니다. 또한 게재되는 앱의 디자인과 자연스럽게 조화를 이루도록 표시됩니다. 게시자는 AdMob의 네이티브 광고 형식을 사용하여 매끄러운 광고를 있습니다. 이 기술을 통해 Unity 앱에서 네이티브 코드를 최대한 활용하는 맞춤 렌더링을 구현할 수 있습니다.
네이티브 광고는 표시되는 것과 동일한 유형의 GameObjects
을(를) 사용하여 게재됩니다.
앱의 시각적 디자인과 잘 어울리도록 형식을 지정할 수 있습니다.
도움이 되기 때문입니다. 네이티브 광고가 로드되면 앱에서
는 자체 애셋과 Unity 앱이 아닌
해당 항목이 표시됩니다.
기본 요건
네이티브 광고 형식 로드
네이티브 광고는 AdLoader
클래스를 통해 로드되며 이 클래스에는 생성 중에 맞춤설정할 수 있는 자체 AdLoader.Builder
클래스가 포함되어 있습니다. ForNativeAd()
메서드는 네이티브 광고를 처리하도록 AdLoader를 구성합니다.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
AdLoader 광고 이벤트 등록
네이티브 광고가 정상적으로 로드되거나 로드에 실패할 때 알림을 받으려면 아래 이벤트의 AdLoader
클래스에 대리자를 추가하세요.
OnNativeAdLoaded
네이티브 광고가 정상적으로 로드되었을 때 호출됩니다. 로드된 광고에 액세스하려면 이 이벤트에 대한 대리자가 있어야 합니다.
OnAdFailedToLoad
네이티브 광고가 로드에 실패할 때 호출됩니다.
광고 로드
AdLoader
빌드를 완료하면 LoadAd()
메서드를 호출하여 다음을 수행합니다.
광고를 요청합니다.
adLoader.LoadAd(new AdRequest.Builder().Build());
동시에 광고 요청
아래 코드 스니펫은 다음과 같은 AdLoader
를 빌드하는 방법을 보여줍니다.
네이티브 광고를 요청하도록 구성되고 성공 및 실패한 광고에 대한 대리자 설정
로드되어 광고 요청을 합니다.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
실패한 광고 로드 처리
OnAdFailedToLoad
이벤트는 EventHandle<AdFailedToLoadEventArgs>
유형입니다.
이 이벤트의 광고 로드가 실패한 이유를 파싱하는 방법은 다음과 같습니다.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
네이티브 광고 표시
네이티브 광고가 로드되면 해당 광고 형식의 광고 이벤트가 호출됩니다. 그러면 앱이 광고를 표시하지만 즉시 업데이트해야 합니다
자동 광고 수 처리
OnNativeAdLoaded
이벤트는 EventHandler<NativeAdEventArgs>
유형입니다. 이
NativeAd
객체에 캡슐화된 광고는 다음에서 가져올 수 있음
NativeAdEventArgs
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
네이티브 광고 애셋 가져오기
광고가 로드되면 아래와 같이 애셋에 액세스할 수 있습니다. 그래픽 애셋은 Texture2D
객체로 반환되며, 텍스트 애셋은 string
객체로 반환됩니다.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
광고 애셋은 Unity 스크립트의 Update()
메서드 등 메인 스레드를 통해서만 액세스해야 합니다. 또한 다음 애셋은 없을 수 있으니 광고 게재 전에 반드시 확인하세요.
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
AdChoices 확장 소재
AdChoices 광고 애셋은 네이티브 광고에 필수로 표시해야 합니다. 또한 AdChoices 광고 애셋은 눈에 잘 띄어야 하므로 이미지를 적절하게 조정하는 것입니다.
광고 확장 소재에 대한 GameObjects 등록
광고 애셋이 Unity 앱에 표시되도록 하려면 GameObject
를 등록해야 합니다. 등록에 성공하면 GameObject
를 등록하는 데 사용된 메서드가 bool
을 반환합니다. List<GameObject>
의 경우 메서드는 성공적으로 등록된 GameObject
수를 나타내는 int
을 반환합니다.
광고 확장 소재 등록에 실패하면 해당 네이티브 광고가 인식되지 않습니다
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
광고 애셋에 대해 등록된 GameObject
에 볼록 Collider 구성요소가 있어야 하며 이 요소는 GameObject
의 크기 및 모양을 나타냅니다. 광고 애셋에 등록된 GameObject
객체가 Collider
구성요소를 포함하지 않거나 잘못 구성된 경우 네이티브 광고가 올바르게 작동하지 않습니다.
아래 코드 스니펫에서 BoxCollider
은 GameObject
TextMesh
: 네이티브 광고의 광고 제목 광고 애셋을 표시합니다. BoxCollider
가 GameObject
에 연결되면 이 객체가 TextMesh
구성요소의 텍스트를 수용하도록 자동으로 확장됩니다.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
데모
다음 코드에는 정상적으로 로드된 네이티브 광고의 아이콘 애셋을 가져오고, Quad
의 텍스처를 설정하여 아이콘 광고 애셋을 표시하며, 애셋을 표시할 GameObject
를 등록하는 방법이 나와 있습니다. 이와 같이 광고 애셋을 가져와서 네이티브 광고 클래스에 등록하는 과정을 앱이 표시하는 애셋마다 반복해서 진행해야 합니다.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}