UNPKG

2.25 kBPlain TextView Raw
1#import <EXAdsFacebook/EXBannerView.h>
2#import <FBAudienceNetwork/FBAudienceNetwork.h>
3#import <UMCore/UMUtilitiesInterface.h>
4
5@interface EXBannerView () <FBAdViewDelegate>
6
7@property (nonatomic, strong) FBAdView *adView;
8@property (nonatomic, weak) UMModuleRegistry *moduleRegistry;
9
10@end
11
12@implementation EXBannerView
13
14- (instancetype)initWithModuleRegistry:(UMModuleRegistry *)moduleRegistry
15{
16 if (self = [super init]) {
17 _moduleRegistry = moduleRegistry;
18 }
19 return self;
20}
21
22- (void)setSize:(NSNumber *)size
23{
24 _size = size;
25 [self createViewIfCan];
26}
27
28- (void)setPlacementId:(NSString *)placementId
29{
30 _placementId = placementId;
31 [self createViewIfCan];
32}
33
34// Initialise BannerAdView as soon as all the props are set
35- (void)createViewIfCan
36{
37 if (!_placementId || !_size) {
38 return;
39 }
40
41 if (_adView) {
42 [_adView removeFromSuperview];
43 }
44
45 FBAdSize fbAdSize = [self fbAdSizeForHeight:_size];
46 UIViewController *rootViewController = [[_moduleRegistry getModuleImplementingProtocol:@protocol(UMUtilitiesInterface)] currentViewController];
47 FBAdView *adView = [[FBAdView alloc] initWithPlacementID:_placementId
48 adSize:fbAdSize
49 rootViewController:rootViewController];
50
51 adView.frame = CGRectMake(0, 0, adView.bounds.size.width, adView.bounds.size.height);
52 adView.delegate = self;
53
54 [adView loadAd];
55
56 [self addSubview:adView];
57
58 _adView = adView;
59}
60
61- (FBAdSize)fbAdSizeForHeight:(NSNumber *)height
62{
63 switch ([height intValue]) {
64 case 90:
65 return kFBAdSizeHeight90Banner;
66 case 250:
67 return kFBAdSizeHeight250Rectangle;
68 case 50:
69 default:
70 return kFBAdSizeHeight50Banner;
71 }
72}
73
74# pragma mark - FBAdViewDelegate
75
76- (void)adViewDidClick:(FBAdView *)adView
77{
78 if (_onAdPress) {
79 _onAdPress(nil);
80 }
81}
82
83- (void)adView:(FBAdView *)adView didFailWithError:(NSError *)error
84{
85 if (_onAdError) {
86 _onAdError(@{ @"message": error.description, @"userInfo": error.userInfo });
87 } else {
88 UMLogError(@"%@: %@", error.localizedDescription, error.userInfo);
89 }
90}
91
92- (void)adViewDidFinishHandlingClick:(FBAdView *)adView {}
93- (void)adViewWillLogImpression:(FBAdView *)adView {}
94
95@end