iOS SDK Guide

19 분 소요

Subeen Son

현재 버젼은 200 입니다.
- 200 버젼은 iOS 11 이상 지원합니다.

Sample Project

Objective-c Sample Project

Swift Sample Project

SDK 광고의 구성

구분 샘플 설명
띠 배너 일반적인 바(Bar) 형태의 배너입니다.
대부분 하단에 위치하지만, 퍼블리셔의 조정에 따라 상단 또는 중간에도 게재할 수 있습니다.
전면 배너 전면에 광고가 게시되며, 퍼블리셔의 조정에 따라 노출 영역을 조정할 수 있습니다.
동영상 동영상 콘텐츠 재생 전 Instream 형태 또는 지면에 포함되어 Outstream 형태로 재생되는 동영상 광고입니다.
전면확장 전면에 광고가 게시되며, 남은 영역에는 좌측상단 1pixel 기준의 색상이 채워집니다.
전면동영상 전면에 광고가 게시되며, 배너의 하단에는 동영상광고가 함께 재생됩니다.
네이티브 피드 다양한 요소(애셋)들로 이루어진 광고입니다.
전면에 광고가 게시되며, 동영상과 이미지가 포함되어 있습니다.
퍼블리셔가 각 요소(애셋)들로 광고 형태를 조합해서 게시할 수 있습니다.(별도 문의)
네이티브 피드 배너 다양한 요소(애셋)들로 이루어진 광고입니다.
바(Bar) 형태로 광고가 게시되며, 동영상과 이미지가 포함되어 있습니다.
퍼블리셔가 각 요소(애셋)들로 광고 형태를 조합해서 게시할 수 있습니다.(별도 문의)

지원 상품(사이즈)

상품 구분 사이즈
띠배너 300x50 ㅣ 320x50 ㅣ 320x100 ㅣ 640x240 ㅣ 640x100 ㅣ 728x90
전면배너 640x960 ㅣ 320X480 ㅣ 480x320 ㅣ 1024x768 ㅣ 750x1200 ㅣ 768x1024
종료배너 640x960 ㅣ 750x1200
정사각형 및 직사각형 200x200 ㅣ 240x400 ㅣ 240x240 ㅣ 250x250 ㅣ 250x360 ㅣ 300x250 ㅣ 336x280 ㅣ 150x150 ㅣ 580x400
스카이스크래퍼 120x600 ㅣ 160x600 ㅣ 300x600 ㅣ 300x1050
리더보드 468x60 ㅣ 728x90 ㅣ 930x180 ㅣ 970x90 ㅣ 970x250 ㅣ 980x120
네이티브 피드 640x960
네이티브 피드 배너 320x100 ㅣ 320x50

SDK Library 구성

헤더 파일

헤더 파일명 설명
ManAdDefine.h MAN 2.0 / TARGETPICK 광고 정의 헤더
ManBanner.h 배너, 전면 광고 헤더
ManVideo.h 동영상 광고 헤더
ManViewability.h Viewability 광고 헤더

라이브러리 파일

라이브러리 파일명 설명
libManplus_v200.a TARGETPICK 광고 라이브러리

TARGETPICK SDK Sample App에는 광고의 상태(success, click, impression 등)에 대한 Callback을 Toast 메세지로 보여주기 위해 UIView+Toast을 포함하고 있습니다. 만약 개발중인 프로젝트에서 이미 UIView+Toast를 사용하시거나 불필요하시다면 포함하지 않으셔도 됩니다.

샘플 구성 (Objective-c)

SDK 샘플 프로젝트가 포함 되어 있습니다.
라이브러리 경로 : Manplus_Sample/ManplusLibrary/…

샘플 구성 (Swift)

SDK 샘플 프로젝트가 포함 되어 있습니다.
라이브러리 경로 : Manplus_Sample/ManplusLibrary/…

SDK를 사용하기 위한 프레임워크

Framework 명 설명
MediaPlayer.framework 동영상 광고를 위한 framework
CoreLocation.framework 위치정보를 얻기 위한 framework
SystemConfiguration.framework OS 정보를 얻기 위한 framework
CoreTelephony.framework(‘Required’를 ‘Optional’로 변경) 단말기 정보를 얻기 위한 framework
AdSupport.framework (Optional 추가)(‘Required’를 ‘Optional’로 변경) IDFA 정보를 얻기 위한 framework

