전면 광고

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

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. 전면 광고 노출

전면 광고 노출 시점에 아래 API 를 추가하여 광고를 노출합니다.

interstirialAd.showAd();

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

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

interstitialAd.setCurrentActivity(this);

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

전면 광고 로드 시 광고 유/무를 파악할 때 호출 합니다. (리턴 true = 광고 로드 성공 , false = 광고 로드 실패)

interstitialAd.isLoaded();

7. 이벤트 리스너

전면 광고를 불러올 때 발생하는 이벤트에 대한 리스너를 설정합니다. 제공되는 리스너와 구현 예시는 다음과 같습니다.

  • OnInterstitialLoaded : 전면 광고 로딩 성공

  • OnInterstitialReceiveFailed : 전면 광고 로딩 실패 (전달되는 에러코드는 하단의 테이블 참고)

  • OnInterstitialOpened : 전면 광고 열기

  • OnInterstitialOpenFailed : 전면 광고 열기 실패

  • OnInterstitialClosed : 전면 광고 닫기닫기 이벤트가 발생한 방법에 따라 closeEvent를 전달해 줍니다. 단 , 미디에이션 광고의 경우에는 SSP에서 확인할 수 없이 Unknown으로 전달되어 집니다.

  • OnInterstitialClicked : 전면 광고 클릭 시

interstitialAd.setInterstitialEventCallbackListener(new IInterstitialEventCallbackListener() { 
	
	@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(); 
	}

	@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;
			// AUTO_CLOSE = 3; 
	}

	@Override 
	public void OnInterstitialClicked() { 
	} 
});

8. 전면 광고 커스텀 옵션

전면 광고 노출시 아래와 같은 커스텀 옵션을 제공합니다. (InterstitialAd.CustomExtraData 에 정의되어 있는 값 사용)

필요한 옵션 설정 후 "endingInterstitialAd.setCustomExtras(extras);" API 를 호출합니다.

  • ONESTORE_AD_BACKGROUND_COLOR 전면 광고 배경색 및 투명도 변경(Int 형) -> Default : Black , 투명도 : 0 (#ff000000)

  • ONESTORE_AD_HIDE_CLOSE_BTN 전면 광고 우측 상단 닫기 버튼 노출 여부 설정 (Boolean 형) -> Default : false

  • ONESTORE_AD_CLOSE_BTN_MARGIN_FROM_EDGE 기본 값은 true , 중앙 광고 이미지를 기준으로 마진을 주고 싶은 경우 false로 변경하여 사용

  • ONESTORE_AD_CLOSE_BTN_LEFT_MARGIN : ONESTORE 전면 광고 닫기 버튼 좌측 마진 -> Default : -28dp

  • ONESTORE_AD_CLOSE_BTN_RIGHT_MARGIN : ONESTORE 전면 광고 닫기 버튼 우측 마진 -> Default : 20dp

  • ONESTORE_AD_CLOSE_BTN_TOP_MARGIN : ONESTORE 전면 광고 닫기 버튼 상단 마진 -> Default : 20dp

  • ONESTORE_AD_CLOSE_BTN_BOTTOM_MARGIN : ONESTORE 전면 광고 닫기 버튼 하단 마진 -> Default : 0

  • ONESTORE_AD_DISABLE_BACK_BTN ONESTORE 전면 광고 백키 종료 사용 안함(Boolean형) -> Default : false

  • IS_ENDING_AD : 전면 광고에 종료 메시지 노출 여부 (Boolean 형) -> Default : false

  • ENDING_TEXT 종료 광고 메시지 변경 (String 형) -> Default : 뒤로가기를 한 번 더 누르시면 종료됩니다.

  • ENDING_TEXT_SIZE : 종료 광고 메시지 크기 변경 (Int 형) -> Default : 11sp

  • ENDING_TEXT_COLOR : 종료 광고 메시지 색상 변경 (Int 형) -> Default : White

  • ENDING_TEXT_GRAVITY : 종료 광고 메시지 정렬 위치 변경 (Int 형) -> Default : 우측 정렬

endingInterstitialAd = new AdPopcornSSPInterstitialAd (this);

endingInterstitialAd.setPlacementId(TEST_INTERSTITIAL_PLACEMENT_ID);

HashMap extras = new HashMap<>();

// Option1. 배경색 변경
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_BACKGROUND_COLOR, Color.parseColor("#ff0000"));

// Option2. 배경색 + 투명도 변경
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_BACKGROUND_COLOR, Color.parseColor("#11000000"));
extras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_HIDE_CLOSE_BTN , true);

// 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.ONESTORE_AD_CLOSE_BTN_LEFT_MARGIN , -28); // 영향 받지 않음
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_RIGHT_MARGIN , 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_TOP_MARGIN , 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_BOTTOM_MARGIN , 0); // 영향 받지 않음
interstitialAd.setCustomExtras(customExtra);

// Option5. 중앙 광고물의 Close 버튼 우측 상단 기준 커스텀
// - 광고물 기준으로 커스텀 진행 시 디바이스 가로 , 세로 길이와 광고물의 가로 , 세로 길이에 따라 영향 받는 옵션 값이 달라짐.

// - 광고물이 전체 화면에 노출 되는 경우
//ONESTORE_AD_CLOSE_BTN_RIGHT_MARGIN, IGAW_AD_CLOSE_BTN_TOP_MARGIN 영향 받음.

// - 디바이스 화면이 광고물 보다 더 큰 경우
//ONESTORE_AD_CLOSE_BTN_LEFT_MARGIN, IGAW_AD_CLOSE_BTN_BOTTOM_MARGIN 영향 받음.

HashMap customExtras = new HashMap<>();
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_MARGIN_FROM_EDGE , false);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_LEFT_MARGIN , -28);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_RIGHT_MARGIN , 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_TOP_MARGIN , 50);
customExtras.put(AdPopcornSSPInterstitialAd.CustomExtraData.ONESTORE_AD_CLOSE_BTN_BOTTOM_MARGIN , 0);
interstitialAd.setCustomExtras(customExtra);

Last updated