react-native-google-mobile-ads 6.3.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/RNGoogleMobileAds.podspec +1 -1
  2. package/android/build.gradle +23 -3
  3. package/android/src/main/AndroidManifest.xml +6 -0
  4. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsAdHelper.kt +106 -0
  5. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsAppOpenModule.kt +74 -0
  6. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsFullScreenAdModule.kt +245 -0
  7. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsInterstitialModule.kt +74 -0
  8. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedInterstitialModule.kt +74 -0
  9. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedModule.kt +74 -0
  10. package/docs/displaying-ads.mdx +1 -1
  11. package/docs/european-user-consent.mdx +3 -2
  12. package/docs/index.mdx +5 -1
  13. package/docs/migrating-to-v6.mdx +2 -2
  14. package/ios/RNGoogleMobileAds/RNGoogleMobileAds-Bridging-Header.h +5 -0
  15. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.m +13 -68
  16. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.swift +82 -0
  17. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenAd.swift +208 -0
  18. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.swift +72 -0
  19. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.m +13 -107
  20. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.swift +119 -0
  21. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.m +13 -144
  22. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.swift +81 -0
  23. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.m +13 -143
  24. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.swift +81 -0
  25. package/ios_config.sh +10 -0
  26. package/lib/commonjs/version.js +1 -1
  27. package/lib/commonjs/version.js.map +1 -1
  28. package/lib/module/version.js +1 -1
  29. package/lib/module/version.js.map +1 -1
  30. package/lib/typescript/index.d.ts +1 -1
  31. package/lib/typescript/version.d.ts +1 -1
  32. package/package.json +4 -4
  33. package/src/version.ts +1 -1
  34. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsAppOpenModule.java +0 -159
  35. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsInterstitialModule.java +0 -178
  36. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedInterstitialModule.java +0 -199
  37. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedModule.java +0 -176
  38. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.h +0 -29
  39. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.h +0 -33
  40. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.m +0 -72
  41. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.h +0 -25
  42. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.h +0 -25
  43. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.h +0 -25
@@ -1,4 +1,3 @@
1
- //
2
1
  /**
3
2
  * Copyright (c) 2016-present Invertase Limited & Contributors
4
3
  *
@@ -16,121 +15,28 @@
16
15
  *
17
16
  */
18
17
 
19
- #import <React/RCTUtils.h>
18
+ #import <React/RCTBridgeModule.h>
20
19
 
21
- #import "RNGoogleMobileAdsCommon.h"
22
- #import "RNGoogleMobileAdsFullScreenContentDelegate.h"
23
- #import "RNGoogleMobileAdsInterstitialModule.h"
24
- #import "common/RNSharedUtils.h"
25
-
26
- static __strong NSMutableDictionary *interstitialMap;
27
- static __strong NSMutableDictionary *interstitialDelegateMap;
28
-
29
- @implementation RNGoogleMobileAdsInterstitialModule
30
- #pragma mark -
31
- #pragma mark Module Setup
32
-
33
- RCT_EXPORT_MODULE();
20
+ @interface RCT_EXTERN_MODULE (RNGoogleMobileAdsInterstitialModule, NSObject)
34
21
 
35
22
  - (dispatch_queue_t)methodQueue {
36
23
  return dispatch_get_main_queue();
37
24
  }
38
25
 
39
- - (id)init {
40
- self = [super init];
41
- static dispatch_once_t onceToken;
42
- dispatch_once(&onceToken, ^{
43
- interstitialMap = [[NSMutableDictionary alloc] init];
44
- interstitialDelegateMap = [[NSMutableDictionary alloc] init];
45
- });
46
- return self;
47
- }
48
-
49
26
  + (BOOL)requiresMainQueueSetup {
50
27
  return YES;
51
28
  }
52
29
 
