애드팝콘 SSP SDK 연동가이드
애드팝콘 홈페이지애드팝콘 SSP 콘솔 바로가기
  • 개요
  • Android
    • 기본 설정
    • 배너 광고
    • 전면 광고
    • 전면 비디오 광고
    • 리워드 비디오 광고
    • 보상형 광고 플러스 연동(beta)
    • 네이티브 광고
      • 네이티브 광고 레이아웃 구성 가이드
        • AdPopcornSSP NativeAdView
    • 스플래시 광고
    • 모달 광고
    • 팝콘텐츠 광고
    • 응답 에러 코드 및 샘플 프로젝트
    • 미디에이션(Android)
      • AdFit
      • Admob
      • AdForus
      • ADOP
      • GAM (Google Ad Manager)
      • Cauly
      • FAN(Facebook Audience Network)
      • MezzoMedia
      • Mintegral
      • Mobwith
      • UnityAds
      • Vungle(LiftOff)
      • Fyber
      • Pangle
      • AppLovin
      • AppLovinMax
      • NAM (Naver Ad Manager)
      • CoupangCPM
    • AppLovin Max Android Mediation 가이드
    • 릴리즈 노트
  • iOS
    • 기본 설정
      • CocoaPod 설치
      • SPM 설치
      • 수동 설치
    • 배너 광고
    • 전면 광고
    • 전면 비디오 광고
    • 리워드 비디오 광고
    • 보상형 광고 플러스 연동(beta)
    • 네이티브 광고
      • NativeAdView layout
        • 직접 설정
        • 템플릿 사용
    • 스플래시 광고
    • 모달 광고
    • 팝콘텐츠 광고
    • 응답 에러 코드 및 샘플 프로젝트
    • 미디에이션
      • NAM (Naver Ad Manager)
      • AdFit
      • AppLovin
      • AppLovinMAX
      • UnityAds
      • Vungle
      • FBAudienceNetwork (FaceBook)
      • AdMob
      • Google AdManager(GAM)
      • ADOP
      • Fyber
      • Mezzo
      • Mintegral
      • Pangle
      • Cauly
      • SDK, Mediation ver 호환성
    • AppLovin Max iOS Mediation 가이드
    • 릴리즈노트
  • Unity
    • Unity (Android)
      • 기본 설정
      • 배너 광고
      • 전면 광고
      • 리워드 비디오 광고
      • 네이티브 광고
      • 보상형 광고 플러스 연동(beta)
      • 미디에이션 Unity Android
    • Unity (iOS)
      • 기본 설정
      • 배너 광고
      • 전면 광고
      • 리워드 비디오 광고
      • 네이티브 광고
      • 보상형 광고 플러스 연동(beta)
      • 미디에이션 Unity iOS
    • 에러 코드
  • Flutter
    • 기본 설정
    • 배너 광고
    • 전면 광고
    • 전면 비디오 광고
    • 리워드 비디오 광고
    • 보상형 광고 플러스 연동(beta)
    • 네이티브 광고
    • 팝콘텐츠 광고
  • React Native(beta)
    • 기본 설정
    • 배너 광고
    • 전면 광고
    • 전면 비디오 광고
    • 리워드 비디오 광고
    • 네이티브 광고
  • Web SDK
  • 하이브리드 앱 - Web(APM + NAM)
    • 네이티브 Side 연동(Android)
    • 네이티브 Side 연동(iOS)
    • WebPage Side 연동
    • 광고 ID 수동 세팅
  • 하이브리드 앱- Web(Adfit)
    • Android
    • iOS
  • 테스트 코드
  • 리포트 API
    • 애드팝콘 SSP Report API
    • DSP Report API
    • Publisher API (Report)
    • Publisher API (Metadata)
    • Adserver Report API
    • Popcontent Report API
  • 추가 기능 연동가이드
    • Adfit Bizboard Android 연동 가이드
    • 웹 CS 페이지 연동
    • AppLovin Custom Network
      • Android
      • iOS
    • KT Library
    • 원스토어 연동가이드
      • 애드팝콘 SSP SDK for Onestore
      • 원스토어 Ads 래핑 가이드(내부용)
        • 배너 광고
        • 전면 광고
        • 전면 비디오 광고
        • 리워드 비디오 광고
        • 네이티브 광고
        • SSP 미디에이션
        • 에러 코드 및 외부 노출 함수
        • 테스트 지면 키
        • AAR 라이브러리 목록
    • 쿠팡 연동가이드
      • 쿠팡 포스트백 연동
      • 쿠팡 EP 리스트 연동
      • 쿠팡 리포트 API 연동
        • 쿠팡 일별 리포트 API
        • 쿠팡 API - Report
        • 쿠팡 API - Product list
    • Reward Banner 스크립트 연동가이드
      • Reward Banner 스크립트 Android
      • Reward Banner 스크립트 iOS
    • 차단관리 파일 가이드
    • 커스텀 타입 연동 가이드
      • 커스텀 타입(Android)
      • 커스텀 타입(iOS)
    • 쿠팡 클릭 이벤트 페이지 연동 가이드
  • 팝콘텐츠 연동가이드
    • WebView 직접 연동
    • 리워드 콜백
  • 웹 SSP
    • 쿠키 매칭
    • Web Header Bidding(WIP)
