5. Native Ad‎ > ‎2) iOS‎ > ‎

NativeAdManager

한번에 다수의 TnkNatvieAd를 조회하여 사용할 수 있도록 TnkNativeAdManager 클래스를 제공합니다.
아래는 TnkNativeAdManager 를 사용하여 TableViewController 에  표시하는 예제입니다.

NativeAdSampleViewController.h

#import <UIKit/UIKit.h>

#import "tnksdk.h"


@interface NativeAdSampleViewController : UITableViewController <TnkNativeAdDelegate, TnkNativeAdManagerDelegate>


@end


NativeAdSampleViewController.m

#import "NativeAdSampleViewController.h"


@interface NativeAdSampleViewController ()


@end


@implementation NativeAdSampleViewController {

    TnkNativeAdManager *nativeAdManager;

}


- (void)viewDidLoad {

    [super viewDidLoad];

    

    

    [TnkNativeAd showItemMap];

    

    nativeAdManager = [[TnkNativeAdManager alloc] initWith:TNK_CPC adStyle:(AD_STYLE_LANDSCAPE | AD_STYLE_ICON) adCount:5];

    nativeAdManager.delegate = self;

    nativeAdManager.managerDelegate = self;

    

    [nativeAdManager prepareAds];

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


#pragma mark - Table view data source


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 10;

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TnkNativeAdCell"];

    

    TnkNativeAd *adItem = [nativeAdManager getAdItemAt:[indexPath row]];

    

    UILabel *titleLabel = (UILabel *)[cell viewWithTag:102];

    UILabel *descLabel = (UILabel *)[cell viewWithTag:103];

    UIImageView *coverImageView = (UIImageView *)[cell viewWithTag:100];

    UIImageView *iconImageView = (UIImageView *)[cell viewWithTag:101];

    

    if (adItem != nil) {

        DLog(@"### ADITEM OK ");

        titleLabel.text = [adItem getTitle];

        descLabel.text = [adItem getDescription];

        coverImageView.image = [adItem getCoverImage];

        iconImageView.image = [adItem getIconImage];

        

        [adItem attachLayout:cell clickView:coverImageView];

    }

    else {

        DLog(@"### ADITEM NULL ");

        titleLabel.text = @"";

        descLabel.text = @"";

        coverImageView.image = nil; // [UIImage imageNamed:@"icon_adlist_tag"];

        iconImageView.image = nil;

    }

    

    [TnkNativeAd showItemMap];

    

    return cell;

}


#pragma mark - NativeAd Delegate


- (void) didNativeAdManagerFail:(int)errCode {

    NSLog(@"### didNativeAdManagerFail %d", errCode);

}


- (void) didNativeAdManagerLoad {

    NSLog(@"### didNativeAdManagerLoad");

    [self.tableView reloadData];

}


- (void) didNativeAdFail:(TnkNativeAd *)ad error:(int)errCode {

    NSLog(@"### didNativeAdFail %d", errCode);

}


- (void) didNativeAdLoad:(TnkNativeAd *)ad {

    NSLog(@"### didNativeAdLoad");

}


- (void) didNativeAdClick:(TnkNativeAd *)ad {

    NSLog(@"### didNativeAdClick");

}


- (void) didNativeAdShow:(TnkNativeAd *)ad {

    NSLog(@"### didNativeAdShow");

}


@end



[NativeAdManager API]

1) 생성자

  - (id) initWith:(NSString *)logicName adStyle:(NSInteger)adStyle adCount:(NSInteger)adCount;


Parameters

 파라메터 명칭 내용
 logicNameDisplay Logic 명칭
 adStyle Native Ad의 형식을 지정합니다. (TnkNativeAd 의 adStyle 참고)
 adCount 조회할 광고 건수를 지정합니다. 실제 전달되는 광고 건수는 이보다 적을 수 있습니다.


2) Manager Delegate 설정하기


 TnkAdManager 를 통하여 광고 목록을 조회할때 조회가 완료되었거나 실패된 시점을 알기 위하여 사용합니다.


@property (nonatomic, weak) id<TnkNativeAdManagerDelegate> managerDelegate;


TnkNativeAdManagerDelegate

@protocol TnkNativeAdManagerDelegate <NSObject>


@optional


- (void) didNativeAdManagerFail:(int)errCode;

- (void) didNativeAdManagerLoad;


@end


3) NativeAd Delegate 설정하기


  @property (nonatomic, weak) id<TnkNativeAdDelegate> delegate;


TnkNativeAd 객체가 화면에 표시되거나 클릭되는 시점을 알기 위하여 설정합니다. 동작은 TnkNativeAd 와 동일하지만 광고 로딩은 TnkNativeAdManager 가 수행하므로 didNativeAdFail:error: 와 didNativeAdLoade: 메소드를 호출되지 않습니다. 


4) 광고 로딩하기


  - (void) prepareAds;


광고 목록을 로딩합니다. 로딩이 완료되면 설정된 TnkNativeAdManagerDelegate의 didNativeManagerLoad 가 호출되고 로딩이 실패하면 didNativeManagerFail: 이 호출됩니다.


5) 광고 가져오기


  - (TnkNativeAd *) nextAdItem;

  광고 로딩이 완료되면 nextAdItem 을 호출하여 TnkNativeAd 객체를 가져올 수 있습니다. 호출할때마다 새로운 TnkNativeAd 객체를 반환합니다.
  호출 수의 제한은 없으며 실제 로딩된 광고수보다 많이 호출되는 경우 로딩된 광고들이 다시 제공됩니다.

  - (TnkNativeAd *) getAdItemAt:(NSInteger)index;

 index 번째의 TnkNativeAd 객체를 반환합니다. index 수에 제약은 없으며 index 수가 실제 로딩된 광고수(N) 보다 클 경우 modular 연산을 통하여 광고 객체를 반환합니다.
  - (NSUInteger) getUniqueAdCount;
 prepareAds 를 통하여 실제 로딩된 광고수를 반환합니다.
Comments