본문으로 건너뛰기

iOS SDK

개요

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

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

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

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

컴파일을 위한 준비

xcode 7.0 이상 iOS 9 빌드

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


» 단계1

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

* SDK 4.1.0.0 버전 이상을 사용하시는 경우 3D 광고 지원을 위해 "libstdc++.6.0.9"를 추가합니다.


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

- OpenGLES.framework

- CoreGraphics.framework

- Foundation.framework

- UIKit.framework

- AVFoundation.framework

- QuartzCore.framework

- AudioToolbox.framework

» 단계2

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


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

- lua 파일 : 3D 광고에 필요한 리소스 파일로 해당 파일들이 포함되지 않으면, 3D 광고를 노출 할 수 없습니다.




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

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

» 단계3

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

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

-lstdc++ (SDK v.4.1.0.0 이상 사용 시 하위 버전 xcode를 사용하신다면 해당 Flag를 추가합니다.)

» 단계4

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

» 단계5

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

실제 프로젝트 연동

프로젝트를 열어 아래와 같이 속성을 확인합니다.

» 3-1. 애드립 SDK 사용 초기화

  • 먼저 애드립에서 발급받은 API-KEY를 연결합니다.
  • 실제 광고 구현 Class를 애드립에 위와 같이 연결합니다.
  • 개발 버전과 사용 버전의 link Method를 호출해 연결합니다.
  • 선택적으로 adlib sessionDelegate를 설정해 연결 성공, 실패를 확인할 수 있습니다.
		#import "AppDelegate.h"
		#import <Adlib/Adlib.h>

		//#import "SubAdlibAdViewAdam.h"
		//#import "SubAdlibAdViewAdmob.h"
		//#import "SubAdlibAdViewiAd.h"
		//#import "SubAdlibAdViewNaverAdPost.h"
		//#import "SubAdlibAdViewInmobi.h"
		//#import "SubAdlibAdViewTAD.h"
		//#import "SubAdlibAdViewCauly.h"
		//#import "SubAdlibAdViewDomob.h"
		//#import "SubAdlibAdViewMedibaAd.h"
		//#import "SubAdlibAdViewMMedia.h"
		//#import "SubAdlibAdViewUPlusAD.h"
		//#import "SubAdlibAdViewShallWeAd.h"
		//#import "SubAdlibAdViewAdHub.h"
		//#import "SubAdlibAdAdmixer.h"

		#define ADLIB_API_KEY @"--- --- ---- ----" // 애드립에서 발급받은 키를 입력해주세요.

		@implementation AppDelegate

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

		[self initializeAdlib];

		return YES;
		}

		- (void)initializeAdlib
		{
		NSString* adlibKey = ADLIB_APP_KEY;

		AdlibManager *sharedManager = [AdlibManager sharedSingletonClass];
		sharedManager.sessionDelegate = self;

		// 사용할 플랫폼을 등록 후 쓰지 않을 광고 플랫폼은 삭제해주세요.
		//[sharedManager setPlatform:@"ADAM"  withClass:[SubAdlibAdViewAdam class]];
		//[sharedManager setPlatform:@"ADMOB" withClass:[SubAdlibAdViewAdmob class]];
		//[sharedManager setPlatform:@"IAD"   withClass:[SubAdlibAdViewiAd class]];
		//[sharedManager setPlatform:@"NAVER" withClass:[SubAdlibAdViewNaverAdPost class]];
		//[sharedManager setPlatform:@"CAULY" withClass:[SubAdlibAdViewCauly class]];
		//[sharedManager setPlatform:@"TAD" withClass:[SubAdlibAdViewTAD class]];
		//[sharedManager setPlatform:@"INMOBI" withClass:[SubAdlibAdViewInmobi class]];
		//[sharedManager setPlatform:@"ADMIXER" withClass:[SubAdlibAdAdmixer class]];
		//[sharedManager setPlatform:@"MEDIBAAD" withClass:[SubAdlibAdViewMedibaAd class]];
		//[sharedManager setPlatform:@"SHALLWEAD" withClass:[SubAdlibAdViewShallWeAd Class]];
		//[sharedManager setPlatform:@"ADHUB" withClass:[SubAdlibAdViewAdHub Class]];
		//[sharedManager setPlatform:@"UPLUSAD" withClass:[SubAdlibAdViewUPlusAD Class]];
		//[sharedManager setPlatform:@"DOMOB" withClass:[SubAdlibAdViewDomob class]];
		//[sharedManager setPlatform:@"MM" withClass:[SubAdlibAdViewMMedia class]];
		//[MMSDK initialize];  // MillennialMedia v5.2.0 이상을 사용하시려면 반드시 초기화를 호출해 주세요.

		// SDK 로그 메시지를 출력하도록 설정
		[sharedManager setLogging:NO];

		#warning 배포이전에 하단 코드 확인하기.
		BOOL isTestMode = YES;

		if (isTestMode)
		{
		//개발 버전에서 사용하는 세션 연결
		[sharedManager testModeLinkWithAdlibKey:adlibKey];
		}
		else
		{
		//배포 버전에서 사용하는 세션 연결
		[sharedManager linkWithAdlibKey:adlibKey];
		}
		}

		//애드립 세션 연결 성공 시 호출되는 메소드.
		- (void)adlibManager:(AdlibManager *)manager didLinkedSessionWithUserInfo:(NSDictionary *)userInfo
		{
		NSLog(@"adlib session linked");
		}

		//애드립 세션 연결 실패 시 호출되는 메소드.
		- (void)adlibManager:(AdlibManager *)manager didFailedSessionLinkWithError:(NSError *)error
		{
		NSLog(@"adlib session link failed");
		}

		@end
		