Powered by GitBook
On this page
  • 1. WebView 추가
  • 2. WebView 세팅 및 랜딩
  • 1) 광고 설정 순서
  • 2) WebView 관련 설정
  • 3) script 로드
  • 4) 클릭 발생 시 리워드 지급

Was this helpful?

  1. 추가 기능 연동가이드
  2. Reward Banner 스크립트 연동가이드

Reward Banner 스크립트 Android

본 가이드는 Android 환경에서 스크립트 클릭 시, 리워드 지급을 위한 연동 방식을 기술합니다.

애드팝콘 SSP에서 제공하는 스크립트만을 노출 시키기 위한 웹뷰를 구성 한 뒤, 아래와 같이 설정하여 해당 웹뷰에서의 클릭을 체크 후 리워드를 지급합니다.

반드시 다른 웹뷰와 분리하여 웹뷰를 생성해야만 광고에 대한 클릭 처리가 정확히 됩니다.

1. WebView 추가

오직 Reward Banner 광고 만을 위한 WebView를 추가합니다.

XML
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView 
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:scrollbars="none">
	...
	<WebView 	
		android:layout_width="match_parent"
		android:layout_height="100dp"
		android:id="@+id/rcpc_webview"/>
	...
    </ScrollView>
</FrameLayout>

2. WebView 세팅 및 랜딩

1) 광고 설정 순서

JAVA
private WebView webView;
private boolean mIsClicked = false;

private void adSetting()
{
	initializeWebViewSetting();
	loadScript();
}

2) WebView 관련 설정

webView 관련 설정을 아래와 같이 진행합니다. (initializeWebViewSetting)

JAVA
private void initializeWebViewSetting()
{			
	webView = (WebView)findViewById(R.id.rcpc_webview);
	webView.getSettings().setJavaScriptEnabled(true);
	webView.setWebViewClient(mWebViewClient);
	webView.setOnTouchListener(mOnTouchListener);
	webView.getSettings().setDefaultTextEncodingName("UTF-8");
	webView.getSettings().setAllowFileAccess(true);
	webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
	webView.getSettings().setDomStorageEnabled(true);
	webView.getSettings().setDatabaseEnabled(true);
}

3) script 로드

애드팝콘 사업실로 부터 전달받은 아래 형태의 script를 webview에 로드합니다.(loadScript)