53
- - (void)dealloc {
54
- [self invalidate];
55
- }
56
-
57
- - (void)invalidate {
58
- for (NSNumber *id in [interstitialMap allKeys]) {
59
- [interstitialMap removeObjectForKey:id];
60
- [interstitialDelegateMap removeObjectForKey:id];
61
- }
62
- }
63
-
64
- #pragma mark -
65
- #pragma mark Google Mobile Ads Methods
66
-
67
- RCT_EXPORT_METHOD(interstitialLoad
68
- : (nonnull NSNumber *)requestId
69
- : (NSString *)adUnitId
70
- : (NSDictionary *)adRequestOptions) {
71
- GAMRequest *request = [RNGoogleMobileAdsCommon buildAdRequest:adRequestOptions];
72
-
73
- void (^completionhandler)(GADInterstitialAd *, NSError *) = ^(GADInterstitialAd *ad,
74
- NSError *error) {
75
- if (error) {
76
- NSDictionary *codeAndMessage = [RNGoogleMobileAdsCommon getCodeAndMessageFromAdError:error];
77
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL
78
- requestId:requestId
79
- type:GOOGLE_MOBILE_ADS_EVENT_ERROR
80
- adUnitId:adUnitId
81
- error:codeAndMessage
82
- data:nil];
83
- return;
84
- }
85
- GADInterstitialAd *interstitial = ad;
86
- RNGoogleMobileAdsFullScreenContentDelegate *fullScreenContentDelegate =
87
- [[RNGoogleMobileAdsFullScreenContentDelegate alloc] init];
88
- fullScreenContentDelegate.sendAdEvent = GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL;
89
- fullScreenContentDelegate.requestId = requestId;
90
- fullScreenContentDelegate.adUnitId = ad.adUnitID;
91
- interstitial.fullScreenContentDelegate = fullScreenContentDelegate;
92
- if ([interstitial class] == [GAMInterstitialAd class]) {
93
- ((GAMInterstitialAd *)interstitial).appEventDelegate = fullScreenContentDelegate;
94
- }
95
- interstitialMap[requestId] = interstitial;
96
- interstitialDelegateMap[requestId] = fullScreenContentDelegate;
97
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL
98
- requestId:requestId
99
- type:GOOGLE_MOBILE_ADS_EVENT_LOADED
100
- adUnitId:ad.adUnitID
101
- error:nil
102
- data:nil];
103
- };
104
-
105
- if ([RNGoogleMobileAdsCommon isAdManagerUnit:adUnitId]) {
106
- [GAMInterstitialAd loadWithAdManagerAdUnitID:adUnitId
107
- request:request
108
- completionHandler:completionhandler];
109
- } else {
110
- [GADInterstitialAd loadWithAdUnitID:adUnitId
111
- request:request
112
- completionHandler:completionhandler];
113
- }
114
- }
115
-
116
- RCT_EXPORT_METHOD(interstitialShow
117
- : (nonnull NSNumber *)requestId
118
- : (NSString *)adUnitId
119
- : (NSDictionary *)showOptions
120
- : (RCTPromiseResolveBlock)resolve
121
- : (RCTPromiseRejectBlock)reject) {
122
- GADInterstitialAd *interstitial = interstitialMap[requestId];
123
- if (interstitial) {
124
- [interstitial presentFromRootViewController:RNGoogleMobileAdsCommon.currentViewController];
125
- resolve([NSNull null]);
126
- } else {
127
- [RNSharedUtils
128
- rejectPromiseWithUserInfo:reject
129
- userInfo:[@{
130
- @"code" : @"not-ready",
131
- @"message" : @"Interstitial ad attempted to show but was not ready.",
132
- } mutableCopy]];
133
- }
134
- }
30
+ RCT_EXTERN_METHOD(interstitialLoad
31
+ : (nonnull NSNumber *)requestId forAdUnitId
32
+ : (nonnull NSString *)adUnitId withAdRequestOptions
33
+ : (nonnull NSDictionary *)adRequestOptions)
34
+
35
+ RCT_EXTERN_METHOD(interstitialShow
36
+ : (nonnull NSNumber *)requestId forAdUnitId
37
+ : (nonnull NSString *)adUnitId withShowOptions
38
+ : (NSDictionary *)showOptions withResolve
39
+ : (RCTPromiseResolveBlock)resolve withReject
40
+ : (RCTPromiseRejectBlock)reject)
135
41
 
136
42
  @end
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ import Foundation
19
+ import GoogleMobileAds
20
+
21
+ @objc(RNGoogleMobileAdsInterstitialModule)
22
+ class RNGoogleMobileAdsInterstitialModule: NSObject {
23
+ let ad = RNGoogleMobileAdsInterstitialAd()
24
+ let gamAd = RNGoogleMobileAdsGAMInterstitialAd()
25
+
26
+ deinit {
27
+ invalidate()
28
+ }
29
+
30
+ @objc
31
+ func invalidate() {
32
+ ad.invalidate()
33
+ gamAd.invalidate()
34
+ }
35
+
36
+ @objc(interstitialLoad:forAdUnitId:withAdRequestOptions:)
37
+ func interstitialLoad(
38
+ requestId: NSNumber,
39
+ adUnitId: String,
40
+ adRequestOptions: Dictionary<String, Any>
41
+ ) {
42
+ if (RNGoogleMobileAdsCommon.isAdManagerUnit(adUnitId)) {
43
+ gamAd.load(
44
+ requestId: requestId.intValue,
45
+ adUnitId: adUnitId,
46
+ adRequestOptions: adRequestOptions
47
+ )
48
+ } else {
49
+ ad.load(
50
+ requestId: requestId.intValue,
51
+ adUnitId: adUnitId,
52
+ adRequestOptions: adRequestOptions
53
+ )
54
+ }
55
+ }
56
+
57
+ @objc(interstitialShow:forAdUnitId:withShowOptions:withResolve:withReject:)
58
+ func interstitialShow(
59
+ requestId: NSNumber,
60
+ adUnitId: String,
61
+ showOptions: Dictionary<String, Any>,
62
+ resolve: RCTPromiseResolveBlock?,
63
+ reject: RCTPromiseRejectBlock?
64
+ ) {
65
+ if (RNGoogleMobileAdsCommon.isAdManagerUnit(adUnitId)) {
66
+ gamAd.show(
67
+ requestId: requestId.intValue,
68
+ adUnitId: adUnitId,
69
+ showOptions: showOptions,
70
+ resolve: resolve,
71
+ reject: reject
72
+ )
73
+ } else {
74
+ ad.show(
75
+ requestId: requestId.intValue,
76
+ adUnitId: adUnitId,
77
+ showOptions: showOptions,
78
+ resolve: resolve,
79
+ reject: reject
80
+ )
81
+ }
82
+ }
83
+
84
+ class RNGoogleMobileAdsInterstitialAd: RNGoogleMobileAdsFullScreenAd<GADInterstitialAd> {
85
+ override func getAdEventName() -> String {
86
+ return GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL
87
+ }
88
+
89
+ override func loadAd(
90
+ adUnitId: String,
91
+ adRequest: GAMRequest,
92
+ completionHandler: @escaping (GADInterstitialAd?, Error?) -> ()
93
+ ) {
94
+ GADInterstitialAd.load(
95
+ withAdUnitID: adUnitId,
96
+ request: adRequest,
97
+ completionHandler: completionHandler
98
+ )
99
+ }
100
+ }
101
+
102
+ class RNGoogleMobileAdsGAMInterstitialAd: RNGoogleMobileAdsFullScreenAd<GAMInterstitialAd> {
103
+ override func getAdEventName() -> String {
104
+ return GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL
105
+ }
106
+
107
+ override func loadAd(
108
+ adUnitId: String,
109
+ adRequest: GAMRequest,
110
+ completionHandler: @escaping (GAMInterstitialAd?, Error?) -> ()
111
+ ) {
112
+ GAMInterstitialAd.load(
113
+ withAdManagerAdUnitID: adUnitId,
114
+ request: adRequest,
115
+ completionHandler: completionHandler
116
+ )
117
+ }
118
+ }
119
+ }
@@ -1,4 +1,3 @@
1
- //
2
1
  /**
3
2
  * Copyright (c) 2016-present Invertase Limited & Contributors
4
3
  *
@@ -16,158 +15,28 @@
16
15
  *
17
16
  */
18
17
 
19
- #import <React/RCTUtils.h>
18
+ #import <React/RCTBridgeModule.h>
20
19
 
21
- #import "RNGoogleMobileAdsCommon.h"
22
- #import "RNGoogleMobileAdsFullScreenContentDelegate.h"
23
- #import "RNGoogleMobileAdsRewardedInterstitialModule.h"
24
- #import "common/RNSharedUtils.h"
25
-
26
- static __strong NSMutableDictionary *rewardedInterstitialMap;
27
- static __strong NSMutableDictionary *rewardedInterstitialDelegateMap;
28
-
29
- @implementation RNGoogleMobileAdsRewardedInterstitialModule
30
- #pragma mark -
31
- #pragma mark Module Setup
32
-
33
- RCT_EXPORT_MODULE();
20
+ @interface RCT_EXTERN_MODULE (RNGoogleMobileAdsRewardedInterstitialModule, NSObject)
34
21
 
35
22
  - (dispatch_queue_t)methodQueue {
36
23
  return dispatch_get_main_queue();
37
24
  }
38
25
 
39
- - (id)init {
40
- self = [super init];
41
- static dispatch_once_t onceToken;
42
- dispatch_once(&onceToken, ^{
43
- rewardedInterstitialMap = [[NSMutableDictionary alloc] init];
44
- rewardedInterstitialDelegateMap = [[NSMutableDictionary alloc] init];
45
- });
46
- return self;
47
- }
48
-
49
26
  + (BOOL)requiresMainQueueSetup {
50
27
  return YES;
51
28
  }
52
29
 
53
- - (void)dealloc {
54
- [self invalidate];
55
- }
56
-
57
- - (void)invalidate {
58
- for (NSNumber *id in [rewardedInterstitialMap allKeys]) {
59
- [rewardedInterstitialMap removeObjectForKey:id];
60
- [rewardedInterstitialDelegateMap removeObjectForKey:id];
61
- }
62
- }
63
-
64
- #pragma mark -
65
- #pragma mark Google Mobile Ads Methods
66
-
67
- RCT_EXPORT_METHOD(rewardedInterstitialLoad
68
- : (nonnull NSNumber *)requestId
69
- : (NSString *)adUnitId
70
- : (NSDictionary *)adRequestOptions) {
71
- [GADRewardedInterstitialAd
72
- loadWithAdUnitID:adUnitId
73
- request:[RNGoogleMobileAdsCommon buildAdRequest:adRequestOptions]
74
- completionHandler:^(GADRewardedInterstitialAd *ad, NSError *error) {
75
- if (error) {
76
- NSDictionary *codeAndMessage =
77
- [RNGoogleMobileAdsCommon getCodeAndMessageFromAdError:error];
78
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_REWARDED_INTERSTITIAL
79
- requestId:requestId
80
- type:GOOGLE_MOBILE_ADS_EVENT_ERROR
81
- adUnitId:adUnitId
82
- error:codeAndMessage
83
- data:nil];
84
- return;
85
- }
86
- GADRewardedInterstitialAd *rewardedInterstitialAd = ad;
87
-
88
- NSDictionary *serverSideVerificationOptions =
89
- [adRequestOptions objectForKey:@"serverSideVerificationOptions"];
90
-
91
- if (serverSideVerificationOptions != nil) {
92
- GADServerSideVerificationOptions *options =
93
- [[GADServerSideVerificationOptions alloc] init];
94
-
95
- NSString *userId = [serverSideVerificationOptions valueForKey:@"userId"];
96
-
97
- if (userId != nil) {
98
- options.userIdentifier = userId;
99
- }
100
-
101
- NSString *customData = [serverSideVerificationOptions valueForKey:@"customData"];
102
-
103
- if (customData != nil) {
104
- options.customRewardString = customData;
105
- }
106
-
107
- [rewardedInterstitialAd setServerSideVerificationOptions:options];
108
- }
109
-
110
- RNGoogleMobileAdsFullScreenContentDelegate *fullScreenContentDelegate =
111
- [[RNGoogleMobileAdsFullScreenContentDelegate alloc] init];
112
- fullScreenContentDelegate.sendAdEvent = GOOGLE_MOBILE_ADS_EVENT_REWARDED_INTERSTITIAL;
113
- fullScreenContentDelegate.requestId = requestId;
114
- fullScreenContentDelegate.adUnitId = ad.adUnitID;
115
- rewardedInterstitialAd.fullScreenContentDelegate = fullScreenContentDelegate;
116
- rewardedInterstitialMap[requestId] = rewardedInterstitialAd;
117
- rewardedInterstitialDelegateMap[requestId] = fullScreenContentDelegate;
118
- GADAdReward *reward = rewardedInterstitialAd.adReward;
119
- NSMutableDictionary *data = [NSMutableDictionary dictionary];
120
- if (reward.type != nil) {
121
- [data setValue:reward.type forKey:@"type"];
122
- }
123
- if (reward.amount != nil) {
124
- [data setValue:reward.amount forKey:@"amount"];
125
- }
126
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_REWARDED_INTERSTITIAL
127
- requestId:requestId
128
- type:GOOGLE_MOBILE_ADS_EVENT_REWARDED_LOADED
129
- adUnitId:ad.adUnitID
130
- error:nil
131
- data:data];
132
- }];
133
- }
134
-
135
- RCT_EXPORT_METHOD(rewardedInterstitialShow
136
- : (nonnull NSNumber *)requestId
137
- : (NSString *)adUnitId
138
- : (NSDictionary *)showOptions
139
- : (RCTPromiseResolveBlock)resolve
140
- : (RCTPromiseRejectBlock)reject) {
141
- GADRewardedInterstitialAd *rewardedInterstitialAd = rewardedInterstitialMap[requestId];
142
-
143
- if (rewardedInterstitialAd) {
144
- [rewardedInterstitialAd
145
- presentFromRootViewController:RNGoogleMobileAdsCommon.currentViewController
146
- userDidEarnRewardHandler:^{
147
- GADAdReward *reward = rewardedInterstitialAd.adReward;
148
- NSMutableDictionary *data = [NSMutableDictionary dictionary];
149
- if (reward.type != nil) {
150
- [data setValue:reward.type forKey:@"type"];
151
- }
152
- if (reward.amount != nil) {
153
- [data setValue:reward.amount forKey:@"amount"];
154
- }
155
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_REWARDED_INTERSTITIAL
156
- requestId:requestId
157
- type:GOOGLE_MOBILE_ADS_EVENT_REWARDED_EARNED_REWARD
158
- adUnitId:rewardedInterstitialAd.adUnitID
159
- error:nil
160
- data:data];
161
- }];
162
- } else {
163
- [RNSharedUtils
164
- rejectPromiseWithUserInfo:reject
165
- userInfo:[@{
166
- @"code" : @"not-ready",
167
- @"message" :
168
- @"Rewarded Interstitial ad attempted to show but was not ready.",
169
- } mutableCopy]];
170
- }
171
- }
30
+ RCT_EXTERN_METHOD(rewardedInterstitialLoad
31
+ : (nonnull NSNumber *)requestId forAdUnitId
32
+ : (nonnull NSString *)adUnitId withAdRequestOptions
33
+ : (nonnull NSDictionary *)adRequestOptions)
34
+
35
+ RCT_EXTERN_METHOD(rewardedInterstitialShow
36
+ : (nonnull NSNumber *)requestId forAdUnitId
37
+ : (nonnull NSString *)adUnitId withShowOptions
38
+ : (NSDictionary *)showOptions withResolve
39
+ : (RCTPromiseResolveBlock)resolve withReject
40
+ : (RCTPromiseRejectBlock)reject)
172
41
 