» 3.2 띠배너 연동

3.2.1 뷰 컨트롤러에 초기화

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

			#import "MediationBannerViewController.h"
			#import <ADLibSDK/Adlib.h>

			@interface MediationBannerViewController () <AdlibManagerDelegate>

			@property (nonatomic, strong) UIView *adContainerView;

			@end

			@implementation MediationBannerViewController

			- (void)viewDidLoad
			{
			[super viewDidLoad];

			//1. 광고 컨테이너뷰 생성 및 뷰에서의 위치 설정
			[self loadBannerContainerView];
			}

			- (void)loadBannerContainerView
			{
			CGFloat bannerViewHeight = kAdlibDefaultBannerSize.height;
			CGFloat originY = self.view.bounds.size.height - bannerViewHeight;

			_adContainerView = [[UIView alloc] initWithFrame:CGRectMake(0,
			                                                originY,
			                                                self.view.frame.size.width,
			                                                bannerViewHeight)];
			_adContainerView.backgroundColor = [UIColor clearColor];
			_adContainerView.clipsToBounds = YES;

			[self.view addSubview:_adContainerView];
			}

			@end
			
3.2.2 광고 뷰 추가 / 제거
  • ViewController의 광고 노출 및 제거 시점에 attach / detach Method를 사용해 광고뷰를 노출 / 제거 합니다.
			@implementation MediationBannerViewController

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

			AdlibManager *manager = [AdlibManager sharedSingletonClass];

			//미디에이션 배너 뷰를 해당 뷰 컨트롤러의 컨테이너뷰에 추가합니다.
			[manager attachWithViewController:self
			  atContainerView:_adContainerView];

			//애드립 delegate를 지정합니다. (추가정보를 받고 싶을 경우 연결합니다.)
			manager.delegate = self;
			}

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

			AdlibManager *manager = [AdlibManager sharedSingletonClass];

			//미디에이션 배너 뷰를 컨테이너 뷰에서 제거합니다.
			[manager detach:self];
			manager.delegate = nil;
			}

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

			- (void)viewDidLayoutSubviews
			{
			[super viewDidLayoutSubviews];

			//배너뷰의 기본 크기는 CGSizeMake(320, 50)로 정의되어 있으며 가로의 경우 디바이스 가로 넓이 값으로
			//조정 가능 해당 크기를 지원하는 플랫폼 광고의 경우 조정되어 노출됩니다.
			CGFloat bannerViewHeight = kAdlibDefaultBannerSize.height;
			CGFloat originY = self.view.bounds.size.height - bannerViewHeight;
			_adContainerView.frame = CGRectMake(0,
			                            originY,
			                            self.view.frame.size.width,
			                            _adContainerView.bounds.size.height);
			}

			@end
			