프로젝트에 추가된 Framework, 라이브러리 파일, 리소스 파일

SDK 연동시 주의사항

IOS 9 ATS(App Transport Security) 기능 사용 관련
IOS9 이상에서는 ATS(App Transport Security) 기능이 제공됩니다.
ATS기능 활성화 시, HTTP 방식이 제한되므로, 정상적인 TARGETPICK 광고가 노출되지 않습니다.

info.plist 파일에 아래의 항목을 추가 적용하여 사용 바랍니다.
앱의 info.plist파일에 마우스 오른쪽 버튼을 눌러 ‘Open As > Source Code’로 해당파일 편집모드로 들어간 후, 아래 코드를 삽입합니다.

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitararyLoads</key>
  <true/>
</dict>

Swift 환경설정

Bridge 만들기 (Swift)

TARGETPICK v200 SDK는 Objective-c로 제작되어 Swift 환경이시라면 Bridge Header를 만들어주시기 바랍니다.
아래 그림과 같이 Build Setting - Swift Compiler-General - Objective-c Bridging Header에 추가하신 Header file의 경로를 추가해주십시오.

Linker Flag 추가 (Swift)

TARGETPICK v200 SDK는 Objective-c로 제작되어 Swift 환경이시라면 Linker Flag를 추가해주시기 바랍니다.
해당 값은 링커가 Objective-C 클래스나 카테고리로 정의된 라이브러리에 속한 객체 파일들을 모두 적재하게 해주는 플래그입니다.
아래 그림과 같이 Build Setting - Other Linker Flags에 -ObjC를 추가해주십시오.

SKAdNetwork ID(iOS Only)

SKAdNetwork 란

