시작하기
전면형 광고는 앱 전체 화면을 차지하는 광고 형식으로 주로 앱내 화면 전환 시점과 같이 앱 이용이 잠시 중단될 때 자연스럽게 광고가 게재됩니다. 이 가이드에서는 NAM SDK 를 활용하여 전면형 광고를 통합하는 방법을 설명합니다.
시작하기 앞서
- 광고 호출을 위해 Ad Unit ID 가 필요합니다.
- NAM Admin 을 통해 광고 공급자 설정, Inventory 설정, 광고 유닛 등록 등의 과정을 마무리하여 주시기 바랍니다.
- 관련 내용은 NAM 관리자에게 문의 부탁드립니다.
- 광고를 오버레이로 덮는 다른 View 가 있을 경우, 경우에 따라서 노출 측정이 제대로 되지 않아 성과 지표 측정에 불이익이 있을 수 있습니다.
[Step 1] NAM SDK 적용 완료
시작하기를 참고해 주세요.
이하 내용은 NAM SDK 적용이 완료된 상태를 가정하고 진행합니다.
[Step 2] GfpInterstitialAdManager 초기화
전면형 광고를 사용하려면 GfpInterstitialAdManager 를 초기화해야 합니다. 이 때, 광고 요청에 필요한 Ad Unit ID 와, 단일 광고 요청에 대한 런타임 정보(예: 타겟팅 정보) 를 포함하는 AdParam 객체를 생성하여 매개변수로 전달해야 합니다.
- Kotlin
- Java
class MainActivity : Activity() {
private var interstitialAdManager: GfpInterstitialAdManager? = null;
override fun onCreate(savedInstanceState: Bundle?) {
...
// Create a new ad parameter.
val adParam = AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
...
.build()
// Create a new GfpInterstitialAdManager.
interstitialAdManager = GfpInterstitialAdManager(this, adParam)
}
}
public class MainActivity extends Activity {
private GfpInterstitialAdManager interstitialAdManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Create a new ad parameter.
AdParam adParam = new AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
...
.build();
// Create a new GfpInterstitialAdManager.
interstitialAdManager = new GfpInterstitialAdManager(this, adParam);
}
}
[Step 3] InterstitialAdListener 설정
InterstitialAdListener 는 전면형 광고의 로드 및 노출 상태를 수신하는 리스너입니다. GfpInterstitialAdManager 의 로드 및 노출과 관련된 이벤트를 처리합니다. 전면형 광고를 로드하기 전에 다음과 같이 InterstitialAdListener 를 설정해야 합니다.
- Kotlin
- Java
interstitialAdManager.setAdListener(object: InterstitialAdListener() {
override fun onAdLoaded(ad: GfpInterstitialAd) {
// Called when an ad is loaded.
// You can show the ad here.
}
override fun onAdStarted(ad: GfpInterstitialAd) {
// Called when an ad is started or shown.
}
override fun onAdClicked(ad: GfpInterstitialAd) {
// Called when an ad is clicked.
}
override fun onAdClosed(ad: GfpInterstitialAd) {
// Called when an ad is closed.
}
override fun onError(ad: GfpInterstitialAd, error: GfpError) {
// Called when an error happened while the ad is
// attempting to load or rendering an ad.
}
}
interstitialAdManager.setAdListener(new InterstitialAdListener() {
@Override
public void onAdLoaded(GfpInterstitialAd ad) {
// Called when an ad is loaded.
// You can show the ad here.
}
@Override
public void onAdStarted(GfpInterstitialAd ad) {
// Called when an ad is started or shown.
}
@Override
public void onAdClicked(GfpInterstitialAd ad) {
// Called when an ad is clicked.
}
@Override
public void onAdClosed(GfpInterstitialAd ad) {
// Called when an ad is closed.
}
@Override
public void onError(GfpInterstitialAd ad, GfpError error) {
// Called when an error happened while the ad is
// attempting to load or rendering an ad.
}
});
[Step 4] 광고 로드
GfpInterstitialAdManager 의 loadAd() 메서드를 호출하여 광고를 로드할 수 있습니다. 광고가 성공적으로 로드되면 InterstitialAdListener 의 onAdLoaded() 메서드가 호출되고 광고 로드에 실패할 경우 onError() 메서드가 호출됩니다.
UI 스레드에서 광고를 로드해야 합니다.
기선언된 GfpInterstitialAdManager 를 재사용하여 광고를 요청하려면 destroy() 호출 없이 loadAd() 만 호출해야만 합니다. 만약, destroy() 메서드 호출한 후 loadAd() 를 호출하면, 리소스가 해제된 상태로 요청이 발생하여 광고 이벤트를 수신하지 못하는 등의 이슈가 발생할 수 있습니다.
- Kotlin
- Java
class MainActivity : Activity() {
private var interstitialAdManager: GfpInterstitialAdManager? = null;
override fun onCreate(savedInstanceState: Bundle?) {
...
// Create a new ad parameter.
val adParam = AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
...
.build()
// Create a new GfpInterstitialAdManager.
interstitialAdManager = GfpInterstitialAdManager(this, adParam).run {
// Set the ad listener
setAdListener(object: InterstitialAdListener() {
override fun onAdLoaded(ad: GfpInterstitialAd) {
// Called when an ad is loaded.
// You can show the ad here.
}
override fun onError(ad: GfpInterstitialAd, error: GfpError) {
// Called when an error happened while the ad is
// attempting to load or rendering an ad.
}
...
})
// Load the ad
loadAd()
}
}
}
public class MainActivity extends Activity {
private GfpInterstitialAdManager interstitialAdManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Create a new ad parameter.
AdParam adParam = new AdParam.Builder()
.setAdUnitId("YOUR_AD_UNIT_ID")
...
.build();
// Create a new GfpInterstitialAdManager.
interstitialAdManager = new GfpInterstitialAdManager(this, adParam);
// Set the ad listener
interstitialAdManager.setAdListener(new InterstitialAdListener() {
@Override
public void onAdLoaded(GfpInterstitialAd ad) {
// Called when an ad is loaded.
// You can show the ad here.
}
@Override
public void onError(GfpInterstitialAd ad, GfpError error) {
// Called when an error happened while the ad is
// attempting to load or rendering an ad.
}
...
});
// Load the ad
interstitialAdManager.loadAd();
}
}
[Step 5] 광고 게재
광고가 성공적으로 로드되면 InterstitialAdListener 의 onAdLoaded 메서드가 호출됩니다. 이 때, GfpInterstitialAd 객체를 사용하여 광고를 게재할 수 있습니다. 전면형 광고는 즉시 게재할지, 또는 일정 시간이 지난 후에 게재할지에 따라 연동 방식에 차이가 있을 수 있습니다.
InterstitialAdListener 의 모든 메서드의 공통적으로 전달되는 매개변수인 GfpInterstitialAd 는 광고를 로드할 때 사용한 GfpInterstitialAdManager 와 동일한 객체입니다.
1. 즉시 게재
전면형 광고가 로드된 직후 즉시 게재하는 경우의 예시는 아래와 같습니다.
- Kotlin
- Java
override fun onAdLoaded(ad: GfpInterstitialAd) {
// Interstitial ad is loaded and ready to be displayed
ad.show(this)
}
@Override
public void onAdLoaded(GfpInterstitialAd ad) {
// Interstitial ad is loaded and ready to be displayed
ad.show(this);
}