3.2.4 전면광고 요청
  • SubAdlibAdView 내부 동작 처리는 하단 3.2.5 전면광고 처리 내용을 참고
			@implementation MediationBannerViewController

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

			@end
			
3.2.5 플랫폼 광고 처리

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

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


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

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

자세한 구현 사항은 아래의 링크에서 확인하세요.
https://github.com/mocoplex/adlibr-SDK-ios/blob/master/adlibrTestUniversal/adlibrTestUniversal/adlibrTestUniversal/ads/adlib.mocoplex/SubAdView/SubAdlibAdViewAdmob.m

“SubAdlibAdViewAdmob.m”
			#import "SubAdlibAdViewAdmob.h"

			// ADMOB의 APP 아이디를 설정합니다.
			#define ADMOB_ID @"ca-app-pub-XXXXXX/XXXXXX"
			#define ADMOB_TEST_DEVICE_ID @"----"

			@interface SubAdlibAdViewAdmob ()  <GADBannerViewDelegate, GADInterstitialDelegate>

			@property (nonatomic, strong) GADInterstitial* interstitial;
			@property (nonatomic, weak) UIViewController *parentViewController;

			@end

			@implementation SubAdlibAdViewAdmob

			// 객체를 전역적으로 하나만 생성합니다.
			+ (BOOL)isStaticObject
			{
			return YES;
			}

			// 플랫폼 광고 요청을 처리합니다.
			- (void)query:(UIViewController*)parent
			{
			[super query:parent];
			....
			}

			// 플랫폼 광고 뷰의 크기를 반환합니다. (Admob GADBannerView)
			// 미디이에션 광고 컨테이너뷰에서의 위치를 지정하는데 사용됩니다.
			// 기본 정렬 우선 순위는 컨테이너 뷰 내부의 아래/가운데 정렬로 수행됩니다. 
			- (CGSize)size
			{
			...
			}

			// 플랫폼 광고뷰의 회전에 대한 처리를 수행합니다.
			// 미디에이션 광고 컨테이너 뷰의 크기 변경 시 플랫폼 광고뷰의 frame을 변경합니다.
			- (void)orientationChanged
			{
			[super orientationChanged];
			...
			}

			// 플랫폼 광고 뷰가 미디에이션 광고 컨테이너뷰에서 사라질 때의 처리를 구현합니다.
			- (void)clearAdView
			{
			[super clearAdView];
			...
			}

			#pragma mark - GADBannerViewDelegate

			- (void)adViewDidReceiveAd:(GADBannerView *)view
			{
			// 화면에 광고를 보여줍니다.    
			[self gotAd];
			}

			- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error
			{
			// 광고 수신에 실패 처리를 요청합니다.
			[self failed];
			}

			@end
			
전면광고 처리
			@implementation SubAdlibAdViewAdmob

			// 해당 플래폼 광고에 전면광고 요청을 처리합니다.
			- (void)subAdlibViewLoadInterstitial:(UIViewController*)viewController
			{
			GADInterstitial* interstitial_ = [[GADInterstitial alloc] init];
			self.interstitial = interstitial_;

			interstitial_.adUnitID = ADMOB_ID;
			interstitial_.delegate = self;
			self.parentController = viewController;
			[interstitial_ loadRequest:[GADRequest request]];
			}

			#pragma mark - GADInterstitialDelegate

			- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial
			{
			if (self.parentController) {
			//전면광고를 화면에 표시합니다.
			[interstitial presentFromRootViewController:self.parentController];
			// 전면광고 성공을 알린다.
			[self subAdlibViewInterstitialReceived:@"admob"];
			} else {
			// 전면광고 실패를 알린다.
			[self subAdlibViewInterstitialFailed:@"admob"];
			}
			}

			- (void)interstitial:(GADInterstitial *)interstitial didFailToReceiveAdWithError:(GADRequestError *)error
			{
			// 전면광고 실패를 알린다.
			[self subAdlibViewInterstitialFailed:@"admob"];
			}

			@end
			

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

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

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

