2. Incentive Ad‎ > ‎1) Publisher API‎ > ‎1.3 iOS‎ > ‎

가. 광고 목록 띄우기

 * 테스트 상태에서는 테스트하는 장비를 개발 장비로 등록하셔야 광고목록이 정상적으로 나타납니다.

1) 유저 식별값 설정

앱이 실행되면 우선 앱 내에서 사용자를 식별하는 고유한 ID를 아래의 API를 사용하시어 Tnk SDK에 설정하시기 바랍니다. 
사용자 식별 값으로는 게임의 로그인 ID 등을 사용하시면 되며, 적당한 값이 없으신 경우에는 Device ID 값 등을 사용할 수 있습니다.
(유저 식별 값이 Device ID 나 전화번호, 이메일 등 개인 정보에 해당되는 경우에는 암호화하여 설정해주시기 바랍니다.)

유저 식별 값을 설정하셔야 이후 사용자가 적립한 포인트를 개발사의 서버로 전달하는 callback 호출 시에  같이 전달받으실 수 있습니다.

Method 
  - (void) setUserName:(NSString *)userName

Parameters
 파라메터 명칭 내용
 userName 앱에서 사용자를 식별하기 위하여 사용하는 고유 ID 값 (로그인 ID 등)
 길이는 256 bytes 이하입니다.

적용예시

Sample Code


[[TnkSession sharedInstance] setUserName:loginId];


2) TnkSession - showAdList~:title

자신의 앱에서 광고 목록을 띄우기 위하여 TnkSession 객체의 showAdListAsModel:title 또는 showAdListNavigation:title 함수를 사용합니다.
모달뷰 형태로 광고 목록을 띄워주거나 네비게이션 컨트롤러 방식으로 목록을 띄워줍니다.

Method
  - (void) showAdListAsModal:(UIViewController *)viewController title:(NSString *)title
  - (void) showAdListNavigation:(UIViewController *)viewController title:(NSString *)title

Description
   TnkSession 클래스가 제공하는 메소드로서 광고 목록 화면을 띄워줍니다. TnkSession의 sharedInstance 객체를 받아서 메소드를 호출해야하며 모달뷰 형태로 띄우거나(showAdListAsModal) 또는 네비게이션 컨트롤러의 하위레벨로 띄워줍니다(showAdListNavigation). 

Parameters
 파라메터 명칭 내용
 viewController현재화면의 뷰컨트롤러 객체 
 title 광고 리스트의 타이틀을 지정함 

적용 예시

Sample Code

- (IBAction)showOfferListPressed:(id)sender {

    // 모달 창으로 광고띄우기

    [[TnkSession sharedInstance] showAdListAsModal:self title:@"무료 골드 충전"];

}



3) TnkAdListView

TnkAdListView 는 보상형 광고리스트를 제공하는 UIView 객체입니다. UIView 로 제공하기때문에 보다 유연하게 앱내에 광고리스트를 탑재할 수 있습니다.

TnkAdListView interface

@interface TnkAdListView : UITableView <UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate, TnkServiceCallback, UIGestureRecognizerDelegate>


- (id) initWithFrame:(CGRect)frame viewController:(UIViewController *)vc;

- (void) loadAdList;

- (void) updateAdList;

- (NSTimeInterval) getLastLoadingSeconds;


@end


- TnkAdListView 생성하기

  - (id) initWithFrame:(CGRect)frame viewController:(UIViewController *)vc;


생성하고자하는 TnkAdListView 의 크기와 UIViewController 객체를 파라메터로 전달합니다.

아래의 메소들은 TnkAdListView 에서 제공하는 기능들입니다.


  - (void) loadAdList;

  • 광고 목록을 서버에서 가져와 화면에 뿌려줍니다.

  - (void) updateAdList;

  • 현재 광고목록을 다시 화면에 뿌려줍니다. 서버에 새로 광고를 요청하지 않습니다. 
  • 화면의 크기나 방향이 변경되었을때 다시 광고리스트를 화면에 출력하기 위한 용도로 사용합니다.

  - (NSTimeInterval) getLastLoadingSeconds;

  • 마지막으로 서버에서 광고를 요청한 시간을 1970.1.1 기준으로 초(second)로 반환합니다.

아래의 예시는 TnkAdListView 를 사용하여 구현한 TestAdListViewController 소스입니다.


AdTitleView 소스

// AdTitleView.h

#import <UIKit/UIKit.h>


@interface AdTitleView : UIView


@property (nonatomic, weak) IBOutlet UIButton* closeButton;

@property (nonatomic, weak) IBOutlet UIButton* helpButton;

@property (nonatomic, weak) IBOutlet UILabel *titleLabel;


- (IBAction) didHelpButtonPressed:(id)sender;


@end


// AdTitleView.m

#import "AdTitleView.h"

#import "TnkSession.h"


@implementation AdTitleView


- (IBAction) didHelpButtonPressed:(id)sender {

    NSString *url = [[TnkSession sharedInstance] getHelpdeskUrl];

    NSURL *urlToOpen = [NSURL URLWithString:[NSString stringWithString:url]];

    

    [[UIApplication sharedApplication] openURL:urlToOpen];

}


@end



TestAdListViewController

// TestAdListViewController.h

#import <UIKit/UIKit.h>


@interface TestAdListViewController : UIViewController 


@end


// TestAdListViewController.m

#import "TestAdListViewController.h"

#import "AdTitleView.h"

#import "tnksdk.h"


#define HEADER_HEIGHT 60


@interface TestAdListViewController ()


@end


@implementation TestAdListViewController {

    AdTitleView *titleView;

    TnkAdListView *adlistView;

}


- (void) cancelPressed {

    [self.navigationController popViewControllerAnimated:YES];

}


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    titleView = (AdTitleView *)[[[NSBundle mainBundle] loadNibNamed:@"AdTitleView" owner:self options:nil] objectAtIndex:0];

    titleView.frame = CGRectMake(0, 0, self.view.bounds.size.width, HEADER_HEIGHT);

    titleView.autoresizingMask = UIViewAutoresizingFlexibleWidth;


    [titleView.closeButton addTarget:self action:@selector(cancelPressed) forControlEvents:UIControlEventTouchUpInside];


    [self.view addSubview:titleView];

    

    CGRect rect = CGRectMake(0, HEADER_HEIGHT, self.view.bounds.size.width, self.view.bounds.size.height - HEADER_HEIGHT);

    adlistView = [[TnkAdListView alloc] initWithFrame:rect viewController:self];

    adlistView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    

    [self.view addSubview:adlistView];

}


- (void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    

    [adlistView loadAdList];

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return UIInterfaceOrientationIsPortrait(interfaceOrientation);

}


- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {

    

    if (!self.isViewLoaded || !self.view.window) {

        // 현재 화면에 떠있지 않으면 무시한다.

        return;

    }

    

    [adlistView updateAdList];

}


- (void)viewWillTransitionToSize:(CGSize)size

       withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {

    

    if (!self.isViewLoaded || !self.view.window) {

        // 현재 화면에 떠있지 않으면 무시한다.

        return;

    }

        

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)

     {

         // do whatever

     } completion:^(id<UIViewControllerTransitionCoordinatorContext> context)

     {

         [adlistView updateAdList];

     }];

    

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

}


@end


Comments