SKAdNetwork 란
SKAdNetwork(SKAN)는 Apple에서 제공하는 개인 정보 보호 방식의 어트리뷰션 프레임워크입니다.
이는 사용자의 개인정보를 침해하지 않고도 앱 인스톨(전환), 캠페인의 전환율을 측정할 수 있게합니다.
SKAdNetwork와 관련해서 보다 자세한 내용은 Apple의 공식 문서를 참고해주세요.
([참고] https://developer.apple.com/documentation/storekit/skadnetwork)

퍼블리셔의 SKAdNetwork ID 적용방법

MezzoMedia와 제휴된 매체는 Mezzomedia를 포함, 연동된 Adnetwork 업체의 SKAdNetwork ID를 아래와 같이 Info.plist에 추가해야 합니다.

  1. Xcode project에서 Info.plist 파일을 불러옵니다.
  2. Root directory에서 property 키를 선택하고, 오른쪽 +를 클릭하여 새로운 property 키를 만듭니다.
  3. SKAdNetworkItems로 키를 입력합니다.
  4. Array 타입을 선택합니다.
  5. Array에 Dictionary를 추가합니다.
  6. Dictionary에 각 SKAdNetwork 항목을 추가합니다.
  7. 각 항목의 키는 SKAdNetworkIdentifier이며, 값은 개별 광고네트워크의 SKAdNetwork ID입니다.

    해당 필드에 대한 자세한 항목은 Apple의 공식문서를 참고해주세요.
    ([참고] https://developer.apple.com/documentation/storekit/skadnetwork/configuring_the_participating_apps)

SKAdNetwork ID 목록(마지막 업데이트: 2021/04/12)

현재 Mezzomedia와 연동된 AdNetwork의 ID 목록입니다.

	<key>SKAdNetworkItems</key>
	<array>
		<dict>
			<key>SKAdNetworkIdentifier</key>
			<string>feyaarzu9v.skadnetwork</string>
		</dict>
        <dict>
            <key>SKAdNetworkIdentifier</key>
            <string>xxxxxxxxxx.skadnetwork</string>
        </dict>
	</array>

띠배너 삽입

띠배너

  • 띠형태의 배너 광고물로 정의한 위치에 노출됩니다.
  • TARGETPICK 광고 정책으로 정해져 있는 320x50, 320x100 사이즈입니다.

아래와 같은 띠 또는 전면 형태의 배너 노출

띠배너 연동 방식

띠 배너광고를 구현할 viewController 헤더에 ManBanner.h 임포트 및 <ManBannerDelegate> 적용, ManBanner 타입의 객체를 선언 해주시기 바랍니다. (아래의 Sample code는 Objective-c 기준)

ManBanner *manBanner;

ManBanner 광고 객체 설정 – (필수 세팅)

manBanner = [[ManBanner alloc] initWithFrame:CGRectMake(0, 0, 414, 50)];

// SDK 정보
[manBanner infoSDK];

// 발급받은 publisher id와 media id, section id 설정
[manBanner publisherID:@"100" mediaID:@"200" sectionID:@"300" x:0 y:0 width:414 height:50 type:@"0"];

// app_id, app_name, stroe_url 설정
[manBanner appID:@"ApplicationID" appName:@"ApplicationName" storeURL:@"AppStoreURL"];

// 광고 미처리 (true : sdk에서 광고 미처리상태에서 데이터만 내려줌. false : sdk에서 광고 처리)
[manBanner apiData:false isAsset:false];

// u_age_level (0: 만13세 미만, 1: 만13세 이상, -1: 알수없음)<필수 Parameter>
[manBanner userAgeLevel:@"1"];

// Keyword 타게팅을 위한 함수파라미터 (Optional)
[manBanner keywordParam:@"KeywordTargeting"];

// 추가적인 파라미터 (Optional)
[manBanner externalParam:@"BannerAdditionalParameters"];

// viewController 객체 넘겨준다.
manBanner.bannerDelegate = self;

배너광고 옵션 설정 – (선택 세팅)

// 유저 정보 세팅
manBanner.gender = @"1";                                // 성별 (남성:@"1", 여성:@"2")
manBanner.age = @"15"; 	                                // 나이
manBanner.userId = @"mezzomedia";                       // 유저 ID
manBanner.userEmail = @"mezzomedia@mezzomedia.co.kr";   // 유저 E-Mail 주소
manBanner.userPositionAgree = @"1";                     // 위치정보제공 동의여부 (동의:@"1", 미동의:@"0")

띠배너 광고 시작

// 띠배너 광고 시작.
[manBanner startBanner];

// 띠배너뷰 적용
[self.view addSubview:manBanner];

이벤트 구현

bannerDelegate 발생에 따른 이벤트 구현


- (void) didFailReceiveAd:(ManBanner*)adBanner errorType:(NSInteger)errorType {
  // 배너 광고 수신 실패
  // errorType은 광고 에러 코드 및 Callback 메세지 표 참조

      switch (errorType) {

        case NewManAdSuccess:
            log = @"성공";
            NSLog(@"광고 타입[유료(guarantee) or 무료(house)] : %@", [manBanner getAdType]);
            break;

        case NewManAdClick:
            log = @"광고 클릭";
            break;

            ...
      }
}

Class 설명

Function 설명
함수 설명
[manBanner publisherID:@”100” mediaID:@”200” sectionID:@”300” x:0 y:0 width:414 height:50 type:@”0”] 발급받은 publisherID, mediaID, sectionID로 배너광고 초기화
- publisherID : 발급받은 publisherID
- mediaID : 발급받은 mediaID
- sectionID : 발급받은 sectionID
- x : 배너 시작 x 좌표 위치
- y : 배너 시작 y 좌표 위치
- width : 배너 영역 가로 넓이
- height : 배너 영역 세로 넓이
- type : 띠배너 형태는 “0” 전면배너 형태 “1”
[manBanner appID:@”ApplicationID” appName:@”ApplicationName” storeURL:@”AppStoreURL”]; Application ID, Application Name, App Store URL을 넘겨줌
[manBanner apiData:true isAsset:true]; (1) 광고 데이터만 전달하여 view단은 직접 구현 (true : sdk에서 광고 미처리상태에서 데이터만 내려줌. false : sdk에서 광고 처리)
[manBanner getNativeResponse]; 광고 데이터를 String 형태로 Return 해주는 함수
(1) 옵션을 true로 설정한 후, Success Callback 수신시 호출
[manBanner userAgeLevel:@”1”]; User의 나이 레벨 파라미터(필수) (만13세 미만 : @”0”, 만13세 이상 : @”1”, 알수없음 : @”-1”)
[manBanner keywordParam:@”KeywordTargeting”]; 키워드값을 전달
구분자는 ^로 사용
keyword값은 인코딩 (Optional)
[manBanner externalParam:@”VideoAdditionalParameters”]; 추가적인 파라미터(Optional)
(추가적인 파라미터 사용 시 가이드 받으셔야 합니다.)
[manBanner infoSDK]; 호출시, SDK 정보를 Console 창에 보여줍니다.(Version, Release Date, Release Time, Description)
[manBanner getAdType] 광고 유료(guarantee)/무료(house) - String type으로 Return
[manBanner startBanner]; 배너광고를 요청한다. (배너 광고를 강제로 교체 할 경우에도 호출)
[manBanner stopBanner]; 배너광고를 종료한다.(광고 영역 제거)

띠 배너 영역에 전면배너를 노출할 시, publisher, media, section을 전면배너 지면코드로 설정.
영역의 크기 조정 및 type:@”1” 로 설정

ManBanner 연동 변수
변수 설명
id<ManBannerDelegate>delegate 광고뷰를 붙이는 ViewController 포인터 전달
bannerDelegate.delegate = self;
NSString *gender 광고를 사용하는 유저의 성별 정보
남성 : @”1”, 여성 : @”2”
manAdView.gender = @”1”
NSString *age 광고를 사용하는 유저의 나이 정보
manAdView.age = @”20”
NSString *userId 광고를 사용하는 유저의 아이디 정보
manAdView.userId = @”mezzo_user”
NSString *userEmail 광고를 사용하는 유저의 이메일 정보
manAdView.userEmail = @”mezzo_user@mezzomedia.co.kr”
NSString *userPositionAgree 광고를 사용하는 유저의 위치정보 제공 동의 여부
위치정보 동의 : @”1”, 위치정보 미동의 : @”0”
manAdView.userPositionAgree = @”1”
ManBanner Delegate
함수 설명
(void)didFailReceiveAd:(ManBanner*)adBanner errorType:(NSInteger)errorType 배너 광고 수신 실패 통보
errorType : 광고 실패의 원인인 에러 코드 (광고 에러코드 표 참고)

전면 광고 삽입

전면배너

  • 전면 형태의 배너 광고물이 노출됩니다.
  • 전면 배너의 종류로는 전면 확장, 전면 팝업(배경 투명, 배경 회색), 전면 동영상이 있습니다.

아래와 같은 전면 형태의 배너 노출

전면 광고 연동

ManBanner.h를 이용하여 띠배너와 전면배너 모두 사용가능합니다.
전면광고를 구현할 viewController 헤더에 ManBanner.h 임포트 및 <ManInterstitialDelegate> 적용, ManInterstitial 타입의 전면광고 객체를 선언 합니다. (아래의 Sample code는 Objective-c 기준)

ManBanner *manInterstitial;

ManInterstitial 광고 객체 설정 – (필수 세팅)

//전면배너의 경우 반드시 시작위치는 (0,0) 이고, 배너 크기의 경우 디바이스의 사이즈 입니다.
manInterstitial = [[ManBanner alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

// SDK 정보
[manInterstitial infoSDK];

// 발급받은 publisher id와 media id, section id 설정
[manInterstitial publisherID:@"100" mediaID:@"200" sectionID:@"300" viewType:@"0"];

// app_id, app_name, stroe_url 설정
[manInterstitial appID:@"ApplicationID" appName:@"ApplicationName" storeURL:@"AppStoreURL"];

// 광고 미처리 (true : sdk에서 광고 미처리상태에서 데이터만 내려줌. false : sdk에서 광고 처리)
[manInterstitial apiData:false isAsset:false];

// u_age_level (0: 만13세 미만, 1: 만13세 이상, -1: 알수없음)<필수 Parameter>
[manInterstitial userAgeLevel:@"1"];

// Keyword 타게팅을 위한 함수파라미터 (Optional)
[manInterstitial keywordParam:@"KeywordTargeting"];

// 추가적인 파라미터 (Optional)
[manInterstitial externalParam:@"InterstitialAdditionalParameters"];

// viewController 객체 넘겨준다.
manInterstitial.interDelegate = self;

전면광고 옵션 설정 – (선택 세팅)

// 유저 정보 세팅
manInterstitial.gender = @"1";                       // 성별 (남성:@"1", 여성:@"2")
manInterstitial.age = @"15"; 	                                // 나이
manInterstitial.userId = @"mezzomedia";                       // 유저 ID
manInterstitial.userEmail = @"mezzomedia@mezzomedia.co.kr";   // 유저 E-Mail 주소
manInterstitial.userPositionAgree = @"1";                     // 위치정보제공 동의여부 (동의:@"1", 미동의:@"0")

전면광고 시작

// 전면광고 시작
[manInterstitial startInterstitial];

// 전면배너뷰 적용
[self.view addSubview:manInterstitial];

이벤트 구현

interDelegate 발생에 따른 이벤트 구현


- (void)didFailReceiveAd:(ManBanner*)adBanner errorType:(NSInteger)errorType {
  // 전면 배너 광고 수신 실패
  // errorType은 광고 에러 코드 및 Callback 메세지 표 참조

      switch (errorType) {

        case NewManAdSuccess:
            log = @"성공";
            NSLog(@"광고 타입[유료(guarantee) or 무료(house)] : %@", [manInterstitial getAdType]);
            break;

        case NewManAdClick:
            log = @"광고 클릭";
            break;

            ...
      }
}

Class 설명

Function 설명
함수 설명
[manInterstitial publisherID:@”100” mediaID:@”200” sectionID:@”300” viewType:@”0”]; 발급받은 publisherID, mediaID, sectionID로 배너광고 초기화
- publisherID : 발급받은 publisherID
- mediaID : 발급받은 mediaID
- sectionID : 발급받은 sectionID
- viewTypetype : 디바이스 전체를 덮는 형태 “0”, 팝업 형태(배경 white) “1”, 팝업형태(배경 회색) “2”
[manInterstitial appID:@”ApplicationID” appName:@”ApplicationName” storeURL:@”AppStoreURL”]; Application ID, Application Name, App Store URL을 넘겨줌
[manInterstitial apiData:true isAsset:true]; (1) 광고 데이터만 전달하여 view단은 직접 구현 (true : sdk에서 광고 미처리상태에서 데이터만 내려줌. false : sdk에서 광고 처리)
[manInterstitial getNativeResponse]; 광고 데이터를 String 형태로 Return 해주는 함수
(1) 옵션을 true로 설정한 후, Success Callback 수신시 호출
[manInterstitial userAgeLevel:@”1”]; User의 나이 레벨 파라미터(필수) (만13세 미만 : @”0”, 만13세 이상 : @”1”, 알수없음 : @”-1”)
[manInterstitial keywordParam:@”KeywordTargeting”]; 키워드값을 전달
구분자는 ^로 사용
keyword값은 인코딩 (Optional)
[manInterstitial externalParam:@”VideoAdditionalParameters”]; 추가적인 파라미터(Optional)
(추가적인 파라미터 사용 시 가이드 받으셔야 합니다.)
[manInterstitial infoSDK]; 호출시, SDK 정보를 Console 창에 보여줍니다.(Version, Release Date, Release Time, Description)
[manInterstitial getAdType] 광고 유료(guarantee)/무료(house) - String type으로 Return
[manInterstitial startBanner]; 배너광고를 요청한다. (배너 광고를 강제로 교체 할 경우에도 호출)
[manInterstitial stopBanner]; 배너광고를 종료한다.

전면배너는 세로 형태로 고정되어 노출됩니다.
전면동영상의 경우 디바이스 전체를 덮는 형태 “0”, 팝업 형태(배경 white) “1”, 팝업형태(배경 회색) “2” 모두 가능합니다.

ManInterstitial 연동 변수
변수 설명
id<ManInterstitialDelegate>delegate 광고뷰를 붙이는 ViewController 포인터 전달
interDelegate.delegate = self;
NSString *gender 광고를 사용하는 유저의 성별 정보
남성 : @”1”, 여성 : @”2”
manInterstitial.gender = @”1”
NSString *age 광고를 사용하는 유저의 나이 정보
manInterstitial.age = @”20”
NSString *userId 광고를 사용하는 유저의 아이디 정보
manInterstitial.userId = @”mezzo_user”
NSString *userEmail 광고를 사용하는 유저의 이메일 정보
manInterstitial.userEmail = @”mezzo_user@mezzomedia.co.kr”
NSString *userPositionAgree 광고를 사용하는 유저의 위치정보 제공 동의 여부
위치정보 동의 : @”1”, 위치정보 미동의 : @”0”
manInterstitial.userPositionAgree = @”1”
ManInterstitial Delegate
함수 설명
(void)didFailReceiveAd:(ManBanner*)adBanner errorType:(NSInteger)errorType 배너 광고 수신 실패 통보
errorType : 광고 실패의 원인인 에러 코드 (광고 에러코드 표 참고)

동영상 광고 삽입

동영상 광고

  • 영상 형태의 동영상 광고물이 노출됩니다.
  • 동영상 광고의 종류로는 가로 동영상, 세로 동영상, 정사각 동영상이 있습니다.

아래와 같은 영상 형태로 광고 노출

동영상 광고 연동

동영상광고를 구현할 viewController 헤더에 ManVideo.h 임포트 및 <ManVideoDelegate> 적용, ManVideo 타입의 동영상광고 객체를 선언 합니다. (아래의 Sample code는 Objective-c 기준)

ManVideo *manVideo;

ManVideo 광고 객체 설정 – (필수 세팅)
* app_id, app_name, stroe_url 설정 > 동영상 광고의 옵션 설정 > 발급받은 publisher id와 media id, section id, 동영상 영역 시작 위치 좌표(x, y), 동영상 영역의 크기(width, height) 설정 순으로 정의하시기 바랍니다.

// app_id, app_name, stroe_url 설정
[manVideo appID:appID appName:appName storeURL:storeURL];

// 동영상 광고의 옵션 설정
[manVideo autoplay:true autoReplay:true muted:true clickFull:true closeBtnShow:true soundBtnShow:true clickBtnShow:true skipBtnShow:true clickVideoArea:false viewability:true];

// 발급받은 publisher id와 media id, section id, 동영상 영역 시작 위치 좌표(x, y), 동영상 영역의 크기(width, height) 설정
[manVideo publisherID:publisherID mediaID:mediaID sectionID:sectionID x:i_x y:i_y width:i_width height:i_height];

// 광고 미처리 (true : sdk에서 광고 미처리상태에서 데이터만 내려줌. false : sdk에서 광고 처리)
[manVideo apiData:false isAsset:false];

// u_age_level (0: 만13세 미만, 1: 만13세 이상, -1: 알수없음)<필수 Parameter>
[manVideo userAgeLevel:@"1"];

// Keyword 타게팅을 위한 함수파라미터 (Optional)
[manVideo keywordParam:@"KeywordTargeting"];

// 추가적인 파라미터 (Optional)
[manVideo externalParam:@"VideoAdditionalParameters"];

// viewController 객체 넘겨준다.
manVideo.videoDelegate = self;

동영상광고 옵션 설정 – (선택 세팅)

// 유저 정보 세팅
manVideo.gender = @"1";                               // 성별 (남성:@"1", 여성:@"2")
manVideo.age = @"15"; 	                                // 나이
manVideo.userId = @"mezzomedia";                       // 유저 ID
manVideo.userEmail = @"mezzomedia@mezzomedia.co.kr";   // 유저 E-Mail 주소
manVideo.userPositionAgree = @"1";                     // 위치정보제공 동의여부 (동의:@"1", 미동의:@"0")

동영상광고 시작

// 동영상뷰 적용
[self.view addSubview:manVideo];

// 동영상광고 시작
[manVideo startVideo];

이벤트 구현

videoDelegate 발생에 따른 이벤트 구현


- (void)didFailReceiveAd:(ManVideo*)adVideo errorType:(NSInteger)errorType {
  // 동영상 광고 수신 실패
  // errorType은 광고 에러 코드 및 Callback 메세지 표 참조

      switch (errorType) {

        case NewManAdSuccess:
            log = @"성공";
            NSLog(@"광고 타입[유료(guarantee) or 무료(house)] : %@", [manVideo getAdType]);
            break;

        case NewManAdClick:
            log = @"광고 클릭";
            break;

            ...
      }
}

Class 설명

Function 설명
함수 설명
[manVideo publisherID:@”100” mediaID:@”200” sectionID:@”300” x:0 y:0 width:414 height:50 type:@”0”] 발급받은 publisherID, mediaID, sectionID로 동영상 광고 초기화
- publisherID : 발급받은 publisherID
- mediaID : 발급받은 mediaID
- sectionID : 발급받은 sectionID
- x : 동영상 영역 시작 x 좌표 위치
- y : 동영상 영역 시작 y 좌표 위치
- width : 동영상 영역 가로 넓이
- height : 동영상 영역 세로 넓이
[manVideo appID:@”ApplicationID” appName:@”ApplicationName” storeURL:@”AppStoreURL”]; Application ID, Application Name, App Store URL을 넘겨줌
[manVideo userAgeLevel:@”1”]; User의 나이 레벨 파라미터(필수) (만13세 미만 : @”0”, 만13세 이상 : @”1”, 알수없음 : @”-1”)
[manVideo keywordParam:@”KeywordTargeting”]; 키워드값을 전달
구분자는 ^로 사용
keyword값은 인코딩 (Optional)
[manVideo externalParam:@”VideoAdditionalParameters”]; 추가적인 파라미터(Optional)
(추가적인 파라미터 사용 시 가이드 받으셔야 합니다.)
[manVideo infoSDK]; 호출시, SDK 정보를 Console 창에 보여줍니다.(Version, Release Date, Release Time, Description)
[manVideo getAdType] 광고 유료(guarantee)/무료(house) - String type으로 Return
[manVideo startBanner]; 동영상광고를 요청한다. (동영상 광고를 강제로 교체 할 경우에도 호출)
ManVideo 옵션

[manVideo autoplay:true autoReplay:true muted:true clickFull:true closeBtnShow:true soundBtnShow:true clickBtnShow:true skipBtnShow:true clickVideoArea:false viewability:true];
위와 같은 형태로 적용

변수 설명
autoplay 동영상 자동 재생 (true : 자동 재생, false : 재생 버튼 클릭시 재생)
autoReplay 동영상 다시 재생 (true : 자동 다시 재생, false : 1회 재생후 종료)
muted 음소거 (true : 음소거, false : 사운드 on)
clickFull 영상 영역 전체를 클릭시 랜딩 (true : 전체 클릭시, false : 광고정보 더보기 버튼 클릭시)
viewability 화면에 영상의 20%가 보일때 재생 (true : 적용하여 재생, false : 미적용)
closeBtnShow 동영상 영역 닫기 버튼 노출 (true : 노출, false : 미노출)
soundBtnShow 사운드 ON / OFF 버튼 노출 (true : 노출, false : 미노출)
clickBtnShow 광고정보 더보기 버튼 노출 (true : 노출, false : 미노출)
skipBtnShow 광고 건너뛰기 버튼 노출 (true : 노출, false : 미노출)
clickVideoArea 동영상 종료시 영역 사라짐 (true : 사라짐, false : 영상만 종료후 영역 유지)

동영상광고의 경우 가로, 세로, 정사각 형태의 종류에 따라 영역을 지정해주셔야 합니다.

ManVideo 연동 변수
변수 설명
id<ManVideoDelegate>delegate 광고뷰를 붙이는 ViewController 포인터 전달
videoDelegate.delegate = self;
NSString *gender 광고를 사용하는 유저의 성별 정보
남성 : @”1”, 여성 : @”2”
manVideo.gender = @”1”
NSString *age 광고를 사용하는 유저의 나이 정보
manVideo.age = @”20”
NSString *userId 광고를 사용하는 유저의 아이디 정보
manVideo.userId = @”mezzo_user”
NSString *userEmail 광고를 사용하는 유저의 이메일 정보
manVideo.userEmail = @”mezzo_user@mezzomedia.co.kr”
NSString *userPositionAgree 광고를 사용하는 유저의 위치정보 제공 동의 여부
위치정보 동의 : @”1”, 위치정보 미동의 : @”0”
manVideo.userPositionAgree = @”1”
ManVideo Delegate
함수 설명
(void)didFailReceiveAd:(ManVideo*)adVideo errorType:(NSInteger)errorType 동영상 광고 수신 실패 통보
errorType : 광고 실패의 원인인 에러 코드 (광고 에러코드 표 참고)
ManVideo 디바이스 회전

(예시) 디바이스 회전시 비디오영역을 액정에 꽉 채우는 경우 ManVideoController.m에 Rotate시 액션을 다음 예시와 같이 정의해야합니다.


- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        NSLog(@"PORTRAIT");
        CGRect frame = manVideo.bounds;
        frame.origin.x = i_x;
        frame.origin.y = i_y;
        frame.size.width = i_width;
        frame.size.height = i_height;
        manVideo.bounds = frame;
        manVideo.frame = frame;
    }

    else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation==UIInterfaceOrientationLandscapeRight)
    {
        NSLog(@"LANDSCAPE");
        CGRect screen = [[UIScreen mainScreen] bounds];
        CGRect frame = manVideo.bounds;
        frame.origin.x = 0;
        frame.origin.y = 0;
        frame.size.width = screen.size.height;
        frame.size.height = screen.size.width;
        manVideo.bounds = frame;
        manVideo.frame = frame;
    }
}

광고 에러 코드 및 Callback 메세지

code 이름 설명
0 NewManAdSuccess 성공
201 NewManAdClick 광고 클릭
202 NewManAdClose 광고 닫기
301 NewManVideoAdStart 비디오 광고 시작
302 NewManVideoAdSkip 비디오 광고 Skip
303 NewManVideoAdImp 비디오 노출
304 NewManVideoAdFirstQ 비디오 1/4 재생
305 NewManVideoAdMidQ 비디오 1/2 재생
306 NewManVideoAdThirdQ 비디오 3/4 재생
309 NewManVideoAdComplete 비디오 광고 재생완료
310 NewManVideoAdEnded 비디오 광고 종료시
311 NewManVideoAdEndcardStart 비디오 엔드카드 시작
312 NewManVideoAdEndcardClick 비디오 엔드카드 클릭
313 NewManVideoAdEndcardClose 비디오 엔드카드 닫기
404 NewManAdNotError 광고 없음 (No Ads)
408 NewManAdTimeoutError Timeout
415 NewManAdParsingError 파싱에러
498 NewManAdDuplicateError 중복 호출 에러
499 NewManAdError Error
501 NewManBrowserError 지원하지 않는 브라우져 Error
-2001 NewManAdNotExistError 존재하지 않는 요청 에러
-3001 NewManAdIDError 광고 솔루션에서 발급 한 사업자/미디어/섹션 코드 미존재
-3003 NewManAdTargetAreaError 광고 영역 크기 에러
-3004 NewManAdVideoOptError 비디오 옵션 미설정
-3005 NewManAdUserAgeLevelError User Age Level 미설정 에러
-5002 NewManAdReloadTimeError 광고 재호출(Reload) 에러
-6002 NewManAdNetworkError 네트워크 에러
-8001 NewManAdFileError 광고물 파일 형식 에러
-9001 NewManAdCreativeError 광고물 요청 실패 (Timeout)

FAQ

광고 노출 여부 확인

No 내용
1 Q. SDK 적용 후 광고가 노출이 안 되는 경우 및 확인 절차
  A1 : 모바일기기 테스트
광고 수신에 대한 Delegate 함수 호출 여부 및 수신실패 Delegate의 에러코드를 확인합니다.(각 광고의 Delegate 내용을 참조 해 주세요)
  A2 : 매체측 적용 오류
발급받은 ID(publisherID, mediaID, sectionID)가 정확하게 적용 되었는지 확인 합니다.
2 Q. 상용 물량 세팅 이후에 광고가 안 보이거나 하우스 광고만 노출 될 경우
  A. 상용 광고의 경우, 매시각 정시에 송출되므로 정시 기준으로 재확인 바랍니다.

No ad 처리방법

No 내용
1 Q. No ad 처리 방법에 대한 문의
  A. 광고 세팅 환경에 따라, 물량이 소진 되었을 경우 No Ad가 발생하며, No Ad시 SDK는 수신실패 Delegate(에러코드 404)를 호출 합니다.
해당 Delegate가 호출이 되면, TARGETPICK 광고 재 요청 및 타광고 호출, 본컨텐츠 재생(동영상) 등을 구현 하시면 됩니다.
2 Q. No ad 캠페인 세팅 후 리포트 수치가 잡히는 이유?
  A. No ad 캠페인 세팅을 해도 리포트 수치 발생은 정상이며, 이는 실제 노출이 아닌 인벤토리 체크를 위한 호출 수치 입니다.

문의처

구분 부서 이름 이메일 전화번호
제휴 문의 모바일 영업팀 김정혁 차장 jeonghyeok.kim@cj.net 02-6484-3856
ID발급 및 광고 세팅 문의 모바일 영업팀 이선민 차장 sunmin.lee1@cj.net 02-6484-3461

업데이트: