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
|