5. 전면 배너 호출 유형 및 설정

5.1 자동 노출

대쉬보드에서 시작시 노출을 활성화 시키면, 아무런 구현 없이 해당 시점에 전면 배너가 노출됩니다.


계속 노출 / 하루에 한번 만 노출하기 설정을 통해 전면 배너 자동 노출 빈도를 설정 할 수 있습니다.

단, 자동 노출 기능은 애드립에서 제공하는 전면 배너 노출만 가능합니다.



5.2 직접 호출

- 전면 배너를 직접 호출하기 위해서는 아래 코드를 사용합니다.

		@implementation ViewController

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

		@end
		

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

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

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

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

6. Native 광고 설정

6.1 Layout 구성요소

Native AD를 구성하는 Layout을 생성합니다.

구현하려는 서비스의 레이아웃에 맞게 Native AD의 구성요소들을 선택적으로 사용하여 Native AD의 노출 영역을 조정할 수 있습니다.


Native AD의 구성요소
① 아이콘
② 제목
③ 부제목
④ 설명
⑤ 이미지 또는 비디오

※ Natvie AD 광고 구성 요소들을 앱의 특성에 맞게 커스터마이징할 수 있으나 비디오 광고가 포함되는 경우, 비디오영역이 필수적으로 노출되어야 합니다.


6.2 UITableViewCell 연동

» 단계1 > UITableViewCell Class를 ALNativeAdTableViewCell Class로 지정합니다.

해당 과정은 클래스 파일 구현으로 대체 가능합니다.


» 단계2 > 사용할 광고 속성 값을 해당 뷰에 연결 합니다.

해당 과정은 클래스 파일 구현으로 대체 가능합니다.


» 단계3 > 해당 뷰의 레이아웃을 설정합니다.

개발사에서 뷰 레이아웃 조정 및 오토 레이아웃 적용 가능




6.3 UITableViewController 연동

» 단계1 > 네이티브 광고 요청

UITableViewController를 사용해 네이티브 광고를 표시하기 위해서는
ALNativeAdTableHelper 객체를 필수로 사용해 주어야 합니다.

해당 뷰를 사용할 UITableViewController 구현 파일에 해더 파일을 포함합니다.

#import <ADLibSDK/ADLibSDK.h>

@interface SimpleFeedListTableViewController () <ALNativeAdTableHelperDelegate>

// 애드립 네이티브광고 테이블뷰 헬퍼 객체
@property (nonatomic, strong) ALNativeAdTableHelper *nativeAdTableManager;

// Native 광고 객체의 인덱스 리스트
@property (nonatomic, strong) NSMutableArray *adItemIndexList;

...

@end

@implementation ViewTypeController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    ...
    
    //setup table manager
    [self loadNativeAds];
}

