Mediation 개발 가이드 (iOS)

1. ADLIB Mediation(수익 최적화) 개요

실제 프로젝트환경에 SDK 적용을 위한 문서입니다.
SDK 다운 및 API 키 발급은 애드립 홈페이지를 통해 진행해주시기 바랍니다.
https://mkt.adlibr.com/adn/dashboard.jsp

애드립을 통해 사용할 플랫폼은 프로젝트에서 선택적으로 포함하여 최종 바이너리 크기를 줄일 수 있습니다.
실제 테스트 프로젝트를 컴파일 하기 위하여 각 플랫폼 사이트에서 발급 받은 APP-ID 및 각 OS에 맞는 최신 SDK가 별도로 필요합니다.

기본적으로 테스트 프로젝트는 각 플랫폼의 SDK 파일만 새로 링크하면 동작하도록 제작되었으며,
실제 플랫폼의 SDK 작동방식이 변하지 않는 한 SubAdView 구현 파일의 내용을 수정할 필요는 없습니다.

개발 권장사항
  • Xcode 7.0 이상
  • Base SDK 9.0 이상
  • iOS Deployment Target 6.1 이상

2. 컴파일을 위한 준비

xcode 7.0 이상 iOS 9 빌드

  • 앱과 웹 서비스 간 연결 보안을 강화하는 ATS(App Transport Security) 기능 활성화가 기본으로 설정 됩니다.
  • 애드립에서 사용하는 HTTP 연결 요청이 강제 차단되어 광고가 노출되지 않을 수 있으니 하단 내용을 어플리케이션 info.plist 파일에 적용하여 사용 부탁드립니다.


» 단계1

애드립 SDK를 사용하기 위해 필요한 프레임워크를 프로젝트에 추가합니다.

하위 버전 xcode 사용시 다음 프레임워크도 추가합니다.

- Foundation.framework

- UIKit.framework

- AVFoundation.framework

- QuartzCore.framework

- AdSupport.framework

- CoreTelephony.framework

» 단계2

SDK 4.1.0.0 버전 이상을 사용하시는 경우 프로젝트에 애드립 SDK에서 사용하는 리소스 파일을 추가합니다.


- Adlib.bundle : 애드립에서 사용하는 버튼 이미지 파일이 포함되어있습니다.




프로젝트 Build Phases - Copy Bundle Reources 항목에 아래와 같이

리소스 파일들이 정상적으로 추가되었는지 확인합니다.

» 단계3

프로젝트 Build Settings 탭에 하단 이미지처럼 Linker Flag를 추가합니다.

-ObjC (대소문자 구분 입력)

» 단계4

사용할 광고 플랫폼의 SDK 파일을 하단 이미지의 위치에 추가합니다.

» 단계5

프로젝트 하단 이미지 위치에 사용할 광고 플랫폼의 SubAdlibView 파일들을 추가합니다.
라이브러리 추가와 마찬가지로 실제 사용할 클래스만 선택 포함하여 최종 파일의 크기를 줄일 수 있습니다.

3. 실제 프로젝트 연동

3-1. 애드립 SDK 버전 확인

  • 연동된 SDK 버전을 확인합니다.
    #import "AppDelegate.h"
    #import <Adlib/ADLibSDK.h>

    @implementation AppDelegate

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

          NSLog(@"SDK version = %@", [ADLibSDK sdkVersion]);

          return YES;
    }

    @end
    

3-2. 띠배너 연동

자세한 구현 사항은 아래의 링크에서 확인하세요.
https://github.com/nhnent/adlib.ios_media_app/blob/master/adlibrTestUniversal/adlibrSample_New/README.md

3-2-1) 뷰 컨트롤러에 초기화


  • 애드립 미디에이션 광고뷰를 올릴 컨테이너 뷰를 생성하여 해당 UIViewController view의 특정 위치에 지정합니다. (해당 과정은 코딩 혹은 Nib파일처리 모두 가능합니다.)

      #import "MediationBannerViewController.h"
      #import <Adlib/ADLibBanner.h>
      #import "ALAdapterAdmob.h"

      @interface MediationBannerViewController () <ALAdBannerViewDelegate>

      @property (nonatomic, strong) ALAdBannerView *bannerView;

      @end

      @implementation MediationBannerViewController

      - (void)viewDidLoad
      {
           [super viewDidLoad];

           [ALMediation registerPlatform:ALMEDIATION_PLATFORM_ADMOB withClass:[ALAdapterAdmob class]];
           
           //1. 광고 컨테이너뷰 생성 및 뷰에서의 위치 설정
           [self loadBannerContainerView];
      }

      - (void)loadBannerContainerView
      {
            if (_bannerView == nil){
        
                //배너뷰를 생성하고 초기화 설정을 합니다.
                _bannerView = [[ALAdBannerView alloc] initWithFrame:_bannerContainerView.bounds];
        
                //테스트 모드를 설정할 수 있습니다.
                _bannerView.isTestMode = YES;
        
                //광고 호출 완료 후 설정된 시간 이후 자동으로 다음 광고호출 갱신여부를 설정합니다.
                //화면 전환시 에만 최초 1회 광고를 호출하려면 NO를 설정합니다.
                //YES로 설정된 경우 화면에서 유지될 경우 일정 시간 이후 다음 광고를 자동으로 내부에서 호출하여 갱신합니다.
                _bannerView.repeatLoop = NO;
            }
    
            if (_bannerView.superview == nil) {
                [_bannerContainerView addSubview:_bannerView];
            }
      }

      @end
      