173
42
  @end
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ import Foundation
19
+ import GoogleMobileAds
20
+
21
+ @objc(RNGoogleMobileAdsRewardedInterstitialModule)
22
+ class RNGoogleMobileAdsRewardedInterstitialModule: NSObject {
23
+ let ad = RNGoogleMobileAdsRewardedInterstitialAd()
24
+
25
+ deinit {
26
+ invalidate()
27
+ }
28
+
29
+ @objc
30
+ func invalidate() {
31
+ ad.invalidate()
32
+ }
33
+
34
+ @objc(rewardedInterstitialLoad:forAdUnitId:withAdRequestOptions:)
35
+ func rewardedInterstitialLoad(
36
+ requestId: NSNumber,
37
+ adUnitId: String,
38
+ adRequestOptions: Dictionary<String, Any>
39
+ ) {
40
+ ad.load(
41
+ requestId: requestId.intValue,
42
+ adUnitId: adUnitId,
43
+ adRequestOptions: adRequestOptions
44
+ )
45
+ }
46
+
47
+ @objc(rewardedInterstitialShow:forAdUnitId:withShowOptions:withResolve:withReject:)
48
+ func rewardedInterstitialShow(
49
+ requestId: NSNumber,
50
+ adUnitId: String,
51
+ showOptions: Dictionary<String, Any>,
52
+ resolve: RCTPromiseResolveBlock?,
53
+ reject: RCTPromiseRejectBlock?
54
+ ) {
55
+ ad.show(
56
+ requestId: requestId.intValue,
57
+ adUnitId: adUnitId,
58
+ showOptions: showOptions,
59
+ resolve: resolve,
60
+ reject: reject
61
+ )
62
+ }
63
+
64
+ class RNGoogleMobileAdsRewardedInterstitialAd: RNGoogleMobileAdsFullScreenAd<GADRewardedInterstitialAd> {
65
+ override func getAdEventName() -> String {
66
+ return GOOGLE_MOBILE_ADS_EVENT_REWARDED_INTERSTITIAL
67
+ }
68
+
69
+ override func loadAd(
70
+ adUnitId: String,
71
+ adRequest: GAMRequest,
72
+ completionHandler: @escaping (GADRewardedInterstitialAd?, Error?) -> ()
73
+ ) {
74
+ GADRewardedInterstitialAd.load(
75
+ withAdUnitID: adUnitId,
76
+ request: adRequest,
77
+ completionHandler: completionHandler
78
+ )
79
+ }
80
+ }
81
+ }
@@ -1,4 +1,3 @@
1
- //
2
1
  /**
3
2
  * Copyright (c) 2016-present Invertase Limited & Contributors
4
3
  *
@@ -16,157 +15,28 @@
16
15
  *
17
16
  */
