Coder Social home page Coder Social logo

adlib.android_media_app's Introduction

SDK Version History

버전 내용
5.1.5
(2023.07.06)
샘플앱 targetSdkVersion 33 업데이트
구글 play-service-ads version update 및 interface 수정, 모펍 제거
5.1.4
(2023.04.20)
샘플앱 targetSdkVersion 31 업데이트
광고 API 도메인 수정
5.1.2
(2020.10.14)
샘플앱 targetSdkVersion 29 업데이트
애드립SDK 내에서 사용중이었던 non-SDK interface 수정
5.1.1
(2019.10.22)
AOS 8.0(Oreo) 버전에서 일부 전면배너 노출 이슈 등 SDK 버그 픽스
Mobfox 라이브러리 연동 이슈 수정
5.1.0.0
(2019.08.20)
300X250(하프 배너) 광고 영역 추가
SDK 내부 개선
5.0.0.2
(2019.04.05)
구글 플레이스토어 앱 마켓 랜딩 개선
구형 단말기에서 전면배너 뷰의 잘림현상 개선
같은 플랫폼에서 광고가 연속적으로 노출될 때 리스너를 다시 주지 않는 현상 수정
5.0.0.1
(2018.12.10)
이용자 단말로부터 수집하는 데이터 항목 축소
5.0.0.0
(2018.06.12)
미디에이션 워터폴 방식 변경(광고 노출 성공하는 경우 스케쥴 index 초기화)
중지된 미디에이션 삭제
샘플 프로젝트 업데이트

ADLib AOS SDK 적용 가이드

애드립 AOS SDK를 사용하여 애드립 광고를 노출하는 방법을 제공합니다.
또한 기타 광고 플랫폼을 사용하여 미디에이션 기능을 사용하는 방법을 제공합니다.

미디에이션 플랫폼 SDK 지원

각 플랫폼의 SDK 버전은 API call 방식이 변경되지 않는한 기존의 애드립 SubView를 통해 상위, 하위 호환이 가능합니다. 실제로 각 플랫폼의 마이너 버전 업데이트가 일어나더라도 애드립 구현부의 변경없이 업데이트 된 SDK 만 새롭게 적용하면 그대로 사용가능하며, 최소한의 구현부 수정으로 큰 수정없이 적용할 수 있도록 구성되었습니다.

플랫폼 버전 SDK 다운로드
AdMixer v2.1.3 다운로드
Adfit(Adam) v3.7.0 다운로드
Admob Google Play Version 다운로드
Amazon v6.0.0 다운로드
Cauly v3.5.14 다운로드
FaceBook v6.2.0 다운로드
Inmobi v9.1.1 다운로드
MillennialMedia v6.8.3 다운로드
Mobfox v3.6.9 다운로드
T-ad(Syrup Ad/Dawin Click) v3.16.7 다운로드
TNK v6.61 다운로드
Mezzo MANPLUS v200 다운로드

개발환경

  • 최소 SDK Version : Android 19
  • Compile SDK : Android 26 이상
  • Build Tool : Android Studio 권장

프로젝트 연동

기본 설정

단계1. Gradle 설정

  • 애드립에서 제공하는 샘플 프로젝트는 Gradle 환경의 안드로이드 스튜디오에서 빌드하기에 최적화 되어 있습니다.
[build.gradle]
android {
  defaultConfig {
    ...
    multiDexEnabled true
  }
  dexOptions {
    jumboMode = true
    javaMaxHeapSize "4g"
  }
}
  • com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 에러가 발생하는 경우 defaultConfig의 multiDexEnable 상태를 꼭 확인해주시기 바랍니다.
  • dexOptions은 빌드 시 OutOfMemoryError가 발생할 경우, 확인해주시기 바랍니다.
  • 안정적인 빌드를 위해 가능하면 프로가드를 사용하도록 권장합니다.

단계2. 라이브러리 추가

  • 광고 설정을 위해 gradle 파일의 dependencies를 추가합니다.
dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation 'com.android.support:multidex:1.0.3'
  implementation 'com.google.android.gms:play-services-base:16.1.0'
  implementation 'com.google.android.gms:play-services-ads:22.1.0'
}
  • 'com.android.support:multidex:1.0.3' : 안드로이드의 메서드 제한 오류를 해결하기 위한 라이브러리 추가.
  • 'com.google.android.gms:play-services-base:16.1.0', 'com.google.android.gms:play-services-ads:22.1.0' : 안드로이드에서 광고 설정에 필요한 설정입니다. 미디에이션을 사용한다면 각 플랫폼 가이드에 따라 추가해주시기 바랍니다

단계3. AndroidManifest 설정

<!-- 애드립 사용을 위한 필수 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application
  android:icon="@mipmap/ic_launcher"
  android:usesCleartextTraffic="true" // targetSdkVersion 28 부터 필수 추가
  android:label="@string/app_name">

  <activity
    android:name="com.mocoplex.adlib.AdlibDialogActivity"
    android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
    android:theme="@android:style/Theme.Translucent"/>