- (void)loadNativeAds
{
    // 네이티브 광고를 표시할 인덱스를 지정합니다.
    // 테이블 Row, Section 등의 지정은 개발자에서 추가로 수정, 변경가능합니다.
    NSMutableArray *indexList = [[NSMutableArray alloc] initWithArray:@[@(3), @(5), @(8), @(13)]];
    self.adItemIndexList = indexList;
    
    // 네이티브 광고 키 값을 지정하여 헬퍼 객체를 생성합니다.
    NSString *appKey = [ADLibSession adlibAppKey];
    ALNativeAdTableHelper *nativeAdTableHelper = [[ALNativeAdTableHelper alloc] initWithTableView:self.tableView
                                                                                      nativeAdKey:appKey
                                                                                         delegate:self];
    self.nativeAdTableManager = nativeAdTableHelper;
    
    // 헬퍼 객체를 통해 네이티브 광고를 요청합니다.
    // @param adItemType : 네이티브 광고 요청 타입 (이미지 / 비디오 / 모두 포함)
    // @param maximuCount : 최대 값, 기본 값 10개
    // @param timeoutInterval : 최소 5초, 최대 60초, 기본 값 30초
    //                          해당 시간 만료 이전까지 수신한 광고만을 반환
    [_nativeAdTableManager requestNativeAdItemType:ALAdRequestItemTypeAll
                                      maximumCount:10
                                   timeoutInterval:30.];
@end
			
» 단계2 > 네이티브 광고 수신

ALNativeAdTableHelper Delegate를 구현합니다.

/**
 *  네이티브 광고 수신 성공 시 마다 호출되는 델리게이트
 *  해당 광고에 필요한 리소스까지 다운로드 완료된 시점에서 호출
 *  @param nativeAd : 응답에 성공한 네이티브 광고 객체
 */
- (void)ALNativeAdTableHelper:(ALNativeAdTableHelper *)helper didReceivedNativeAd:(ALNativeAd *)nativeAd
{
    if (_adItemIndexList.count > 0) {
        
        NSNumber *rowNumber = [_adItemIndexList firstObject];
        [_adItemIndexList removeObjectAtIndex:0];
        
        NSInteger row = [rowNumber integerValue];
        if (row >= _tableItemList.count) {
            row = _tableItemList.count;
        }
        
        NSIndexPath *indexPath =[NSIndexPath indexPathForRow:row inSection:0];
        
        NSMutableDictionary *tableItemInfo = [[NSMutableDictionary alloc] init];
        [tableItemInfo setObject:[NSNumber numberWithBool:YES] forKey:kMapKeyIsAd];
        [tableItemInfo setObject:nativeAd forKey:kMapKeyItem];
        
        [_tableItemList insertObject:tableItemInfo atIndex:row];
        
        [self.tableView insertRowsAtIndexPaths:@[indexPath]
                              withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

/**
 *  네이티브 광고를 수신 실패 시 호출되는 델리게이트
 *  @param error : 응답 실패에 대한 에러 객체
 */
- (void)ALNativeAdTableHelper:(ALNativeAdTableHelper *)helper didFailedRequestWithError:(NSError *)error
{
    NSLog(@"nativeAdTableHelper Error : %@", error);
}
			
» 단계3 > UITableViewDataSource 처리

ALNativeAdTableHelper 객체를 통해 광고 셀을 랜더링하여 반환합니다.

// UITableView DataSource delegate
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   
    //광고 셀 을 반환
    ALNativeAd *nativeAd = [self pv_nativeAdObjectAtRow:indexPath.row];
    if (nativeAd) {
        return [self al_tableView:tableView adCellForRowAtIndexPath:indexPath];
    } else {
        return [self al_tableView:tableView cellForRowAtIndexPath:indexPath];
    }
}

// 헬퍼 클래스를 통해 광고 셀을 랜더링하고 해당 셀을 테이블뷰에 반환합니다.
- (UITableViewCell *)al_tableView:(UITableView *)tableView adCellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ALNativeAd *nativeAd = [self pv_nativeAdObjectAtRow:indexPath.row];
    
    UITableViewCell *cell = nil;
    NSString *cellIdentifier = nil;
    
    if (nativeAd.isVideoAd) {
        cellIdentifier = SimpleFeedListVideoAdCellIdentifier;
    } else {
        cellIdentifier = SimpleFeedListImageAdCellIdentifier;
    }
    cell = (id)[_nativeAdTableManager adCellForAd:nativeAd
                                   cellIdentifier:cellIdentifier
                                     forIndexPath:indexPath];
    return cell;
}
			

ALNativeAdTableHelper 객체를 통해 셀 클릭 이벤트를 처리합니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
    ALNativeAd *nativeAd = [self pv_nativeAdObjectAtRow:indexPath.row];
    if (nativeAd) {
        [_nativeAdTableManager didSelectAdCellForAd:nativeAd tableViewController:self];
    } else {
        // 광고가 아닌 셀 클릭 이벤트 처리.
    }
}
			

6.4 마무리

자세한 연동 내용을 확인하시려면 Github 샘플 프로젝트 하단 링크를 참고

샘플코드 확인하기(Github)


자주묻는 질문 & TIP

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

정리

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

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

  • 각 플랫폼의 ID 발급 및 SDK 다운로드
  • SDK 프로젝트에 라이브러리 추가
  • - (void)initializeAdlib 수정 (애드립 API KEY 설정)
  • SubAdView 안의 광고 ID 설정 부분 수정

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

Top