Greenp Offerwall Android v3 For Extend 연동가이드 - rnd-adforus/GreenpSDK_Android GitHub Wiki

3.5.0 이상 Migration 안내

# [!3.5.0]이상 부터는 별도의 SDK로 분리되었던 GreenpOfferwall SDK AOS (v3) For Extend가

# GreenpOfferwall SDK AOS (v3) 와 함께 Dependency 추가 의존성으로 옵셔널하게 적용됩니다.!

3.5.0v 이상 신규 버전 가이드 이동하기

이전 버전 가이드 보기 ## ## ******** ## 바로가기 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)

0. Greenp Offerwall Android v3 For Extend

Greenp Offerwall Android v3 For Extend은 그린피 오퍼월 광고와 구글 광고(배너, 전면, 리워드, 네이티브)를 모두 지원 받을 수 있는 통합 SDK 서비스입니다. 그린피 오퍼월 내에서도 다음과 같이 구글 광고가 지원됩니다.

구글 광고 송출을 위한 운영 프로세스를 선 진행해 주시길 바랍니다.
GreenPOfferwall + Google 통합 MCM 가이드

그린피 오퍼월 통합 내 구글 광고 iOS 연동 가이드 바로가기

1. build.gradle 설정

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'
}

2. AndroidManifest.xml 설정

개인 식별과 리워드 적립을 위해 아래의 권한이 필요합니다. 권한 설정이 되지 않는 경우 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"/>

HTTP 트래픽 허용 관련

그린피 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 ID을 application 태그 내부에 작성하여주세요. (앱별 Application ID를 Adforus 운영팀에 문의해주세요.)

<application>
...
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="Your Admob Application ID"/>
</application>

3. Proguard 설정

-keep class com.adforus.sdk.greenp.v3.** { *; }
-dontwarn com.adforus.sdk.greenp.v3.**

4. SDK 초기화

init 호출

앱의 최초 실행 부분에서 SDK 를 초기화 합니다. ( ex. Application, MainActivity 등 )

/**
* @params
*   - Context context
*   - String appCode ( 발급받은 매체 코드 )
*   - String appUid( 매체사 유저 아이디 )
*   - OnGreenpRewardListener listener
* */
GreenpReward.init(Context context, String appCode, String appUid, GreenpReward.OnGreenpRewardListener listener);

※ 유저 구분값 생성 규칙

  1. 각각의 유저별 고유한 값을 이용해야 합니다.
  2. 개인정보 및 ADID는 사용할 수 없습니다. ( 암호화 후 사용 가능 )
  3. 한글, 특수문자, 공백은 반드시 URL 인코딩 후 사용하셔야 합니다.

OnGreenpRewardListener 결과 값

SDK 초기화 시 결과 값을 listener 로 전달합니다.

/**
* @params
*   - boolean result
*   - String msg( 초기화 실패 시 에러 메시지 )
* */
public void onResult(boolean result, String msg){ ... }

OfferwallBuilder

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

5. SDK 사용법

Offerwall 호출

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)

배너 요청 결과로 전달받은 GreenpBanner class

/**
* @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 전에 설정합니다.
NativeAd광고

6. 파라미터 콜백 설정

광고 참여가 정상적으로 완료된 경우, 매체사에서 등록 하신 콜백 URL로 암호화키를 전송해 드립니다.

CallBack url : 매체사 URL
Method : 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 대신 원하는 파라미터로 변경가능
⚠️ **GitHub.com Fallback** ⚠️