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

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 를 통하여 실제 로딩된 광고수를 반환합니다.