forked from fyber-engineering/mopub-ios-mediation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOguryBannerCustomEvent.m
141 lines (98 loc) · 5.18 KB
/
OguryBannerCustomEvent.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
#import "OguryBannerCustomEvent.h"
#import <Foundation/Foundation.h>
#import <OguryAds/OguryAds.h>
#import "OguryAdapterConfiguration.h"
#if __has_include("MoPub.h")
#import "MPError.h"
#import "MPLogging.h"
#endif
@interface OguryBannerCustomEvent () <OguryAdsBannerDelegate>
#pragma mark - Properties
@property (nonatomic, copy) NSString *adUnitId;
@property (nonatomic, strong) OguryAdsBanner *banner;
@end
@implementation OguryBannerCustomEvent
@dynamic adUnitId;
#pragma mark - Methods
- (void)dealloc {
self.banner.bannerDelegate = nil;
}
- (void)requestAdWithSize:(CGSize)size adapterInfo:(NSDictionary *)info adMarkup:(NSString *)adMarkup {
self.adUnitId = info[kOguryConfigurationAdUnitId];
if (!self.adUnitId || [self.adUnitId isEqualToString:@""]) {
NSError *error = [NSError errorWithCode:MOPUBErrorAdapterInvalid localizedDescription:@"Invalid ad unit ID for Ogury received. Failing ad request"];
MPLogAdEvent([MPLogEvent adShowFailedForAdapter:NSStringFromClass([self class]) error:error], @"");
[self.delegate inlineAdAdapter:self didFailToLoadAdWithError:error];
return;
}
OguryAdsBannerSize *sizeOguryBanner = [OguryBannerCustomEvent getOgurySize:size];
if (!sizeOguryBanner) {
NSError *error = [NSError errorWithCode:MOPUBErrorAdapterInvalid localizedDescription:@"Invalid banner size received. Ogury only supports 320x50 and 300x250 sizes. Failing ad request"];
MPLogAdEvent([MPLogEvent adShowFailedForAdapter:NSStringFromClass([self class]) error:error], self.adUnitId);
[self.delegate inlineAdAdapter:self didFailToLoadAdWithError:error];
return;
}
[OguryAdapterConfiguration applyTransparencyAndConsentStatusWithParameters:info];
[OguryAdapterConfiguration updateInitializationParameters:info];
self.banner = [[OguryAdsBanner alloc] initWithAdUnitID:self.adUnitId];
self.banner.bannerDelegate = self;
self.banner.frame = CGRectMake(0, 0, size.width, size.height);
[self.banner loadWithSize:sizeOguryBanner];
MPLogAdEvent([MPLogEvent adLoadAttemptForAdapter:NSStringFromClass([self class]) dspCreativeId:nil dspName:nil], self.adUnitId);
}
+ (OguryAdsBannerSize *)getOgurySize:(CGSize)size {
if ([OguryBannerCustomEvent size:size canInclude:[[OguryAdsBannerSize small_banner_320x50] getSize]]) {
return [OguryAdsBannerSize small_banner_320x50];
}
if ([OguryBannerCustomEvent size:size canInclude:[[OguryAdsBannerSize mpu_300x250] getSize]]) {
return [OguryAdsBannerSize mpu_300x250];
}
return nil;
}
- (BOOL)enableAutomaticImpressionAndClickTracking {
return NO;
}
+ (BOOL)size:(CGSize)sizeMopubBanner canInclude:(CGSize)sizeOguryBanner {
double maxRatio = 1.5;
return sizeMopubBanner.height <= sizeOguryBanner.height * maxRatio && sizeMopubBanner.width <= sizeOguryBanner.width * maxRatio;
}
#pragma mark - OguryAdsBannerDelegate
- (void)oguryAdsBannerAdAvailable:(OguryAdsBanner *)bannerAds {
}
- (void)oguryAdsBannerAdClicked:(OguryAdsBanner *)bannerAds {
MPLogAdEvent([MPLogEvent adTappedForAdapter:NSStringFromClass(self.class)], self.adUnitId);
[self.delegate inlineAdAdapterWillBeginUserAction:self];
[self.delegate inlineAdAdapterDidTrackClick:self];
}
- (void)oguryAdsBannerAdClosed:(OguryAdsBanner *)bannerAds {
[self.delegate inlineAdAdapterDidEndUserAction:self];
}
- (void)oguryAdsBannerAdDisplayed:(OguryAdsBanner *)bannerAds {
MPLogAdEvent([MPLogEvent adShowAttemptForAdapter:NSStringFromClass(self.class)], self.adUnitId);
MPLogAdEvent([MPLogEvent adDidAppearForAdapter:NSStringFromClass([self class])], self.adUnitId);
MPLogAdEvent([MPLogEvent adShowSuccessForAdapter:NSStringFromClass([self class])], self.adUnitId);
[self.delegate inlineAdAdapterDidTrackImpression:self];
}
- (void)oguryAdsBannerAdError:(OguryAdsErrorType)errorType forBanner:(OguryAdsBanner *)bannerAds {
NSError *error = [OguryAdapterConfiguration MoPubErrorFromOguryError:errorType];
MPLogAdEvent([MPLogEvent adLoadFailedForAdapter:NSStringFromClass(self.class) error:error], self.adUnitId);
[self.delegate inlineAdAdapter:self didFailToLoadAdWithError:error];
}
- (void)oguryAdsBannerAdLoaded:(OguryAdsBanner *)bannerAds {
MPLogAdEvent([MPLogEvent adLoadSuccessForAdapter:NSStringFromClass([self class])], self.adUnitId);
[self.delegate inlineAdAdapter:self didLoadAdWithAdView:bannerAds];
}
- (void)oguryAdsBannerAdNotAvailable:(OguryAdsBanner *)bannerAds {
NSError *error = [NSError errorWithCode:MOPUBErrorNoInventory];
MPLogAdEvent([MPLogEvent adLoadFailedForAdapter:NSStringFromClass(self.class) error:error], self.adUnitId);
[self.delegate inlineAdAdapter:self didFailToLoadAdWithError:error];
}
- (void)oguryAdsBannerAdNotLoaded:(OguryAdsBanner *)bannerAds {
NSError *error = [NSError errorWithCode:MOPUBErrorAdapterFailedToLoadAd];
MPLogAdEvent([MPLogEvent adLoadFailedForAdapter:NSStringFromClass(self.class) error:error], self.adUnitId);
[self.delegate inlineAdAdapter:self didFailToLoadAdWithError:error];
}
- (void)oguryAdsBannerAdOnAdImpression {
[self.delegate inlineAdAdapterDidTrackImpression:self];
}
@end