-
Notifications
You must be signed in to change notification settings - Fork 3
/
TradPlusAdNativeViewController.m
208 lines (180 loc) · 6.57 KB
/
TradPlusAdNativeViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
//
// TradPlusAdNativeViewController.m
// TradplusADDemo
//
// Created by xuejun on 2021/8/11.
//
#import "TradPlusAdNativeViewController.h"
#import <TradPlusAds/TradPlusAdNative.h>
#import <TradPlusAds/MsCommon.h>
#import "TPNativeTemplate.h"
#import "AutoLayoutNativeTemplate.h"
#import "AutoLayoutNatvieRenderer.h"
@interface TradPlusAdNativeViewController ()<TradPlusADNativeDelegate>
@property (nonatomic,strong)TradPlusAdNative *nativeAd;
@property (nonatomic,weak)IBOutlet UILabel *logLabel;
@property (nonatomic,weak)IBOutlet UIView *adView;
@end
@implementation TradPlusAdNativeViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.nativeAd = [[TradPlusAdNative alloc] init];
self.nativeAd.delegate = self;
[self.nativeAd setAdUnitID:@"E8D198EBD7FDC4F8A725066C82D707E1"];
//资源下载完成后再通知load完成
// self.nativeAd.finishDownload = YES;
//设置模版类型的基础尺寸
// [self.nativeAd setTemplateRenderSize:CGSizeMake(320, 200)];
}
- (IBAction)loadAct:(id)sender
{
//加载
self.logLabel.text = @"开始加载";
[self.nativeAd loadAd];
}
- (IBAction)showAct:(id)sender
{
self.logLabel.text = @"";
//展示前设置自定义透传信息
NSInteger time = [[NSDate date] timeIntervalSince1970];
self.nativeAd.customAdInfo = @{@"act":@"Show",@"time":@(time)};
//直接通过布局Class进行渲染
// [self showWithRenderingViewClass];
//通过自定义Renderer进行渲染
// [self showWithRenderer];
//自定义Renderer支持自动布局
[self showWithAutoLayoutNatvie];
// NSDictionary *adInfo = [self.nativeAd getReadyAdInfo];
// //为空则说明没有广告
// if(adInfo != nil)
// {
//可以通过以下两个字短判断是那个广告源
// MSThirdNetwork thirdNetwork = (MSThirdNetwork)[adInfo[@"network_id"] integerValue];
// NSString *adsource_name = adInfo[@"adsource_name"];
// NSLog(@"%@ %u",adsource_name ,thirdNetwork);
// }
}
//自动布局
- (void)showWithAutoLayoutNatvie
{
TPNativeTemplate *adView = [[NSBundle mainBundle] loadNibNamed:@"AutoLayoutNativeTemplate" owner:self options:nil].lastObject;
//AutoLayoutNatvieRenderer 中实现添加了自动布局相关代码
AutoLayoutNatvieRenderer *nativeRenderer = [[AutoLayoutNatvieRenderer alloc] init];
[nativeRenderer setTitleLable:adView.titleLabel canClick:YES];
[nativeRenderer setTextLable:adView.textLabel canClick:YES];
[nativeRenderer setCtaLable:adView.ctaLabel canClick:YES];
[nativeRenderer setIconView:adView.iconImageView canClick:YES];
[nativeRenderer setMainImageView:adView.mainImageView canClick:YES];
[nativeRenderer setAdChoiceImageView:adView.adChoiceImageView canClick:YES];
[nativeRenderer setAdView:adView canClick:YES];
[self.nativeAd showADWithNativeRenderer:nativeRenderer subview:self.adView sceneId:nil];
}
//通过设置 RenderingViewClass 来渲染
- (void)showWithRenderingViewClass
{
[self.nativeAd showADWithRenderingViewClass:[TPNativeTemplate class] subview:self.adView sceneId:nil];
}
//通过设置 NativeRenderer 来渲染
- (void)showWithRenderer
{
//支持任何UIView 无需支持任何协议
TPNativeTemplate *adView = [[NSBundle mainBundle] loadNibNamed:@"TPNativeTemplate" owner:self options:nil].lastObject;
adView.frame = self.adView.bounds;
[adView layoutIfNeeded];
TradPlusNativeRenderer *nativeRenderer = [[TradPlusNativeRenderer alloc] init];
[nativeRenderer setTitleLable:adView.titleLabel canClick:YES];
[nativeRenderer setTextLable:adView.textLabel canClick:YES];
[nativeRenderer setCtaLable:adView.ctaLabel canClick:YES];
[nativeRenderer setIconView:adView.iconImageView canClick:YES];
[nativeRenderer setMainImageView:adView.mainImageView canClick:YES];
[nativeRenderer setAdChoiceImageView:adView.adChoiceImageView canClick:YES];
[nativeRenderer setAdView:adView canClick:YES];
[self.nativeAd showADWithNativeRenderer:nativeRenderer subview:self.adView sceneId:nil];
}
#pragma mark - TradPlusADNativeDelegate
///部分三方源需要设置rootviewController
- (UIViewController *)viewControllerForPresentingModalView
{
return self;
}
///AD加载完成
- (void)tpNativeAdLoaded:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
self.logLabel.text = @"加载成功";
}
///AD加载失败
- (void)tpNativeAdLoadFailWithError:(NSError *)error
{
NSLog(@"%s \n%@", __FUNCTION__ ,error);
self.logLabel.text = [NSString stringWithFormat:@"加载错误:%ld",(long)error.code];
}
///v7.6.0+新增 开始加载流程
- (void)tpNativeAdStartLoad:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
///当每个广告源开始加载时会都会回调一次。
///v7.6.0+新增。替代原回调接口:tpNativeAdLoadStart:(NSDictionary *)adInfo;
- (void)tpNativeAdOneLayerStartLoad:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
//多缓存情况下,当每个广告源加载成功后会都会回调一次。
- (void)tpNativeAdOneLayerLoaded:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
//多缓存情况下,当每个广告源加载失败后会都会回调一次。
- (void)tpNativeAdOneLayerLoad:(NSDictionary *)adInfo didFailWithError:(NSError *)error
{
NSLog(@"%s \n%@ \n%@", __FUNCTION__ ,adInfo,error);
}
///加载流程全部结束
- (void)tpNativeAdAllLoaded:(BOOL)success
{
NSLog(@"%s \n success %@", __FUNCTION__ ,@(success));
}
///AD展现
- (void)tpNativeAdImpression:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
///AD展现失败
- (void)tpNativeAdShow:(NSDictionary *)adInfo didFailWithError:(NSError *)error
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
self.logLabel.text = [NSString stringWithFormat:@"展现失败:%ld",(long)error.code];
}
///AD被点击
- (void)tpNativeAdClicked:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
///bidding开始
- (void)tpNativeAdBidStart:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
///bidding结束
- (void)tpNativeAdBidEnd:(NSDictionary *)adInfo error:(NSError *)error
{
NSLog(@"%s \n%@ \n error %@", __FUNCTION__ ,adInfo,error);
}
///AD被关闭 部分模版类型会返回相关回调
- (void)tpNativeAdClose:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
///开始播放 v7.8.0+
- (void)tpNativeAdVideoPlayStart:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
///播放结束 v7.8.0+
- (void)tpNativeAdVideoPlayEnd:(NSDictionary *)adInfo
{
NSLog(@"%s \n%@", __FUNCTION__ ,adInfo);
}
@end