국내 첫 번째 모바일 광고 솔루션 ‘카울리’퓨쳐스트림네트웍스에서는 국내 최초로 모바일 광고 솔루션인 카울리 시스템을 지난 4월에 오픈했다. 카울리 시스템을 활용해 광고 수익을 얻는 방법을 알아보자.
먼저, 카울리 광고 시스템을 적용하는 절차를 살펴보자
먼저, 카울리 광고 시스템을 적용하는 절차를 살펴보자
- 카울리 홈페이지에 애플리케이션 등록(카울리 홈페이지 주소 : http://www.cauly.net)
- 카울리 SDK를 자신의 앱에 적용(SDK는 홈페이지에서 애플리케이션을 등록하면 다운 받을 수 있다)
- 카울리 SDK를 자신의 앱에 적용(SDK는 홈페이지에서 애플리케이션을 등록하면 다운 받을 수 있다)
여기서는 SDK를 본인의 애플리케이션에 적용하는 방법을 중점적으로 살펴본다. 자신의 애플리케이션을 카울리 홈페이지에 등록하는 방법은 가이드 페이지에 친절히 설명돼 있기 때문에 각자 방문해 살펴보는 것으로 대신한다(카울리 가이드 페이지: http://www.cauly.net/guide_index.jsp).
현재 카울리 SDK는 아이폰용 SDK만을 출시한 상태로, 조만간 안드로이드용 SDK와 아이패드용 SDK도 출시할 예정이니 개발자가 선택할 폭이 더욱 넓어질 전망이다. 현재 출시된 아아폰용 SDK를 기준으로 설명을 진행한다.
현재 카울리 SDK는 아이폰용 SDK만을 출시한 상태로, 조만간 안드로이드용 SDK와 아이패드용 SDK도 출시할 예정이니 개발자가 선택할 폭이 더욱 넓어질 전망이다. 현재 출시된 아아폰용 SDK를 기준으로 설명을 진행한다.
카울리 SDK의 구성 및 설치
SDK의 구성
애플리케이션을 성공적으로 등록했다면 이미 카울리 SDK를 다운로드가 됐다. 현재 SDK는 1.0.3 버전까지 출시돼 있지만 버전은 수시로 업그레이드됨으로 항상 새로운 카울리 소식에 귀 기울이도록 하자.
SDK를 다운로드 하면 2개의 압축 파일이 있다.
SDK의 구성
애플리케이션을 성공적으로 등록했다면 이미 카울리 SDK를 다운로드가 됐다. 현재 SDK는 1.0.3 버전까지 출시돼 있지만 버전은 수시로 업그레이드됨으로 항상 새로운 카울리 소식에 귀 기울이도록 하자.
SDK를 다운로드 하면 2개의 압축 파일이 있다.
- CaulySDK- 실제 SDK가 들어있는 파일(압축을 풀면 include 디렉터리가 나옴)
- Cauly-example - 카울리 SDK를 적용한 간단한 예제 프로젝트
- Cauly-example - 카울리 SDK를 적용한 간단한 예제 프로젝트
설치
카울리 SDK를 적용시키기 위해선 다음 프레임워크를 프로젝트에 포함시켜야 하며, <화면 1>은 프레임워크를 포함시킨 모습이다.
CaulySDK의 압축을 풀고 안에 있는 include 디렉터리를 개발하는 앱에 포함시킨다(<화면 2> 참조).
카울리 SDK를 적용시키기 위해선 다음 프레임워크를 프로젝트에 포함시켜야 하며, <화면 1>은 프레임워크를 포함시킨 모습이다.
CaulySDK의 압축을 풀고 안에 있는 include 디렉터리를 개발하는 앱에 포함시킨다(<화면 2> 참조).
Foundation
UIKit CoreGraphics MapKit QuartzCore |
<리스트 1> 카울리 SDK 적용을 위해 포함시킬 프레임워크
<화면 1> 카울리를 위한 프레임워크들을 add시킨 화면
<화면 2> 개발하려는 앱에 카울리 파일들을 add시킨 화면
카울리 SDK적용
카울리 SDK는 광고가 보이는 영역인 카울리 뷰를 제공하는 작업을 수행한다. 개발자는 생성된 카울리 뷰를 자신이 원하는 뷰에 붙여 광고를 노출시키면 되는데, 이때 카울리 뷰를 붙일 객체는 카울리 프로토콜을 따르도록 구현해야 한다. <리스트 2>와 <리스트 3>은 카울리 프로토콜과 카울리 뷰 객체의 인터페이스다.
카울리 SDK는 광고가 보이는 영역인 카울리 뷰를 제공하는 작업을 수행한다. 개발자는 생성된 카울리 뷰를 자신이 원하는 뷰에 붙여 광고를 노출시키면 되는데, 이때 카울리 뷰를 붙일 객체는 카울리 프로토콜을 따르도록 구현해야 한다. <리스트 2>와 <리스트 3>은 카울리 프로토콜과 카울리 뷰 객체의 인터페이스다.
@protocol CaulyProtocol
@required - (NSString *) devKey; @optional - (NSString *) gender; // male, female, all - (NSString *) age; // 10, 20, 30, 40, 50, all - (NSString *) gps; // 위도, 경도 - (REFRESH_PERIOD) rollingPeriod; // CPC광고 교체주기 REFRESH_PERIOD Type값을 설정. - (ANIMATION_TYPE) animationType; // CPC광고 교체시 광고가 나오는 애니메이션 설정 ANIMATION_TYPE type값을 설정. // 아래의 함수를 정의하면, 광고를 정상적으로 수신하고 // 뷰를 생성한 후 마지막으로 AdReceiveCompleted를 호출한다. // 뷰의 위치를 지정하거나 사이즈를 조정하는 목적으로 활용이 가능하다. - (void)AdReceiveCompleted:(CaulyView *)adView; // 아래 함수는 CPM광고를 클릭해 CPM광고가 사라지고 나서 호출된다. - (void)closeCPMAd; @end |
<리스트 2> 카울리 프로토콜
@protocol CaulyProtocol; @interface CaulyView : UIView { } // CPC View 요청 + (CaulyView *)requestADWithProtocol:(id // CPM View 요청 + (CaulyView *)requestFullADWithProtocol:(id + (NSString *)version; @end |
<리스트 3> 카울리 뷰
카울리 뷰를 붙이기 위해선 카울리 뷰를 붙이려는 뷰가 카울리 프로토콜을 따라야 한다. 예제 프로젝트에 있는 내용을 통해 카울리 뷰를 담고 있는 뷰 컨트롤러에서 카울리 프로토콜을 작성한 예들을 살펴보자(<리스트 4>, <리스트 5> 참조).
@interface Cauly_exampleViewController : UIViewController
UIWindow *window; } - (void)init:(UIWindow*)aWindow; - (void)AddCPM; @end |
<리스트 4> 헤더파일
#pragma mark CaulyProtocol method
- (NSString *) devKey { return @"CAULY"; // CAULY는 테스트용 개발코드다. 제품 배포 시에는 발급받은 애플리케이션 고유개발코드로 변환해야 한다. } // 성별 값을 리턴한다. “male”, “female”, “all” - (NSString *) gender { return @"all"; } // 현재 애플이 실행되는 위치정보값을 리턴한다. “위도, 경도” - (NSString *) gps { return @" "; } // 광고 교체주기값을 설정한다. - (REFRESH_PERIOD) rollingPeriod { return TEN_SEC; } // 광고가 바뀔 때의 효과를 설정한다. - (ANIMATION_TYPE) animationType { return CURLUP; } // 광고 데이터를 받고나면 호출된다. - (void)AdReceiveCompleted:(CaulyView *)adView { NSLog(@"AdReceiveCompleted."); } // 전면광고를 종료시키면 호출된다. // 전면광고와 배너광고를 동시에 노출시킬 수 없기에 전면광고가 종료된 뒤 배너광고를 노출시켜야 한다. - (void)closeCPMAd { // [caulyCPM removeFromSuperview]; CaulyView *cauly = nil; //CPC 광고 예제 : 320*48 사이즈 cauly = [CaulyView requestADWithProtocol:self]; cauly.frame = [self.view convertRect:CGRectMake(0, 20, 320, 48) fromView:self.view.superview]; [self.view addSubview:cauly]; } #pragma mark - |
<리스트 5> 소스파일(카울리 프로토콜을 구현한 부분)
헤더파일을 통해 알 수 있듯, 카울리 뷰를 담고 있는 객체는 카울리 프로토콜을 구현해야 한다. 카울리 프로토콜에서 반드시 구현해야 하는 메소드는 바로 devKey 메소드다.
이 메소드는 개발자가 개발한 앱의 고유식별자(APP ID)를 리턴하는 메소드로서, 카울리 홈페이지에서 애플리케이션 등록 시 카울리 시스템에서 발급하는 APP ID를 넣어주면 된다. 만일 이 값이 잘못된 값일 경우 광고노출이 정상적으로 이루어지지 않으므로 주의해야 한다.
그 외에 성별, 위치(GPS)정보를 리턴하는 메소드가 있다. 이 메소드들은 옵션사항이지만 이들 정보를 넣어두면 좀 더 타겟팅 된 광고를 제공할 수 있어 사용자들이 광고를 보다 많이 터치하게 돼 그에 따른 개발자의 수익이 증가한다. 따라서 가급적 해당정보를 넣어 두는 것이 좋다.
rollingPeriod 메소드는 광고의 변경주기를 설정하는 메소드다. 만약 메소드를 작성하지 않으면 기본값으로 10초가 설정된다. 설정값은 CaulyProtocol.h에 정의돼, 현재는 10초와 무변경(NONE), 두 가지 옵션만 제공된다(<리스트 6> 참조).
이 메소드는 개발자가 개발한 앱의 고유식별자(APP ID)를 리턴하는 메소드로서, 카울리 홈페이지에서 애플리케이션 등록 시 카울리 시스템에서 발급하는 APP ID를 넣어주면 된다. 만일 이 값이 잘못된 값일 경우 광고노출이 정상적으로 이루어지지 않으므로 주의해야 한다.
그 외에 성별, 위치(GPS)정보를 리턴하는 메소드가 있다. 이 메소드들은 옵션사항이지만 이들 정보를 넣어두면 좀 더 타겟팅 된 광고를 제공할 수 있어 사용자들이 광고를 보다 많이 터치하게 돼 그에 따른 개발자의 수익이 증가한다. 따라서 가급적 해당정보를 넣어 두는 것이 좋다.
rollingPeriod 메소드는 광고의 변경주기를 설정하는 메소드다. 만약 메소드를 작성하지 않으면 기본값으로 10초가 설정된다. 설정값은 CaulyProtocol.h에 정의돼, 현재는 10초와 무변경(NONE), 두 가지 옵션만 제공된다(<리스트 6> 참조).
typedef enum {
TEN_SEC = 0, NONE, } REFRESH_PERIOD; |
<리스트 6> rollingPeriod 메소드
animationType 메소드는 광고가 바뀔 때 나오는 애니메이션 효과를 설정하는 값을 리턴하는 메소드로 네 가지 애니메이션 효과와 효과없음으로 설정할 수 있다. 설정값은 동일하게 Cauly Protocol.h에 정의돼 있다.
typedef enum {
CURLUP = 0, // 위로 감아올리는 애니메이션 CURLDOWN, // 아래로 감아내리는 애니메이션 FLIPFROMLEFT, // 왼쪽 방향으로 뒤집는 애니메이션 FLIPFROMRIGHT, // 오른쪽 방향으로 뒤집는 애니메이션 NOANIMATION // 애니메이션 생략 } ANIMATION_TYPE; |
<리스트 7> animationType 메소드
카울리 프로토콜은 2개의 callBack 메소드를 제공하는데, 하나는 카울리 광고정보를 전달 받았을 때 호출되는 AdReceive Completed 메소드이고 다른 하나는 전면광고를 터치(또는 종료버튼 터치)해 전면광고가 종료될 때 호출되는 closeCPMAd 메소드이다.
현재 카울리는 한 화면에 하나의 배너광고만을 보이도록 제한하고 있다. 또 전면광고와 배너광고를 동시에 보이는 것도 제한하고 있다. 따라서 전면광고가 보인 후 바로 배너광고를 보여주려면 closeCPMAd 메소드를 통해 전면광고가 종료되는 시점을 설정한다.
인터페이스의 사용법은 간단하다. 가장 핵심적인 메소드로서 배너광고(CPC)를 요청하는 requestADWithProtocol 메소드와 전면광고를 요청하는 requestFullADWithProtocol 메소드가 있는데 각 메소드 별 사용법을 <리스트 8>과 <리스트 9>에 작성했다.
현재 카울리는 한 화면에 하나의 배너광고만을 보이도록 제한하고 있다. 또 전면광고와 배너광고를 동시에 보이는 것도 제한하고 있다. 따라서 전면광고가 보인 후 바로 배너광고를 보여주려면 closeCPMAd 메소드를 통해 전면광고가 종료되는 시점을 설정한다.
인터페이스의 사용법은 간단하다. 가장 핵심적인 메소드로서 배너광고(CPC)를 요청하는 requestADWithProtocol 메소드와 전면광고를 요청하는 requestFullADWithProtocol 메소드가 있는데 각 메소드 별 사용법을 <리스트 8>과 <리스트 9>에 작성했다.
CaulyView* cauly = nil;
cauly = [CaulyView requestFullADWithProtocol :self]; cauly.frame = [window convertRect:CGRectMake (0, 0, 320, 480) fromView:window.superview]; [window addSubview:cauly]; |
<리스트 8> requestFullADWithProtocol 메소드(전면광고)
requestFullADWithProtocol 메소드를 호출하면 SDK 내부에서 카울리 뷰 객체를 생성해 리턴한다. 이때 카울리 뷰가 이용할 델리게이트 객체를 메소드 인자로 넘겨주게 되는데(<리스트 7>에서는 self객체) 해당 객체는 카울리 프로토콜에서 정의한 메소드들을 구현해놔야 한다. 그 후 생성된 객체를 받아서 프레임을 설정하고 어떤 뷰에 붙일 것인지를 결정해서 붙이면 된다.
CaulyView* cauly = nil;
cauly = [CaulyView requestADWithProtocol :self]; cauly.frame = [self.view convertRect:CGRect Make(0, 20, 320, 48) fromViewelf.view.superview]; [self.view addSubview:cauly]; |
<리스트 9> requestADWithProtocol 메소드(배너광고)
배너광고도 전면광고와 거의 동일하다. 단지 배너광고는 광고크기가 320x48 이므로 프레임 설정을 이에 맞추면 된다. 성공적으로 광고를 붙였다면 <화면 3>같이 광고가 나오는 실제화면을 만날 수 있다.
<화면 3> 성공적으로 카울리 뷰를 붙인 화면
고려해야 할 사항
앞서 말했듯 카울리 뷰를 붙일 때는 고려해야 할 사항이 있다. 우선 전면광고의 경우 특별한 제약이 없지만 이미지를 서버로부터 받아와야 하므로 너무 잦은 광고요청을 할 경우 네트워크 사용량이 늘어난다. 배너광고의 경우 하나의 뷰에 광고 하나만 붙이도록 제한을 둔 것은 악의를 갖고 광고를 악용하는 것(이하 어뷰징)을 방지하기 위함이다. 이처럼 어뷰징을 방지하기 위해 개발자들이 요구를 해도 제공하지 않는 기능 및 메소드가 몇 가지 있는데 이것들은 보다 나은 광고환경을 제공해 궁극적으로 개발자와 광고주 모두의 이익을 키우게 하기 위한 정책적 결정이므로 개발자들의 너그럽게 이해해야 한다.
앞서 말했듯 카울리 뷰를 붙일 때는 고려해야 할 사항이 있다. 우선 전면광고의 경우 특별한 제약이 없지만 이미지를 서버로부터 받아와야 하므로 너무 잦은 광고요청을 할 경우 네트워크 사용량이 늘어난다. 배너광고의 경우 하나의 뷰에 광고 하나만 붙이도록 제한을 둔 것은 악의를 갖고 광고를 악용하는 것(이하 어뷰징)을 방지하기 위함이다. 이처럼 어뷰징을 방지하기 위해 개발자들이 요구를 해도 제공하지 않는 기능 및 메소드가 몇 가지 있는데 이것들은 보다 나은 광고환경을 제공해 궁극적으로 개발자와 광고주 모두의 이익을 키우게 하기 위한 정책적 결정이므로 개발자들의 너그럽게 이해해야 한다.
카울리 플랫폼은 진화 중
이상으로 자신이 개발한 앱에 카울리 SDK를 적용해 광고를 노출시키는 방법에 대해 살펴봤다. 몇 가지 주의사항만 유념한다면 큰 어려움 없이 광고를 노출시킬 수 있을 것이다.
현재 카울리는 계속 발전하고 있다. 지난 4월 SDK 0.9.0 버전이 최초 출시된 이래 몇 번의 업데이트를 거치면서 성능과 안정성이 크게 개선됐으며 다양한 기능이 추가됐다. 하지만 아직 갈 길은 멀다. 다양한 플랫폼을 지원하는 SDK가 속속 출시될 예정이며, 아이폰 SDK도 기능과 안정성, 사용자 편의성을 크게 향상시킨 2.0버전이 출시될 예정이다.
모바일 산업은 하루가 다르게 발전하고 있고 수익창출환경도 끊임없이 변화하고 있다. 카울리는 스스로도 변화하는 환경에 능동적으로 대처하고 있는 만큼, 개발자들은 카울리라는 든든한 동반자를 선택한다면 거친 모바일 산업에서 승자가 될 수 있을 것이라 확신한다.
현재 퓨쳐스트림네트웍스에서는 SDK 작업에 어려움을 겪는 개발자를 위해 고객센터(1544-8867 Cauly@futurestream. co.kr)를 운영 중이며, 언제든 관련내용에 대한 친절한 안내를 받을 수 있으니 개발도중 의문사항 있으면 주저없이 연락하자.
기사원문보기
이상으로 자신이 개발한 앱에 카울리 SDK를 적용해 광고를 노출시키는 방법에 대해 살펴봤다. 몇 가지 주의사항만 유념한다면 큰 어려움 없이 광고를 노출시킬 수 있을 것이다.
현재 카울리는 계속 발전하고 있다. 지난 4월 SDK 0.9.0 버전이 최초 출시된 이래 몇 번의 업데이트를 거치면서 성능과 안정성이 크게 개선됐으며 다양한 기능이 추가됐다. 하지만 아직 갈 길은 멀다. 다양한 플랫폼을 지원하는 SDK가 속속 출시될 예정이며, 아이폰 SDK도 기능과 안정성, 사용자 편의성을 크게 향상시킨 2.0버전이 출시될 예정이다.
모바일 산업은 하루가 다르게 발전하고 있고 수익창출환경도 끊임없이 변화하고 있다. 카울리는 스스로도 변화하는 환경에 능동적으로 대처하고 있는 만큼, 개발자들은 카울리라는 든든한 동반자를 선택한다면 거친 모바일 산업에서 승자가 될 수 있을 것이라 확신한다.
현재 퓨쳐스트림네트웍스에서는 SDK 작업에 어려움을 겪는 개발자를 위해 고객센터(1544-8867 Cauly@futurestream. co.kr)를 운영 중이며, 언제든 관련내용에 대한 친절한 안내를 받을 수 있으니 개발도중 의문사항 있으면 주저없이 연락하자.
기사원문보기
No comments:
Post a Comment