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