</application>
  • Android 9.0 에서 보안 개선을 위해 TLS 네트워크를 기본으로 합니다.
  • Android 9.0 이상을 대상으로 하는 경우 usesCleartextTraffic 을 true로 설정 해 주셔야 HTTP 통신이 가능합니다.(Adlib은 기본적으로 HTTP 통신을 사용합니다)

단계4. AdlibManager 선언

  • AdlibManager 생성 및 초기화 이후 미디에이션 관련 설정을 진행
  • Activity Life Cycle에 맞게 AdlibManager 호출
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    // adlibr.com 에서 발급받은 api 키를 입력합니다.
    // ADLIB - API - KEY 설정
    // 각 애드립 액티비티에 애드립 앱 키값을 필수로 넣어주어야 합니다.
    adlibManager = new AdlibManager(AdlibTestProjectConstants.ADLIB_API_KEY);
    adlibManager.onCreate(this);
    // 테스트 광고 노출로, 상용일 경우 꼭 제거해야 합니다.
    adlibManager.setAdlibTestMode(AdlibTestProjectConstants.ADLIB_TEST_MODE);

    // 미디에이션 스케쥴 관련 설정
    bindPlatform();

    ...
}

protected void onResume() {
    adlibManager.onResume(this);
    super.onResume();
}

protected void onPause() {
    adlibManager.onPause(this);
    super.onPause();
}

protected void onDestroy() {
    adlibManager.onDestroy(this);
    super.onDestroy();
}

단계5. 광고 스케쥴 관련 정보

private void bindPlatform() {
    // 광고 스케줄링 설정 - 전면, 띠 배너 동일
    // AdlibManager 생성 및 onCreate() 이후
    // 광고 요청 이전에 해당 스케쥴 관련 타 플랫폼 정보 등록
    // 첫번 째 AdlibManager 생성 시에 호출
    // 광고 subview 의 패키지 경로를 설정 (실제로 작성된 패키지 경로로 변경)

    // 쓰지 않을 광고 플랫폼은 삭제해주세요.
    AdlibConfig.getInstance().bindPlatform("ADMIXER", "test.adlib.project.ads.SubAdlibAdViewAdmixer");
    AdlibConfig.getInstance().bindPlatform("ADAM", "test.adlib.project.ads.SubAdlibAdViewAdam");
    AdlibConfig.getInstance().bindPlatform("ADMOB", "test.adlib.project.ads.SubAdlibAdViewAdmob");
    AdlibConfig.getInstance().bindPlatform("AMAZON", "test.adlib.project.ads.SubAdlibAdViewAmazon");
    AdlibConfig.getInstance().bindPlatform("CAULY", "test.adlib.project.ads.SubAdlibAdViewCauly");
    AdlibConfig.getInstance().bindPlatform("FACEBOOK", "test.adlib.project.ads.SubAdlibAdViewFacebook");
    AdlibConfig.getInstance().bindPlatform("INMOBI", "test.adlib.project.ads.SubAdlibAdViewInmobi");
    AdlibConfig.getInstance().bindPlatform("MEZZO", "test.adlib.project.ads.SubAdlibAdViewMezzo");
    AdlibConfig.getInstance().bindPlatform("MMEDIA", "test.adlib.project.ads.SubAdlibAdViewMMedia");
    AdlibConfig.getInstance().bindPlatform("MOBFOX", "test.adlib.project.ads.SubAdlibAdViewMobfox");
    AdlibConfig.getInstance().bindPlatform("TAD", "test.adlib.project.ads.SubAdlibAdViewTAD");
    AdlibConfig.getInstance().bindPlatform("TNK", "test.adlib.project.ads.SubAdlibAdViewTNK");
}

띠 배너 연동

  • 애드립 기본 띠배너
// 각 애드립 액티비티에 애드립 앱 키값을 필수로 넣어주어야 합니다.
adlibManager = new AdlibManager(AdlibTestProjectConstants.ADLIB_API_KEY);
adlibManager.onCreate(this);
// 테스트 광고 노출로, 상용일 경우 꼭 제거해야 합니다.
adlibManager.setAdlibTestMode(AdlibTestProjectConstants.ADLIB_TEST_MODE);
// 배너 스케쥴에 등록된 광고 모두 광고 요청 실패 시 대기 시간 설정(단위:초, 기본:10초, 최소:1초)
// adlibManager.setBannerFailDelayTime(10);

// 이벤트 핸들러 등록
adlibManager.setAdsHandler(new Handler() {
    public void handleMessage(Message message) {
        try {
            switch (message.what) {
                case AdlibManager.DID_SUCCEED:
                    Log.d("ADLIBr", "[Banner] onReceiveAd " + (String) message.obj);
                    break;
                case AdlibManager.DID_ERROR:
                    Log.d("ADLIBr", "[Banner] onFailedToReceiveAd " + (String) message.obj);
                    break;
                case AdlibManager.BANNER_FAILED:
                    Log.d("ADLIBr", "[Banner] All Failed.");
                    break;
            }
        } catch (Exception e) {

        }
    }
});

adlibManager.setAdsContainer(R.id.ads);

하프 배너 연동

  • 애드립 기본 하프배너
