전면 광고

전면 광고는 화면 전체를 덮는 형태의 광고입니다. 다음을 참고하여 전면 광고를 연동합니다.

1. 전면 광고 인스턴스 생성

아래 코드를 추가하여 전면 광고 인스턴스를 생성합니다.

private AdPopcornSSPInterstitialAd interstitialAd; 

@Override 
rotected void onCreate(Bundle savedInstanceState) { 
    interstitialAd = new AdPopcornSSPInterstitialAd(context);
}

2. 전면 Placement ID 설정

아래 코드를 추가하여 전면 광고의 PLACEMENT ID 를 설정합니다. 전면광고 PLACEMENT ID 는 애드팝콘 SSP 콘솔에서 생성이 가능합니다.

interstitialAd.setPlacementId("전면_PlacementId");

3. 전면 광고 요청

전면 광고 노출을 원하는 시점에 loadAd() API 를 호출하여 서버에 광고를 요청합니다.

interstitialAd.loadAd();

loadAd 호출에 대한 결과로 광고 수신에 실패한 경우에는 loadAd 재호출을 하시면 안됩니다. 과도한 광고 요청 api 호출은 block 사유가 됩니다.

4. 전면 광고 노출

전면 광고 노출 시점에 showAd() API 를 추가하여 광고를 노출합니다.

interstitialAd.showAd();

5. 전면 광고가 노출될 activity 지정

아래 코드를 추가하여 전면 광고의 Load API 를 호출한 activity 가 아닌 다른 곳에서 show 를 하고자 할 경우, 현재의 activity 에서 호출합니다.

interstitialAd.setCurrentActivity(this);

6. 전면 광고 로드 여부 체크

전면 광고 로드 시 광고 유/무를 파악할 때 호출 합니다.

  • true: 광고 로드 성공

  • false: 광고 로드 실패

interstitialAd.isLoaded();

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(); 
	}
});

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() { 
	} 
});

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);

Last updated