18
17
 
19
- #import <React/RCTUtils.h>
18
+ #import <React/RCTBridgeModule.h>
20
19
 
21
- #import "RNGoogleMobileAdsCommon.h"
22
- #import "RNGoogleMobileAdsFullScreenContentDelegate.h"
23
- #import "RNGoogleMobileAdsRewardedModule.h"
24
- #import "common/RNSharedUtils.h"
25
-
26
- static __strong NSMutableDictionary *rewardedMap;
27
- static __strong NSMutableDictionary *rewardedDelegateMap;
28
-
29
- @implementation RNGoogleMobileAdsRewardedModule
30
- #pragma mark -
31
- #pragma mark Module Setup
32
-
33
- RCT_EXPORT_MODULE();
20
+ @interface RCT_EXTERN_MODULE (RNGoogleMobileAdsRewardedModule, NSObject)
34
21
 
35
22
  - (dispatch_queue_t)methodQueue {
36
23
  return dispatch_get_main_queue();
37
24
  }
38
25
 
39
- - (id)init {
40
- self = [super init];
41
- static dispatch_once_t onceToken;
42
- dispatch_once(&onceToken, ^{
43
- rewardedMap = [[NSMutableDictionary alloc] init];
44
- rewardedDelegateMap = [[NSMutableDictionary alloc] init];
45
- });
46
- return self;
47
- }
48
-
49
26
  + (BOOL)requiresMainQueueSetup {
50
27
  return YES;
51
28
  }
52
29
 
