네이티브 심플 광고
네이티브 심플 광고는 복잡한 설정 및 추가 작업 없이 배너 광고와 유사하게 네이티브 포맷의 광고 콘텐츠를 간단하게 렌더링할 수 있는 네이티브 광고의 일종입니다.
시작하기 앞서
- 광고 호출을 위해 Ad Unit ID 가 필요합니다.
- NAM Admin 을 통해 광고 공급자 설정, Inventory 설정, 광고 유닛 등록 등의 과정을 마무리하여 주시기 바랍니다.
- 관련 내용은 NAM 관리자에게 문의 부탁드립니다.
- 광고를 오버레이로 덮는 다른 View 가 있을 경우, 경우에 따라서 노출 측정이 제대로 되지 않아 성과 지표 측정에 불이익이 있을 수 있습니다.
[Step 1] NAM SDK 적용 완료
공통 통합 내용 을 참고해 주세요.
이하 내용은 NAM SDK 적용이 완료된 상태를 가정하고 진행합니다.
[Step 2] GfpNativeSimpleAdView 정의
먼저, 네이티브 심플 광고가 렌더링 될 GfpNativeSimpleAdView 를 레이아웃 XML 파일에 추가해야 합니다.
GfpNativeSimpleAdView 를 레이아웃에 추가할 때,
너비는 wrap_content
또는 match_parent
로, 높이는 wrap_content
로 설정해야 가변적인 크기에 대응할 수 있습니다.
너비를 wrap_content
로 설정하면 GfpNativeSimpleAdView
의 너비가 광고 소재 너비에 맞춰 자동으로 조정됩니다. 반면, 너비를 match_parent
로 설정하면 소재 너비와 관계없이 match_parent
에 맞게 너비가 설정됩니다.
<com.naver.gfpsdk.GfpNativeSimpleAdView
android:id="@+id/native_simple_ad_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
[Step 3] GfpAdLoader 빌드
네이티브 심플 광고는 GfpAdLoader 클래스를 통해 로드되며 GfpAdLoader 는 생성 과정 중에 다양한 맞춤 설정이 가능한 GfpAdLoader.Builder 클래스를 통해 생성할 수 있습니다. GfpAdLoader 를 빌드할 때 네이티브 심플 광고를 로드하겠다는 선언으로 간주되는 withNativeSimpleAd() 메서드를 설정함으로서 네이티브 심플 광고를 로드할 수 있습니다.
GfpAdLoader 를 빌드할 때는 광고 요청을 위한 필수 정보에 해당되는 Ad Unit ID
를 비롯하여, 단일 광고 요청에 대한 런타임 정보(예: 타겟팅 정보) 가 포함된 AdParam 객체를 생성 후 매개변수로 전달해야만 합니다.
AdParam 에 대한 자세한 설명은 광고 요청 정보를 참고해 주시기 바랍니다.
- Kotlin
- Java
// Create a new ad parameter.
val adParam = AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
...
.build()
// Create a new ad loader.
val adLoader = GfpAdLoader.Builder(this, adParam)
.withNativeSimpleAd { nativeAd ->
// Show the native simple ad.
}
.withAdListener(object: AdEventListener() {
...
})
.build()
// Create a new ad parameter.
AdParam adParam = new AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
...
.build();
// Create a new ad loader.
GfpAdLoader adLoader = new GfpAdLoader.Builder(this, adParam)
.withNativeSimpleAd(new GfpNativeSimpleAd.OnNativeSimpleAdLoadedListener() {
@Override
public void onNativeSimpleAdLoaded(GfpNativeSimpleAd nativeSimpleAd) {
// Show the native simple ad.
}
})
.withAdListener(new AdEventListener() {
...
})
.build();
위 예시와 같이, withNativeSimpleAd() 메서드를 통해 네이티브 심플 광고를 수신할 수 있는 GfpAdLoader 를 생성할 수 있습니다. 네이티브 심플 광고가 성공적으로 로드되면 매개변수로 선언된 GfpNativeSimpleAd.OnNativeSimpleAdLoadedListener() 의 onNativeSimpleAdLoaded() 메서드가 호출됩니다.
[Step 4] 광고 이벤트 수신 설정
GfpAdLoader.Builder 가 제공하는 withAdListener() 메서드를 통해 광고의 생명 주기에 해당되는 다양한 이벤트들을 수신할 수 있습니다.
수신하고자 하는 이벤트들이 있을 경우, AdEventListener 가 제공하는 메서드들을 선택적으로 오버라이드해서 구현하면 됩니다.
- Kotlin
- Java
val adLoader = GfpAdLoader.Builder(this, adParam)
...
.withAdListener(object : AdEventListener() {
override fun onAdClicked() {
// Called when an ad is clicked.
}
override fun onAdImpression() {
// Called when an impression is recorded for an ad.
}
override fun onAdMuted() {
// Called when an ad is muted.
}
override fun onError(error: GfpError?, responseInfo: GfpResponseInfo?) {
// Called when an error happened while the banner ad is
// attempting to load or rendering an ad.
}
})
.build()
GfpAdLoader adLoader = new GfpAdLoader.Builder(this, adParam)
...
.withAdListener(new AdEventListener() {
@Override
public void onAdClicked() {
// Called when an ad is clicked.
}
@Override
public void onAdImpression() {
// Called when an impression is recorded for an ad.
}
@Override
public void onAdMuted() {
// Called when an ad is muted.
}
@Override
public void onError(GfpError error, GfpResponseInfo responseInfo) {
// Called when an error happened while the banner ad is
// attempting to load or rendering an ad.
}
})
.build();
[Step 5] 광고 로드
GfpAdLoader 빌드가 마무리 되었다면, GfpAdLoader 의 loadAd() 메서드를 통해 광고를 로드할 수 있습니다.
UI 스레드에서 광고를 로드해야 합니다.
기선언된 GfpAdLoader 를 재사용하여 광고를 요청하려면 cancel() 호출 없이 loadAd() 만 호출해야만 합니다. 만약 cancel() 메서드 호출한 후 loadAd() 를 호출하면, 리소스가 해제된 상태로 요청이 발생하여 광고 이벤트를 수신하지 못하는 등의 이슈가 발생할 수 있습니다.
- Kotlin
- Java
class ExampleActivity : AppCompatActivity() {
private lateinit var adLoader: GfpAdLoader
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_example)
// Create a new ad parameter
val adParam = AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
.build()
// Create a new ad loader
adLoader = GfpAdLoader.Builder(this, adParam)
.withNativeSimpleAd { nativeSimpleAd ->
// Show the native simple ad.
}
.withAdListener(object: AdEventListener() {
...
})
.build()
// Load the native simple ad
adLoader.loadAd()
}
}
public class ExampleActivity extends AppCompatActivity {
private GfpAdLoader adLoader;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
// Create a new ad parameter.
AdParam adParam = new AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
.build();
// Create a new ad loader
adLoader = new GfpAdLoader.Builder(this, adParam)
.withNativeSimpleAd(new GfpNativeSimpleAd.OnNativeSimpleAdLoadedListener() {
@Override
public void onNativeSimpleAdLoaded(GfpNativeSimpleAd nativeAd) {
// Show the native simple ad.
}
})
.withAdListener(new AdEventListener() {
...
})
.build();
// Load the native simple ad
adLoader.loadAd();
}
}
[Step 6] 광고 렌더링
네이티브 심플 광고가 성공적으로 로드되면 GfpNativeSimpleAd 객체를 전달받게 됩니다. 네이티브 광고와 달리 네이티브 심플 광고는 로드된 GfpNativeSimpleAd 를 GfpNativeSimpleAdView 에 등록하는 과정만 필요로 합니다.
다음은 로드된 GfpNativeSimpleAd 를 GfpNativeSimpleAdView 에 등록하는 코드의 예입니다.
- Kotlin
- Java
class ExampleActivity : AppCompatActivity() {
private lateinit var adLoader: GfpAdLoader
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_example)
// Create a new ad parameter
val adParam = AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
.build()
// Create a new ad loader
adLoader = GfpAdLoader.Builder(this, adParam)
.withNativeSimpleAd { nativeSimpleAd ->
// Assumes you have a native simple ad view in your View layout
val nativeSimpleAdView: GfpNativeSimpleAdView = findViewById(R.id.native_simple_ad_view)
// Call the GfpNativeSimpleAdView's setNativeSimpleAd method
// to register the native simple ad object.
nativeSimpleAdView.setNativeSimpleAd(nativeSimpleAd)
}
.withAdListener(object: AdEventListener() {
...
})
.build()
// Load the native simple ad
adLoader.loadAd()
}
}
public class ExampleActivity extends AppCompatActivity {
private GfpAdLoader adLoader;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
// Create a new ad parameter.
AdParam adParam = new AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
.build();
// Create a new ad loader
adLoader = new GfpAdLoader.Builder(this, adParam)
.withNativeSimpleAd(new GfpNativeSimpleAd.OnNativeSimpleAdLoadedListener() {
@Override
public void onNativeSimpleAdLoaded(GfpNativeSimpleAd nativeAd) {
// Assumes you have a native simple ad view in your View layout
GfpNativeSimpleAdView nativeSimpleAdView = findViewById(R.id.native_simple_ad_view);
// Call the GfpNativeSimpleAdView's setNativeSimpleAd method
// to register the native simple ad object.
nativeSimpleAdView.setNativeSimpleAd(nativeSimpleAd);
}
})
.withAdListener(new AdEventListener() {
...
})
.build();
// Load the native simple ad
adLoader.loadAd();
}
}
[Step 7] 광고 리소스 해제
네이티브 심플 광고의 게재가 끝나면 광고에 할당된 리소스가 해제될 수 있도록 cancel() 메서드를 호출해야 합니다.
기선언된 GfpAdLoader 를 재사용하여 광고를 요청하려면 cancel() 호출 없이 loadAd() 만 호출해야만 합니다. 만약 cancel() 메서드 호출한 후 loadAd() 를 호출하면, 리소스가 해제된 상태로 요청이 발생하여 광고 이벤트를 수신하지 못하는 등의 이슈가 발생할 수 있습니다.
cancel() 메서드는 사용되거나 참조되지 않은 경우에도 모든 광고에서 호출되어야 합니다.
아래 예시는 Activity
의 onDestroy()
메서드에서 Activity
내에서 사용한 모든 GfpAdLoader 참조를 해제하는 예시입니다.
- Kotlin
- Java
override fun onDestroy() {
adLoader?.destroy()
super.onDestroy()
}
@Override
public void onDestroy() {
if (adLoader != null) {
adLoader.cancel();
}
super.onDestroy();
}