HTML
<iframe class="adpopcorn-ads" src="https://ssp.igaw.io/sdk/html/mediation_v2.html?{파라미터}" width="{WIDTH}" height="{HEIGHT}" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>
JAVA
private void loadScript()
{   
	String adid = getGoogleAdvertisingId();
	String script = "<iframe id="adpopcorn-ads" src="https://ssp.igaw.io/sdk/html/mediation.html_v2?{파라미터}" 
		width="{WIDTH}" height="{HEIGHT}" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>";
	script = script.replace("{adid}", adid);
	webView.loadData(script, "text/html", "UTF-8");
}
  • 안드로이드 파라미터 정의

광고 물량은 전달 가능한 파라미터 범위에 따라 달라질 수 있습니다. 가능한 범위 내 최대한 전달해주시길 바랍니다.

Parameter
필수
Type
Default
설명

app_key

Y

string

매체용으로 발급된 광고 앱 키

placement_id

Y

string

매체용으로 발급된 광고 지면 아이디

adid

Y

string

Android 광고 식별자

network

N

string

""

네트워크 (mobile or wifi)

carrier

N

string

""

통신사

model

N

string

""

모델명

manufacturer

N

string

""

제조사

os_version

N

string

"0"

플랫폼 OS 버전

skip_mediation

N

boolean

false

미디에이션 광고 skip 여부 (true 전달시, 기본 설정 광고 노출)

단, script의 adid 매크로 값에는 ADID 값을 치환하여 전달해 주시면 됩니다.

ADID를 가져오는 방법은 아래의 링크를 참고해 주시기 바랍니다.

광고 ID 가져오기

4) 클릭 발생 시 리워드 지급

해당 webview에서 클릭 발생 시, 클릭을 캐치하여 리워드 지급 후, 랜딩 주소로 랜딩 시켜줍니다.

JAVA
private WebViewClient mWebViewClient = new WebViewClient(){
	@Override
	public boolean shouldOverrideUrlLoading(final WebView view, WebResourceRequest request) {
		try {
			String url;
			if (Build.VERSION.SDK_INT >= 21) {
				url = request.getUrl().toString();
			} else {
				url = view.getUrl();
			}
			return urlLoading(view, url);
			} catch (Exception e) {
			e.printStackTrace();
			return false;
			}
		}

	@Override
	public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
		try {
			return urlLoading(view, url);
		} catch (Exception e) {
		e.printStackTrace();
		return false;
		}
	}

	@Override
	public void onPageFinished(final WebView view, String url) {
		super.onPageFinished(view, url);
		mIsClicked = false;
	}

	private boolean urlLoading(WebView view, String url) {			
		if (mIsClicked && url != null) {
			mIsClicked = false;
					
			// RCPC 리워드 지급 or 이미 지급 된 경우 바로 랜딩
			Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			context.startActivity(intent);
			return true;
		} else {
			view.loadUrl(url);
			return false;
		}
	}
};

private View.OnTouchListener mOnTouchListener = new View.OnTouchListener() {
	private float startX;
	private float startY;
	private float totalScrollY = 0;
	private int CLICK_ACTION_THRESHOLD = 200;
	private int SCROLL_ACTION_THRESHOLD = 1000;

	@Override
	public boolean onTouch(View v, MotionEvent event) {
		switch (event.getAction()) {
			case MotionEvent.ACTION_DOWN:
				startX = event.getX();
				startY = event.getY();
				break;
			case MotionEvent.ACTION_UP:
				float endX = event.getX();
				float endY = event.getY();
				if (isAClick(startX, endX, startY, endY)) {
					mIsClicked = true;
				}
				break;
		}
		return false;
	}

	private boolean isAClick(float startX, float endX, float startY, float endY) {
		float differenceX = Math.abs(startX - endX);
		float differenceY = Math.abs(startY - endY);
		if (differenceX > CLICK_ACTION_THRESHOLD/* =5 */ || differenceY > CLICK_ACTION_THRESHOLD) {
			return false;
		}
		return true;
	}
};

PreviousReward Banner 스크립트 연동가이드NextReward Banner 스크립트 iOS

Last updated 7 months ago

Was this helpful?

https://developer.android.com/training/articles/ad-id?hl=ko#java