Greenp Offerwall Android v3 For Extend 연동가이드 - rnd-adforus/GreenpSDK_Android GitHub Wiki
이전 버전 가이드 보기
## ## ******** ## 바로가기 0. [Greenp Offerwall Android v3 For Extend](#chapter-0) 1. [build.gradle 설정](#chapter-1) 2. [AndroidManifest.xml 설정](#chapter-2) 3. [Proguard 설정](#chapter-3) 4. [SDK 초기화](#chapter-4) 5. [SDK 사용법](#chapter-5) 6. [콜백 URL 파라미터 설정](#chapter-6)Greenp Offerwall Android v3 For Extend은 그린피 오퍼월 광고와 구글 광고(배너, 전면, 리워드, 네이티브)를 모두 지원 받을 수 있는 통합 SDK 서비스입니다.
그린피 오퍼월 내에서도 다음과 같이 구글 광고가 지원됩니다.
구글 광고 송출을 위한 운영 프로세스를 선 진행해 주시길 바랍니다.
GreenPOfferwall + Google 통합 MCM 가이드
build.gradle 파일에 아래의 내용을 추가합니다. [Project script]
allprojects {
repositories {
...
maven {
url "https://nexus.adforus.com/repository/greenp/"
}
maven {
url 'https://artifact.bytedance.com/repository/pangle/'
}
}
}
[Module script]
dependencies {
...
// 가이드 문서 내 최신버전 참고
implementation 'com.adforus.sdk:greenp_v3:3.4.2.0-UAD'
}
개인 식별과 리워드 적립을 위해 아래의 권한이 필요합니다. 권한 설정이 되지 않는 경우 SDK를 사용할 수 없습니다.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<!-- CS 첨부파일 등록을 위해 외부 파일 접근권한이 필요합니다. api level에 따라 선택해서 선언해주세요. --> <!-- targetSdk 32 이하 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- targetSdk 33 이상 --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
그린피 SDK 에서는 HTTPS 를 사용하고 있지 않습니다. 따라서 SDK의 AndroidManifest.xml 을 통해 아래의 내용을 포함하고 있습니다.
(그린피에서는 많은 광고사를 실시간으로 연동하고 있어 여러 도메인이 추가/삭제 될 수 있습니다. 가급적 모든 HTTP 트래픽의 허용을 권장드립니다.)
[AndroidManifest.xml]
<application
...
android:usesCleartextTraffic="true">
...
<application/>
앱의 보안을 위해 HTTP 프로토콜을 허용하지 않고자 하시는 경우 usesCleartextTraffic 을 false 로 변경 후 network_security_config.xml 에 아래의 도메인을 예외사항으로 추가해주세요. (허용이 필요한 도메인의 목록은 예고없이 추가/삭제 될 수 있습니다.)
[network_security_config.xml]
<domain includeSubdomains="true">greenp.kr</domain>
<domain includeSubdomains="true">decaffeine.net</domain>
<domain includeSubdomains="true">adboost.co.kr</domain>
구글 광고 호출을 위한 Application ID을 application 태그 내부에 작성하여주세요. (앱별 Application ID를 Adforus 운영팀에 문의해주세요.)
<application>
...
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="Your Admob Application ID"/>
</application>
-keep class com.adforus.sdk.greenp.v3.** { *; }
-dontwarn com.adforus.sdk.greenp.v3.**
앱의 최초 실행 부분에서 SDK 를 초기화 합니다. ( ex. Application, MainActivity 등 )
/**
* @params
* - Context context
* - String appCode ( 발급받은 매체 코드 )
* - String appUid( 매체사 유저 아이디 )
* - OnGreenpRewardListener listener
* */
GreenpReward.init(Context context, String appCode, String appUid, GreenpReward.OnGreenpRewardListener listener);
※ 유저 구분값 생성 규칙
- 각각의 유저별 고유한 값을 이용해야 합니다.
- 개인정보 및 ADID는 사용할 수 없습니다. ( 암호화 후 사용 가능 )
- 한글, 특수문자, 공백은 반드시 URL 인코딩 후 사용하셔야 합니다.
SDK 초기화 시 결과 값을 listener 로 전달합니다.
/**
* @params
* - boolean result
* - String msg( 초기화 실패 시 에러 메시지 )
* */
public void onResult(boolean result, String msg){ ... }
OnGreenpRewardListener 를 통해 SDK 초기화에대한 성공을 리턴받으면 OfferwallBuilder 객체를 가져옵니다.
OfferwallBuilder builder = GreenpReward.getOfferwallBuilder();
//필요한 경우 매체 고유키를 등록합니다. ( 광고 참여에 대한 postback 전송 시 전달될 리퍼러 )
builder.setAppUniqKey(String appUniqKey);
//GreenpReward.getOfferwallBuilder().setAppUniqKey(String appUniqKey);
//만 14세 미만 아동 타켓시 true로 설정합니다.
builder.setChildMode(true);
//그린피의 기본 폰트설정 사용여부를 설정합니다.
//true로 설정한 경우 그린피 기본폰트, false로 설정한 경우 시스템폰트를 적용합니다. ( 기본값 false )
builder.useGreenpFontStyle(boolean use);
Greenp Offerwall Activity 를 호출합니다.
//오퍼월 호출
builder.showOfferwall(Activity activity);
Activity가 아닌 띠, native, popup 형태의 배너를 이용하고자 하는 경우 호출합니다.
/**
* @params
* - Activity activity
* - int bannerType ( 배너 형태 - OfferwallBuilder.BANNER_320x50, OfferwallBuilder.BANNER_POPUP,
* OfferwallBuilder.BANNER_MINI, OfferwallBuilder.BANNER_FRAGMENT )
* - OnRequestBannerListener listener
* */
builder.requestBanner(Activity activity, int bannerType, OfferwallBuilder.OnRequestBannerListener listener);
/**
* @params
* - boolean result
* - String errMsg (실패 시 에러 메시지 )
* - GreenpBanner banner ( 배너정보 클래스 )
* */
interface OnRequestBannerListener.onResult(boolean result, String errMsg, GreenpBanner banner)
/**
* @method
* - View getView() ( 띠, 미니배너 요청 시 배너 view를 반환 )
* - View getFragment() ( 오퍼월 Fragment 요청 시 Fragement 를 반환 )
* - void showPopupBanner ( popup 배너 요청 시 팝업배너 호출 )
* */
class GreenpBanner
UAdBanner uAdBanner = new UAdBanner(AFActivity.this, "Your Ad Code", new UBannerListener(){
@Override
public void onLoaded(View view) {
ubanner_container.addView(view, ubanner_container.getLayoutParams());
}
@Override
public void onLoadFail(String s) {
}
@Override
public void onClick() {
}
});
uAdBanner.load();
전면형 광고를 로드합니다. 광고 요청 Ad code는 Adforus 운영팀에 문의하세요.
UAdInterstitial interstitial = new UAdInterstitial(AFActivity.this, "Your Ad Code", new UInterstitialListener() {
@Override
public void onLoaded() {
// 로드 콜백 이후 광고 Show 메소드 동작
}
@Override
public void onFailed(String s) {
}
@Override
public void onShow() {
}
@Override
public void onClick() {
}
@Override
public void onComplete() {
}
});
interstitial.load();
UInterstitialListener 콜백 함수인 onLoaded()이 호출되면 광고가 정상 로드 되었음을 의미합니다. 이후 로드 된 광고를 show() 메소드로 노출 시킵니다.
interstitial.show();
보상형 광고를 로드합니다. 광고 요청 Ad code는 Adforus 운영팀에 문의하세요.
UAdReward reward = new UAdReward(AFActivity.this, "Your Ad Code", new URewardListener() {
@Override
public void onLoaded() {
}
@Override
public void onFailed(String s) {
}
@Override
public void onShow() {
}
@Override
public void onClick() {
}
@Override
public void onSkip() {
}
@Override
public void onComplete() {
}
@Override
public void onClose() {
}
});
reward.load();
URewardListener 콜백 함수인 onLoaded()이 호출되면 광고가 정상 로드 되었음을 의미합니다. 이후 로드 된 광고를 show() 메소드로 노출 시킵니다.
reward.show();
NativeAd형 광고를 로드합니다. 작성하시는 XML 레이아웃 배치에 맞추어 각 광고 요소를 받아옵니다. 광고 요청 Ad code는 Adforus 운영팀에 문의하세요.
UAdNative uAdNative = new UAdNative.Builder(AFActivity.this, "Your Ad code", new UAdNativeAdListener(){
@Override
public void onLoaded(View view) {
}
@Override
public void onLoadFail(String s) {
}
@Override
public void onClick() {
}
}).setNativeItemID(R.layout.ad_uadnative_item)
.setAdMediaID(R.id.uad_native_main_media)
.setAdAppIconID(R.id.uad_native_icon)
.setAdBodyID(R.id.uad_native_body)
.setAdHeadLineID(R.id.uad_native_headline)
.setAdCallToActionID(R.id.uad_native_action)
.setAdPriceID(R.id.uad_native_price)
.build();
uAdNative.load();
nativead_container.addView(uAdNative);
다음 사진은 예시로 구성한 xml로 호출한 NativeAd 광고 입니다. xml을 필요에 따라 구성하고 각 layout 및 Resource Id를 load 전에 설정합니다.
광고 참여가 정상적으로 완료된 경우, 매체사에서 등록 하신 콜백 URL로 암호화키를 전송해 드립니다.
CallBack url : 매체사 URLMethod : GET or POST (기본은 GET 방식이나 요청시 POST 방식으로도 가능합니다.
Ad Parameter | Type | 설명 |
---|---|---|
ads_idx | int |
광고키 |
ads_name | string |
갬페인 타이틀 |
rwd_cost | int |
매체사에 지급되는 단가 |
app_uid | string |
매체사에 보낸 유저 구분 값 (UserID) |
gp_key | int |
전환 건에 대한 유니크 값 |
etc | int |
referrer 값. 매체용 추가 정보(매체 uniq 클릭값 등) etc 대신 원하는 파라미터로 변경가능 |