이 가이드에서는 네이티브 광고 부가기능을 사용하여 네이티브 광고를 구현하는 방법을 기본적인 사항과 함께 고려해야 할 몇 가지 중요한 사항을 다룹니다.
네이티브 광고는 광고가 게재되는 사용자 환경의 형식 및 기능과 배치되어 있습니다. 게재되는 앱의 시각적 디자인과도 일치합니다. 게시자는 Ad Manager의 네이티브 광고 형식을 사용하여 매끄럽게 진행됩니다. 이 기술을 사용하여 고도의 맞춤형 환경을 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 등록
광고 확장 소재의 GameObject
를 등록해야 합니다.
Unity 앱 등록이 성공하면
GameObject
는 bool
을 반환합니다. List<GameObject>
의 경우 이 메서드는 다음을 반환합니다.
int
- 성공적으로 등록된 GameObject
수를 나타냅니다.
광고 확장 소재 등록에 실패하면 해당 네이티브 광고가 인식되지 않습니다
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
광고 확장 소재에 등록된 GameObject
에는 볼록 충돌기가 있어야 합니다.
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;
}