// 각 애드립 액티비티에 애드립 앱 키값을 필수로 넣어주어야 합니다.
adlibManager = new AdlibManager(AdlibTestProjectConstants.ADLIB_API_KEY);
adlibManager.onCreate(this);
adlibManager.setBannerSize(SubAdlibAdViewCore.SIZE_HALF);
// 테스트 광고 노출로, 상용일 경우 꼭 제거해야 합니다.
adlibManager.setAdlibTestMode(AdlibTestProjectConstants.ADLIB_TEST_MODE);
// 배너 스케쥴에 등록된 광고 모두 광고 요청 실패 시 대기 시간 설정(단위:초, 기본:10초, 최소:1초)
// adlibManager.setBannerFailDelayTime(10);

// 이벤트 핸들러 등록
adlibManager.setAdsHandler(new Handler() {
    public void handleMessage(Message message) {
        try {
            switch (message.what) {
                case AdlibManager.DID_SUCCEED:
                    Log.d("ADLIBr", "[Half] onReceiveAd " + (String) message.obj);
                    break;
                case AdlibManager.DID_ERROR:
                    Log.d("ADLIBr", "[Half] onFailedToReceiveAd " + (String) message.obj);
                    break;
                case AdlibManager.BANNER_FAILED:
                    Log.d("ADLIBr", "[Half] All Failed.");
                    break;
            }
        } catch (Exception e) {

        }
    }
});

adlibManager.setAdsContainer(R.id.ads);

전면 배너 연동

  • 애드립 기본 전면 배너
// 각 애드립 액티비티에 애드립 앱 키값을 필수로 넣어주어야 합니다.
adlibManager = new AdlibManager(AdlibTestProjectConstants.ADLIB_API_KEY);
adlibManager.onCreate(this);
// 테스트 광고 노출로, 상용일 경우 꼭 제거해야 합니다.
adlibManager.setAdlibTestMode(AdlibTestProjectConstants.ADLIB_TEST_MODE);

// 전면광고를 호출합니다. (미디에이션 전면배너 요청)
//adlibManager.loadFullInterstitialAd(this);

// optional : 전면광고의 수신 성공, 실패 이벤트 처리가 필요한 경우엔 handler를 이용하실 수 있습니다. (미디에이션 전면배너 요청)
adlibManager.loadFullInterstitialAd(this, new Handler() {
    public void handleMessage(Message message) {
        try {
            switch (message.what) {
                case AdlibManager.DID_SUCCEED:
                    Log.d("ADLIBr", "[Interstitial] onReceiveAd " + (String) message.obj);
                    break;
                // 전면배너 스케줄링 사용시, 각각의 플랫폼의 수신 실패 이벤트를 받습니다.
                case AdlibManager.DID_ERROR:
                    Log.d("ADLIBr", "[Interstitial] onFailedToReceiveAd " + (String) message.obj);
                    break;
                // 전면배너 스케줄로 설정되어있는 모든 플랫폼의 수신이 실패했을 경우 이벤트를 받습니다.
                case AdlibManager.INTERSTITIAL_FAILED:
                    Toast.makeText(AdlibIntersMediationActivity.this, "광고수신 실패 :)", Toast.LENGTH_SHORT).show();
                    Log.d("ADLIBr", "[Interstitial] All Failed.");
                    break;
                case AdlibManager.INTERSTITIAL_CLOSED:
                    Log.d("ADLIBr", "[Interstitial] onClosedAd " + (String) message.obj);
                    break;
            }
        } catch (Exception e) {
        }
    }
});

다이얼로그 광고

  • 애드립에서 제공되는 다이얼로그 형태의 광고
    • Activity에서 requestAdDialog() 매서드를 통해 광고를 요청합니다.
    • 이후 광고 노출이 필요한 시점에 showAdDialog() 메서드를 통해 dialog를 이용하여 광고를 노출할 수 있습니다.
    • AdlibDialogAdListener() 로 버튼 액션에 대한 기능을 추가할 수 있습니다.
    • 자세한 내용은 샘플 프로젝트 AdlibTestProjectActivity.java 파일을 참고해주세요.
    • 샘플 프로젝트에서는 종료 대화상자 광고를 예시로 구현하였습니다.
    • 종료 dialog 광고는 세로 화면일 경우에만 적용됩니다.

단계1. 광고 요청

// 다이얼로그 광고 요청
adlibManager.requestAdDialog(new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case AdlibManager.DID_SUCCEED:
                break;

            case AdlibManager.DID_ERROR:
                break;
        }
    }
});

단계2. 다이얼로그 노출

// 다이얼로그 광고 사용 가능 여부 확인
// 광고가 없는 경우 타 플랫폼이나 매체 내부 동작 처리가 필요한 경우 사용가능한 함수
// adlibManager.isAvailableAdDialog();

// 종료 대화상자 광고를 노출하기 위해서 호출합니다.
adlibManager.showAdDialog("취소", "확인", "종료하시겠습니까?");

주의 사항

  • Proguard를 적용하는 경우 proguard configuration 파일 수정이 필요합니다.

자세한 구현 내용은 샘플 프로젝트의 proguard.cfg 파일 또는 proguard-rules.pro 참고해 주세요.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.