1212
1313@implementation RNDFPBannerView {
1414 DFPBannerView *_bannerView;
15- RCTEventDispatcher *_eventDispatcher;
1615}
1716
18- - (instancetype )initWithEventDispatcher : (RCTEventDispatcher *)eventDispatcher
19- {
20- if ((self = [super initWithFrame: CGRectZero])) {
21- _eventDispatcher = eventDispatcher;
22- }
23- return self;
24- }
25-
26- RCT_NOT_IMPLEMENTED (- (instancetype )initWithFrame:(CGRect)frame)
27- RCT_NOT_IMPLEMENTED(- (instancetype )initWithCoder:coder)
28-
2917- (void )insertReactSubview : (UIView *)view atIndex : (NSInteger )atIndex
3018{
3119 RCTLogError (@" AdMob Banner cannot have any subviews" );
@@ -66,13 +54,12 @@ -(void)loadBanner {
6654 _bannerView = [[DFPBannerView alloc ] initWithAdSize: size];
6755 [_bannerView setAppEventDelegate: self ]; // added Admob event dispatch listener
6856 if (!CGRectEqualToRect (self.bounds , _bannerView.bounds )) {
69- [_eventDispatcher
70- sendInputEventWithName: @" onSizeChange"
71- body: @{
72- @" target" : self.reactTag ,
57+ if (self.onSizeChange ) {
58+ self.onSizeChange (@{
7359 @" width" : [NSNumber numberWithFloat: _bannerView.bounds.size.width],
7460 @" height" : [NSNumber numberWithFloat: _bannerView.bounds.size.height]
75- }];
61+ });
62+ }
7663 }
7764 _bannerView.delegate = self;
7865 _bannerView.adUnitID = _adUnitID;
@@ -97,7 +84,9 @@ - (void)adView:(DFPBannerView *)banner
9784 NSLog (@" Received app event (%@ , %@ )" , name, info);
9885 NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc ] init ];
9986 myDictionary[name] = info;
100- [_eventDispatcher sendInputEventWithName: @" onAdmobDispatchAppEvent" body: @{ @" target" : self.reactTag , name: info }];
87+ if (self.onAdmobDispatchAppEvent ) {
88+ self.onAdmobDispatchAppEvent (@{ name: info });
89+ }
10190}
10291
10392- (void )setBannerSize : (NSString *)bannerSize
@@ -111,8 +100,6 @@ - (void)setBannerSize:(NSString *)bannerSize
111100 }
112101}
113102
114-
115-
116103- (void )setAdUnitID : (NSString *)adUnitID
117104{
118105 if (![adUnitID isEqual: _adUnitID]) {
@@ -149,41 +136,52 @@ -(void)layoutSubviews
149136
150137- (void )removeFromSuperview
151138{
152- _eventDispatcher = nil ;
153139 [super removeFromSuperview ];
154140}
155141
156142// / Tells the delegate an ad request loaded an ad.
157143- (void )adViewDidReceiveAd : (DFPBannerView *)adView {
158- [_eventDispatcher sendInputEventWithName: @" onAdViewDidReceiveAd" body: @{ @" target" : self.reactTag }];
144+ if (self.onAdViewDidReceiveAd ) {
145+ self.onAdViewDidReceiveAd (@{});
146+ }
159147}
160148
161149// / Tells the delegate an ad request failed.
162150- (void )adView : (DFPBannerView *)adView
163151didFailToReceiveAdWithError : (GADRequestError *)error {
164- [_eventDispatcher sendInputEventWithName: @" onDidFailToReceiveAdWithError" body: @{ @" target" : self.reactTag , @" error" : [error localizedDescription ] }];
152+ if (self.onDidFailToReceiveAdWithError ) {
153+ self.onDidFailToReceiveAdWithError (@{ @" error" : [error localizedDescription ] });
154+ }
165155}
166156
167157// / Tells the delegate that a full screen view will be presented in response
168158// / to the user clicking on an ad.
169159- (void )adViewWillPresentScreen : (DFPBannerView *)adView {
170- [_eventDispatcher sendInputEventWithName: @" onAdViewWillPresentScreen" body: @{ @" target" : self.reactTag }];
160+ if (self.onAdViewWillPresentScreen ) {
161+ self.onAdViewWillPresentScreen (@{});
162+ }
171163}
172164
173165// / Tells the delegate that the full screen view will be dismissed.
174166- (void )adViewWillDismissScreen : (DFPBannerView *)adView {
175- [_eventDispatcher sendInputEventWithName: @" onAdViewWillDismissScreen" body: @{ @" target" : self.reactTag }];
167+ if (self.onAdViewWillDismissScreen ) {
168+ self.onAdViewWillDismissScreen (@{});
169+ }
176170}
177171
178172// / Tells the delegate that the full screen view has been dismissed.
179173- (void )adViewDidDismissScreen : (DFPBannerView *)adView {
180- [_eventDispatcher sendInputEventWithName: @" onAdViewDidDismissScreen" body: @{ @" target" : self.reactTag }];
174+ if (self.onAdViewDidDismissScreen ) {
175+ self.onAdViewDidDismissScreen (@{});
176+ }
181177}
182178
183179// / Tells the delegate that a user click will open another app (such as
184180// / the App Store), backgrounding the current app.
185181- (void )adViewWillLeaveApplication : (DFPBannerView *)adView {
186- [_eventDispatcher sendInputEventWithName: @" onAdViewWillLeaveApplication" body: @{ @" target" : self.reactTag }];
182+ if (self.onAdViewWillLeaveApplication ) {
183+ self.onAdViewWillLeaveApplication (@{});
184+ }
187185}
188186
189187@end
0 commit comments