3-2-2) 광고뷰 호출 시작 / 광고뷰 호출 중단

  • ViewController에서 광고를 호출 및 호출 중단 처리를 처리합니다.
      @implementation MediationBannerViewController

      - (void)viewWillAppear:(BOOL)animated
      {
            [super viewWillAppear:animated];

            [_bannerView setKey:ADMOB_BAND_ID forPlatform:ALMEDIATION_PLATFORM_ADMOB];

            /**
             *  배너 광고를 요청한다.
             *  요청한 애드립 키값에 해당하는 띠배너 광고 플랫폼들에 대해서 순차적으로 광고를 요청하고 성공/실패 시 콜백을 호출한다.
             *
             *  @param key : 애드립 앱키
             *  @param rootViewController : 광고를 호출하는 뷰컨트롤러
             *  @param delegate : 광고 요청 및 수신 상태에 대한 델리게이트
             */
            [_bannerView startAdViewWithKey:ADLIB_APP_KEY
                         rootViewController:self
                                 adDelegate:self];
      }

      - (void)viewWillDisappear:(BOOL)animated 
      {
           [super viewWillDisappear:animated];

           [_bannerView stopAdView];
      }

      @end
      

3-2-3) 광고 뷰 회전시 영역 조정

  • 해당 ViewController의 view layout 변경 시 bannerContainerView의 위치 및 크기를 재 조정합니다. (AutoLayout을 사용하거나 StoryBoard에서 처리로 대체 할 수 있습니다.)
  • 광고뷰의 위치는 bannerContainerView의 위치를 조정하여 변경 할 수 있으며 adConatinerView의 크기를 변경에 대응하여 조정됩니다. 최소 가로 320, 세로 50 이상을 권장합니다. 가로 너비의 경우 플랫폼에서 지원 할 경우 320 이상의 크기로 지정되어도 크기가 반영되어 광고가 노출됩니다.
      @implementation MediationBannerViewController

      - (void)viewDidLayoutSubviews
      {
          [super viewDidLayoutSubviews];

          if (_bannerView) {
                _bannerView.frame = _bannerContainerView.bounds;
          }
      }

      @end
      

3-2-4) 전면광고 요청

  • 전면광고를 노출하고 싶은 시점에 하단 코드를 호출합니다.

      @implementation MediationBannerViewController

      // 미디에이션에 등록된 플랫폼들에 대해 전면광고 요청을 수행합니다.
      // 설정된 스케쥴 순서에 따라 요청되며 실제 전면 광고 호출은
      // ADLibAdapter Class에서 처리됩니다.
      - (IBAction)loadInterstitialAd:(UIButton *)button
      {
          ALInterstitialAd *interstitialAd = [[ALInterstitialAd alloc] initWithRootViewController:self];
          self.interstitialAd = interstitialAd;
    
          interstitialAd.isTestMode = YES;

          [_interstitialAd setKey:ADMOB_INTERSTITIAL_ID forPlatform:ALMEDIATION_PLATFORM_ADMOB];
          [_interstitialAd requestAdWithKey:ADLIB_APP_KEY adDelegate:self];
      }

      @end
      

3-2-5) 플랫폼 광고 처리

미디에이션 배너에 사용되는 플랫폼 광고 뷰 객체.

해당 플랫폼 객체에서 띠 배너와 전면광고에 대한 처리를 수행합니다.




  • 사진의 해당 위치에 미디에이션 배너를 사용할 플랫폼 광고 관련 소스 및 라이브러리 파일을 추가합니다.
  • ADLibAdapter 폴더 안에 각 광고뷰에 대한 구현 소스가 들어 있으며, 필요에 의해 추가된 구현으로 더 다양한 기능 구현이 가능합니다. 해당 객체는 ALMediation 클래스와 띠배너 / 전면배너 구현 프로토콜을 상속 받아 구현됩니다. (필수 사항)

Google AdMob 연동 예제 - confirmed compatible with admob SDK 7.31.0

자세한 구현 사항은 아래의 링크에서 확인하세요.
https://github.com/nhnent/adlib.ios_media_app/blob/master/adlibrTestUniversal/adlibrSample_New/ADLibSample/ADLibAdapter/ALAdapterAdmob.m


4. 띠배너 미디에이션 설정

개발자 사이트에서 사용하실 광고 플랫폼의 띠 배너 스케쥴을 설정 할 수 있습니다.

-사이트 링크: https://mkt.adlibr.com/ssp/dashboard.jsp


5. 전면 광고 미디에이션 설정

- 전면 광고 미디에이션 설정


- 대쉬보드에서 전면배너 스케쥴링을 설정할 수 있습니다.

- 애드립 전면광고 노출 비중을 0~100 사이로 설정 할 수 있습니다.

- 애드립 전면광고 수신에 실패하면 설정된 플랫폼 순서대로 다음 전면광고를 호출합니다.

자주묻는 질문 & TIP

Q. 각 나라에 맞게 광고 스케쥴을 달리 적용하고 싶습니다. (지역 타게팅)
A. 애드립의 앱 스케쥴 설정 화면에서, 타게팅을 원하는 나라를 추가하여 손쉽게 노출전략을 설정할 수 있습니다.

정리

애드립 연동이 마무리되었습니다.

## 실제 프로젝트에 애드립을 연동하기 위해 ##

  • 각 플랫폼의 ID 발급 및 SDK 다운로드
  • SDK 프로젝트에 라이브러리 추가
  • 배너 연동 코드 적용

관련된 추가적인 개발 관련한 문의사항과 고급설정 등 관련 내용은 http://adlibr.com 의 개발자 지원 메뉴를 통해 공유되고 있습니다.