53
- - (void)dealloc {
54
- [self invalidate];
55
- }
56
-
57
- - (void)invalidate {
58
- for (NSNumber *id in [rewardedMap allKeys]) {
59
- [rewardedMap removeObjectForKey:id];
60
- [rewardedDelegateMap removeObjectForKey:id];
61
- }
62
- }
63
-
64
- #pragma mark -
65
- #pragma mark Google Mobile Ads Methods
66
-
67
- RCT_EXPORT_METHOD(rewardedLoad
68
- : (nonnull NSNumber *)requestId
69
- : (NSString *)adUnitId
70
- : (NSDictionary *)adRequestOptions) {
71
- [GADRewardedAd loadWithAdUnitID:adUnitId
72
- request:[RNGoogleMobileAdsCommon buildAdRequest:adRequestOptions]
73
- completionHandler:^(GADRewardedAd *ad, NSError *error) {
74
- if (error) {
75
- NSDictionary *codeAndMessage =
76
- [RNGoogleMobileAdsCommon getCodeAndMessageFromAdError:error];
77
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_REWARDED
78
- requestId:requestId
79
- type:GOOGLE_MOBILE_ADS_EVENT_ERROR
80
- adUnitId:adUnitId
81
- error:codeAndMessage
82
- data:nil];
83
- return;
84
- }
85
- GADRewardedAd *rewardedAd = ad;
86
-
87
- NSDictionary *serverSideVerificationOptions =
88
- [adRequestOptions objectForKey:@"serverSideVerificationOptions"];
89
-
90
- if (serverSideVerificationOptions != nil) {
91
- GADServerSideVerificationOptions *options =
92
- [[GADServerSideVerificationOptions alloc] init];
93
-
94
- NSString *userId = [serverSideVerificationOptions valueForKey:@"userId"];
95
-
96
- if (userId != nil) {
97
- options.userIdentifier = userId;
98
- }
99
-
100
- NSString *customData =
101
- [serverSideVerificationOptions valueForKey:@"customData"];
102
-
103
- if (customData != nil) {
104
- options.customRewardString = customData;
105
- }
106
-
107
- [rewardedAd setServerSideVerificationOptions:options];
108
- }
109
-
110
- RNGoogleMobileAdsFullScreenContentDelegate *fullScreenContentDelegate =
111
- [[RNGoogleMobileAdsFullScreenContentDelegate alloc] init];
112
- fullScreenContentDelegate.sendAdEvent = GOOGLE_MOBILE_ADS_EVENT_REWARDED;
113
- fullScreenContentDelegate.requestId = requestId;
114
- fullScreenContentDelegate.adUnitId = ad.adUnitID;
115
- rewardedAd.fullScreenContentDelegate = fullScreenContentDelegate;
116
- rewardedMap[requestId] = rewardedAd;
117
- rewardedDelegateMap[requestId] = fullScreenContentDelegate;
118
- GADAdReward *reward = rewardedAd.adReward;
119
- NSMutableDictionary *data = [NSMutableDictionary dictionary];
120
- if (reward.type != nil) {
121
- [data setValue:reward.type forKey:@"type"];
122
- }
123
- if (reward.amount != nil) {
124
- [data setValue:reward.amount forKey:@"amount"];
125
- }
126
- [RNGoogleMobileAdsCommon sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_REWARDED
127
- requestId:requestId
128
- type:GOOGLE_MOBILE_ADS_EVENT_REWARDED_LOADED
129
- adUnitId:ad.adUnitID
130
- error:nil
131
- data:data];
132
- }];
133
- }
134
-
135
- RCT_EXPORT_METHOD(rewardedShow
136
- : (nonnull NSNumber *)requestId
137
- : (NSString *)adUnitId
138
- : (NSDictionary *)showOptions
139
- : (RCTPromiseResolveBlock)resolve
140
- : (RCTPromiseRejectBlock)reject) {
141
- GADRewardedAd *rewardedAd = rewardedMap[requestId];
142
-
143
- if (rewardedAd) {
144
- [rewardedAd presentFromRootViewController:RNGoogleMobileAdsCommon.currentViewController
145
- userDidEarnRewardHandler:^{
146
- GADAdReward *reward = rewardedAd.adReward;
147
- NSMutableDictionary *data = [NSMutableDictionary dictionary];
148
- if (reward.type != nil) {
149
- [data setValue:reward.type forKey:@"type"];
150
- }
151
- if (reward.amount != nil) {
152
- [data setValue:reward.amount forKey:@"amount"];
153
- }
154
- [RNGoogleMobileAdsCommon
155
- sendAdEvent:GOOGLE_MOBILE_ADS_EVENT_REWARDED
156
- requestId:requestId
157
- type:GOOGLE_MOBILE_ADS_EVENT_REWARDED_EARNED_REWARD
158
- adUnitId:rewardedAd.adUnitID
159
- error:nil
160
- data:data];
161
- }];
162
- } else {
163
- [RNSharedUtils
164
- rejectPromiseWithUserInfo:reject
165
- userInfo:[@{
166
- @"code" : @"not-ready",
167
- @"message" : @"Rewarded ad attempted to show but was not ready.",
168
- } mutableCopy]];
169
- }
170
- }
30
+ RCT_EXTERN_METHOD(rewardedLoad
31
+ : (nonnull NSNumber *)requestId forAdUnitId
32
+ : (nonnull NSString *)adUnitId withAdRequestOptions
33
+ : (nonnull NSDictionary *)adRequestOptions)
34
+
35
+ RCT_EXTERN_METHOD(rewardedShow
36
+ : (nonnull NSNumber *)requestId forAdUnitId
37
+ : (nonnull NSString *)adUnitId withShowOptions
38
+ : (NSDictionary *)showOptions withResolve
39
+ : (RCTPromiseResolveBlock)resolve withReject
40
+ : (RCTPromiseRejectBlock)reject)
171
41
 
172
42
  @end