전면 광고
전면 광고는 화면 전체를 덮는 형태의 광고입니다. 다음을 참고하여 전면 광고를 연동합니다.
1. 전면 광고 인스턴스 생성
아래 코드를 추가하여 전면 광고 인스턴스를 생성합니다.
private AdPopcornSSPInterstitialAd interstitialAd;
@Override
rotected void onCreate(Bundle savedInstanceState) {
interstitialAd = new AdPopcornSSPInterstitialAd(context);
}
private var interstitialAd: AdPopcornSSPInterstitialAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
interstitialAd = AdPopcornSSPInterstitialAd(this@MainActivity)
}
2. 전면 Placement ID 설정
아래 코드를 추가하여 전면 광고의 PLACEMENT ID 를 설정합니다. 전면광고 PLACEMENT ID 는 애드팝콘 SSP 콘솔에서 생성이 가능합니다.
interstitialAd.setPlacementId("전면_PlacementId");
interstitialAd?.setPlacementId("전면광고PlacementId")
3. 전면 광고 요청
전면 광고 노출을 원하는 시점에 loadAd()
API 를 호출하여 서버에 광고를 요청합니다.
interstitialAd.loadAd();
interstitialAd?.loadAd()
loadAd 호출에 대한 결과로 광고 수신에 실패한 경우에는 loadAd 재호출을 하시면 안됩니다. 과도한 광고 요청 api 호출은 block 사유가 됩니다.
4. 전면 광고 노출
전면 광고 노출 시점에 showAd()
API 를 추가하여 광고를 노출합니다.
interstitialAd.showAd();
interstitialAd?.showAd()
5. 전면 광고가 노출될 activity 지정
아래 코드를 추가하여 전면 광고의 Load API 를 호출한 activity 가 아닌 다른 곳에서 show 를 하고자 할 경우, 현재의 activity 에서 호출합니다.
interstitialAd.setCurrentActivity(this);
interstitialAd?.setCurrentActivity(this@MainActivity);
6. 전면 광고 로드 여부 체크
전면 광고 로드 시 광고 유/무를 파악할 때 호출 합니다.
true
: 광고 로드 성공false
: 광고 로드 실패
interstitialAd.isLoaded();
interstirialAd?.showAd()
7. 이벤트 리스너
1) 전면 광고 Load 이벤트 리스너
전면 광고를 불러올 때 발생하는 이벤트에 대한 리스너를 설정합니다. 제공되는 리스너와 구현 예시는 다음과 같습니다.
interstitialAd.setInterstitialLoadEventCallbackListener(new IInterstitialLoadEventCallbackListener() {
@Override
public void OnInterstitialLoaded() {
Toast.makeText(MainActivity.this, "LoadEventCallback OnInterstitialLoaded", Toast.LENGTH_SHORT).show();
}
@Override
public void OnInterstitialReceiveFailed(SSPErrorCode errorCode) {
Toast.makeText(MainActivity.this, "LoadEventCallback OnInterstitialReceiveFailed", Toast.LENGTH_SHORT).show();
}
});
interstitialAd?.setInterstitialLoadEventCallbackListener(object: IInterstitialLoadEventCallbackListener {
override fun OnInterstitialLoaded() {
}
override fun OnInterstitialReceiveFailed(errorCode: SSPErrorCode) {
}
})
2) 전면 광고 Show 이벤트 리스너
전면 광고 열고 닫을 경우에 대한 이벤트 리스너를 설정합니다. 제공되는 리스너와 구현 예시는 다음과 같습니다.
interstitialAd.setInterstitialShowEventCallbackListener(new IInterstitialShowEventCallbackListener() {
@Override
public void OnInterstitialOpened() {
}
@Override
public void OnInterstitialOpenFailed(SSPErrorCode errorCode) {
}
@Override
public void OnInterstitialClosed(int CloseEvent) {
// UNKNOWN = 0;
// CLICK_CLOSE_BTN = 1;
// PRESSED_BACK_KEY = 2;
// SWIPE_RIGHT_TO_LEFT = 3;
// SWIPE_LEFT_TO_RIGHT = 4;
// AUTO_CLOSE = 5;
}
@Override
public void OnInterstitialClicked() {
}
});
interstitialAd?.setInterstitialShowEventCallbackListener(object: IInterstitialShowEventCallbackListener{
override fun OnInterstitialOpened() {
}
override fun OnInterstitialOpenFailed(errorCode: SSPErrorCode) {
}
override fun OnInterstitialClosed(CloseEvent: Int) {
// UNKNOWN = 0;
// CLICK_CLOSE_BTN = 1;
// PRESSED_BACK_KEY = 2;
// SWIPE_RIGHT_TO_LEFT = 3;
// SWIPE_LEFT_TO_RIGHT = 4;
// AUTO_CLOSE = 5;
}
override fun OnInterstitialClicked() {
}
})
8. 전면 광고 커스텀 옵션
전면 광고 노출시 아래와 같은 커스텀 옵션을 제공합니다.
(InterstitialAd.CustomExtraData 에 정의되어 있는 값 사용)
필요한 옵션 설정 후 "endingInterstitialAd.setCustomExtras(extras);
" API 를 호출합니다.
endingInterstitialAd = new InterstitialAd(this);
endingInterstitialAd.setPlacementId(TEST_INTERSTITIAL_PLACEMENT_ID);
HashMap extras = new HashMap<>();
// Option1. 배경색 변경
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_BACKGROUND_COLOR , Color.parseColor("#ff0000"));
// Option2. 배경색 + 투명도 변경
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_BACKGROUND_COLOR , Color.parseColor("#11000000"));
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_ENABLE_SWIPE_CLOSE , true);
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_HIDE_CLOSE_BTN , true);
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_SWIPE_MIN_DISTANCE_DP , 120);
// Option3. 전면광고를 Ending 배너로 사용하실 경우 아래 옵션을 추가합니다.
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.IS_ENDING_AD, true);
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT, "백키를 누르시면 종료 시켜드립니다! 감사합니다\n");
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT_SIZE, 14);
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT_COLOR, Color.parseColor("#ffffff"));
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT_GRAVITY, Gravity.RIGHT);
endingInterstitialAd.setCustomExtras(extras);
// Option4. Close 버튼 디바이스 우측 상단 기준 커스텀
HashMap customExtras = new HashMap<>();
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_LEFT_MARGIN, -28); // 영향 받지 않음
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_RIGHT_MARGIN, 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_TOP_MARGIN, 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_BOTTOM_MARGIN, 0); // 영향 받지 않음
interstitialAd.setCustomExtras(customExtra);
// Option5. 중앙 광고물의 Close 버튼 우측 상단 기준 커스텀
// - 광고물 기준으로 커스텀 진행 시 디바이스 가로 , 세로 길이와 광고물의 가로 , 세로 길이에 따라 영향 받는 옵션 값이 달라짐.
// - 광고물이 전체 화면에 노출 되는 경우
//APSSP_AD_CLOSE_BTN_RIGHT_MARGIN, IGAW_AD_CLOSE_BTN_TOP_MARGIN 영향 받음.
// - 디바이스 화면이 광고물 보다 더 큰 경우
//APSSP_AD_CLOSE_BTN_LEFT_MARGIN, IGAW_AD_CLOSE_BTN_BOTTOM_MARGIN 영향 받음.
HashMap customExtras = new HashMap<>();
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_MARGIN_FROM_EDGE, false);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_LEFT_MARGIN, -28);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_RIGHT_MARGIN, 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_TOP_MARGIN, 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_BOTTOM_MARGIN, 0);
interstitialAd.setCustomExtras(customExtra);
endingInterstitialAd = AdPopcornSSPInterstitialAd(this@MainActivity)
var extras:HashMap<String, Any> = HashMap()
// Option1. 배경색 변경
extras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_BACKGROUND_COLOR] = Color.parseColor("#ff0000")
// Option2. 배경색 + 투명도 변경
extras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_BACKGROUND_COLOR] = Color.parseColor("#11000000")
extras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CANCELABLE_TIME_MILLIS] = 3000
extras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_ENABLE_SWIPE_CLOSE] = true
extras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_HIDE_CLOSE_BTN] = true
extras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_SWIPE_MIN_DISTANCE_DP] = 120
// Option3. 전면광고를 Ending 배너로 사용하실 경우 아래 옵션을 추가합니다.
extras[AdPopcornSSPInterstitialAd.CustomExtraData.IS_ENDING_AD] = true
extras[AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT] = "백키를 누르시면 종료 시켜드립니다! 감사합니다\n"
extras[AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT_SIZE] = 14
extras[AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT_COLOR] = Color.parseColor("#ffffff")
extras[AdPopcornSSPInterstitialAd.CustomExtraData.ENDING_TEXT_GRAVITY] = Gravity.RIGHT
endingInterstitialAd?.setCustomExtras(extras)
// Option4. Close 버튼 디바이스 우측 상단 기준 커스텀
var customExtras:HashMap<String, Any> = HashMap()
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_LEFT_MARGI] = -28 // 영향 받지 않음
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_RIGHT_MARGIN] = 50
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_TOP_MARGIN] = 50
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_BOTTOM_MARGIN] = 0 // 영향 받지 않음
interstitialAd?.setCustomExtras(customExtras)
// Option5. 중앙 광고물의 Close 버튼 우측 상단 기준 커스텀
// - 광고물 기준으로 커스텀 진행 시 디바이스 가로 , 세로 길이와 광고물의 가로 , 세로 길이에 따라 영향 받는 옵션 값이 달라짐.
// - 광고물이 전체 화면에 노출 되는 경우
// APSSP_AD_CLOSE_BTN_RIGHT_MARGIN, APSSP_AD_CLOSE_BTN_TOP_MARGIN 영향 받음.
// - 디바이스 화면이 광고물 보다 더 큰 경우
// APSSP_AD_CLOSE_BTN_LEFT_MARGIN, APSSP_AD_CLOSE_BTN_BOTTOM_MARGIN 영향 받음.
var customExtras:HashMap<String, Any> = HashMap()
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_MARGIN_FROM_EDGE] = false
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_LEFT_MARGIN] = -28
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_RIGHT_MARGIN] = 50
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_TOP_MARGIN] = 50
customExtras[AdPopcornSSPInterstitialAd.CustomExtraData.APSSP_AD_CLOSE_BTN_BOTTOM_MARGIN] = 0
interstitialAd?.setCustomExtras(customExtras)
Last updated