emi-indo-cordova-plugin-admob 1.5.0 → 1.5.2

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.
@@ -54,6 +54,9 @@ WARNING: Failure to follow the issue template guidelines below will result in th
54
54
 
55
55
  **Environment information**
56
56
  <!-- Please supply full details of your development environment including: -->
57
+ - Plugin version
58
+ - `Plugin version: xxxx`
59
+
57
60
  - Cordova CLI version
58
61
  - `cordova -v`
59
62
  - Cordova platform version
@@ -1,3 +1,7 @@
1
1
  {
2
- "xml.downloadExternalResources.enabled": true
2
+ "xml.downloadExternalResources.enabled": true,
3
+ "C_Cpp.clang_format_style": "file",
4
+ "C_Cpp.formatting": "ClangFormat",
5
+ "editor.formatOnSave": true
6
+
3
7
  }
package/README.md CHANGED
@@ -4,10 +4,11 @@
4
4
  Cordova Plugin Admob Android and IOS
5
5
 
6
6
  ### Mobile Ads SDK (Android: 23.4.0) [Release Notes:](https://developers.google.com/admob/android/rel-notes)
7
+ ### User Messaging Platform (UMP Android: 3.0.0) [Release Notes:](https://developers.google.com/admob/android/privacy/release-notes)
7
8
 
8
9
  ### Mobile Ads SDK (IOS: 11.10.0) [Release Notes:](https://developers.google.com/admob/ios/rel-notes)
9
10
 
10
- ### User Messaging Platform (UMP: 3.0.0) [Release Notes:](https://developers.google.com/admob/android/privacy/release-notes)
11
+ ### User Messaging Platform Android (UMP IOS: 2.6.0) [Release Notes:](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/privacy/download)
11
12
  ### IAB Europe Transparency & Consent Framework (CPM: 2.2.0)
12
13
 
13
14
 
@@ -17,11 +18,31 @@
17
18
  - cordova-android version = 12.0.0
18
19
  - cordova-ios version = 7.0.0
19
20
 
21
+
22
+ ## IOS Ad Support IOS 18 *
23
+ > [!WARNING]
24
+ > - emi-indo-cordova-plugin-admob@1.5.2
25
+ > - Minimum supported Xcode version up to 15.3 or higher
26
+ > - minimum deployment-target: 12.2
27
+ ## Minimum macOS | Xcode, and others
28
+ - minimum macOS 14.4 or higher
29
+ - Xcode min 15.3 > or higher
30
+ - Command Line Tools 15.3 or higher
31
+ - minimum SwiftVersion: 5.10 or higher
32
+ - [Everything is included in plugin.xml](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/plugin.xml)
33
+ - [SKAdNetworkIdentifier Deprecated](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/releases/tag/v1.5.1)
34
+ - Dependency: pod MerchantKit (not needed)
35
+
36
+
37
+ ## IOS
38
+ > [!WARNING]
39
+ > - emi-indo-cordova-plugin-admob@1.5.1
40
+ > - Minimum supported Xcode version to 14.3
41
+ > - Maximum supported Xcode version up to 15.2
20
42
  ## Minimum macOS | Xcode, and others
21
43
  - Monterey
22
- - Xcode 14.1 or higher
44
+ - Xcode min 14.3 > max 15.2
23
45
  - Command Line Tools 14.1 or higher
24
- - Target iOS 11.0 or higher
25
46
  https://developers.google.com/admob/ios/quick-start
26
47
 
27
48
  <details>
@@ -59,7 +80,9 @@ https://developers.google.com/admob/ios/quick-start
59
80
  [![Video](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCMj8HrgSvO8WYm8wjv5KsM1CCmcX-w472iRZ0ynW715Pj0hMrTlCDLYxhLHme3oFowVW9ap7pQZqosXBDWWQ_SMuqw2g_Beh1CX0igO7jY7KCvBCXbQCqyFekgI9bKIl92opoucOkXbqsgRhBTeB41ho5l_0tx-YVfKt9jrbONt_nv080beeaYOmoN4w7/s320/mq3%20%281%29.webp)](https://youtu.be/YYMJuf7gIsg)
60
81
 
61
82
 
83
+ ## VIDEO Test Collapsible banner autoResize with Xcode/IOS
62
84
 
85
+ [![Video](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLhjgjUkLSlagAcfz_0KwNXLLfvZnkrs8YG4PAUo9y5e0kyTDwUYAHATmWzyF0ZkJ7EWCsvsJIhP-rIDPnAMrrQKkmuZxM38lW4JIzzfb0LZWTh0q9FCbEPEZBjbgkZbzsFlI23Y30uTPR-TEiVpt9w5gFUQXrep0_Tlyj_koRJUhc66zxE2UUJPsejEE/s320/mq2.webp)](https://youtu.be/sLXHKdU6DAg)
63
86
 
64
87
 
65
88
 
@@ -110,7 +133,10 @@ cordova plugin add emi-indo-cordova-plugin-admob --save --variable APP_ID_ANDRO
110
133
  cordova plugin rm emi-indo-cordova-plugin-admob
111
134
  ```
112
135
 
113
-
136
+ ## Note IOS
137
+ > [!NOTE]
138
+ > - To prevent some warnings or errors in xcode later, it is best after adding platforms and plugins cd/project root/command line run cordova prepare.
139
+ > - after that just cd platform/ios command line run pod install --repo-update
114
140
 
115
141
  ## Import the Mobile Ads SDK IOS
116
142
  ### Then from the command line run:
@@ -247,11 +273,11 @@ document.addEventListener('on.TCString.expired', () => {
247
273
 
248
274
 
249
275
  - [AppTrackingTransparency (ATT) framework:](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/authorizationstatus)
250
- - [Consent Management Platform API:](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details)
276
+ - [Consent Management Platform API:](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details)
251
277
 
252
- - [Example Get Consent Status:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/Advanced%20topics/consent.html) index.html
253
- - [Example requestIDFA:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/Advanced%20topics/requestIDFA.html) index.html
254
- - [Example IABTFC:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/Advanced%20topics/IABTFC.html) index.html
278
+ - [Example Get Consent Status:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/Advanced%20topics/consent.html) index.html (Not yet updated)
279
+ - [Example requestIDFA:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/Advanced%20topics/requestIDFA.html) index.html (Not yet updated)
280
+ - [Example IABTFC:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/Advanced%20topics/IABTFC.html) index.html (Not yet updated)
255
281
 
256
282
 
257
283
 
@@ -422,6 +448,7 @@ document.addEventListener('on.appOpenAd.loaded', () => {
422
448
  <details>
423
449
  <summary>Methods:</summary>
424
450
  <pre>
451
+ cordova.plugins.emiAdmobPlugin.styleBannerAd({ padding: 50, margins: 50 }); // (Optional)
425
452
  cordova.plugins.emiAdmobPlugin.loadBannerAd({config});
426
453
  cordova.plugins.emiAdmobPlugin.showBannerAd(); // default
427
454
  cordova.plugins.emiAdmobPlugin.hideBannerAd(); // default
@@ -593,8 +620,8 @@ example
593
620
  /*
594
621
  previous example
595
622
  [ adUnitId = Interstitial_ID, autoShow = true ] // Deprecated
596
- New
597
- { adUnitId: Interstitial_ID, autoShow: true }
623
+
624
+ { adUnitId: Interstitial_ID, autoShow: true } // NEW
598
625
  */
599
626
  cordova.plugins.emiAdmobPlugin.loadInterstitialAd({ adUnitId: "ca-app-pub-3940256099942544/1033173712", autoShow: true });
600
627
  ```
@@ -807,6 +834,168 @@ document.addEventListener('on.rewarded.dismissed', () => {
807
834
 
808
835
 
809
836
 
837
+ ## New Method (Only Android)
838
+ ### Ad Request Control
839
+ > [!WARNING]
840
+ > - isUsingAdManagerRequest: true
841
+ > - Must run before ad load
842
+
843
+ - cordova.plugins.emiAdmobPlugin.targetingAdRequest({configAdRequest});
844
+ - cordova.plugins.emiAdmobPlugin.setPersonalizationState({config});
845
+ - cordova.plugins.emiAdmobPlugin.setPPS({config});
846
+
847
+ <details>
848
+ <summary>targetingAdRequest</summary>
849
+ <pre>
850
+
851
+
852
+ // Check documentation: https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting
853
+
854
+ ```
855
+ const configAdRequest = {
856
+
857
+ // enabled, disabled
858
+ customTargetingEnabled: false,
859
+ categoryExclusionsEnabled: false,
860
+ ppIdEnabled: false,
861
+ contentURLEnabled: false,
862
+ brandSafetyEnabled: false,
863
+
864
+ // set Value
865
+ customTargetingValue: ["24", "25", "26"], // age
866
+ categoryExclusionsValue: "automobile", // automobile or boat
867
+ ppIdValue: "AB123456789",
868
+ contentURLValue: "https://www.example.com",
869
+ brandSafetyArr: ["https://www.mycontenturl1.com", "https://www.mycontenturl2.com"],
870
+
871
+ }
872
+
873
+ cordova.plugins.emiAdmobPlugin.targetingAdRequest(configAdRequest);
874
+ ```
875
+
876
+ </pre>
877
+ </details>
878
+
879
+
880
+
881
+
882
+ <details>
883
+ <summary>setPersonalizationState</summary>
884
+ <pre>
885
+
886
+ // Check documentation: https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting
887
+
888
+ cordova.plugins.emiAdmobPlugin.setPersonalizationState({
889
+
890
+ setPersonalizationState: "disabled" // type string: disabled | enabled
891
+
892
+ });
893
+
894
+ </pre>
895
+ </details>
896
+
897
+
898
+
899
+
900
+ <details>
901
+ <summary>setPPS</summary>
902
+ <pre>
903
+
904
+ // Check documentation: https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting
905
+
906
+ ```
907
+ cordova.plugins.emiAdmobPlugin.setPPS({
908
+
909
+ ppsEnabled: false, // enabled, disabled
910
+ iabContent: "IAB_AUDIENCE_1_1", // Type string value: IAB_AUDIENCE_1_1 or IAB_CONTENT_2_2
911
+ ppsArrValue: [6,284], // type arr
912
+
913
+ });
914
+
915
+ ```
916
+
917
+ </pre>
918
+ </details>
919
+
920
+
921
+ <details>
922
+ <summary>Example:</summary>
923
+ <pre>
924
+
925
+ // Check documentation: https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting
926
+
927
+ ```
928
+ function callSetPPS(){
929
+
930
+ cordova.plugins.emiAdmobPlugin.setPPS({
931
+
932
+ ppsEnabled: true, // enabled, disabled
933
+ iabContent: "IAB_AUDIENCE_1_1", // Type string value: IAB_AUDIENCE_1_1 or IAB_CONTENT_2_2
934
+ ppsArrValue: [6,284], // type arr
935
+
936
+ });
937
+
938
+ }
939
+
940
+ if (callSetPPS()){
941
+
942
+ cordova.plugins.emiAdmobPlugin.loadRewardedAd({ adUnitId: Rewarded_ID, autoShow: true });
943
+
944
+ }
945
+
946
+ ```
947
+
948
+
949
+
950
+
951
+
952
+ </pre>
953
+ </details>
954
+
955
+
956
+
957
+
958
+ ## New Method (Only IOS)
959
+ - You will see higher earnings.
960
+ > [!NOTE]
961
+ > - Is forcing the consent form to be displayed against admob policy? (I DON'T KNOW)
962
+ >
963
+ <details>
964
+ <summary>Method:</summary>
965
+ <pre>
966
+
967
+ /*
968
+
969
+ Sometimes the consent form in IOS is difficult to display,
970
+ because ATT has been set by the user,
971
+ The problem is TCString null,
972
+ causing very few admob ads to load,
973
+ This method will force the consent form to be displayed, whatever the user's decision TCString will not be null.
974
+
975
+ */
976
+ ```
977
+ // Use your own logic, this is just an example
978
+
979
+ let userGdpr = null; // global Variable
980
+ let userTCString = null; // global Variable
981
+
982
+ document.addEventListener('on.sdkInitialization', (data) => {
983
+ userGdpr = data.gdprApplies;
984
+ userTCString = data.consentTCString;
985
+ });
986
+
987
+
988
+ if (userGdpr === 1 && userTCString === null){
989
+
990
+ cordova.plugins.emiAdmobPlugin.forceDisplayPrivacyForm();
991
+
992
+ }
993
+ ```
994
+
995
+ </pre>
996
+ </details>
997
+
998
+
810
999
 
811
1000
 
812
1001
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emi-indo-cordova-plugin-admob",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Cordova Plugin Admob Android IOS",
5
5
  "cordova": {
6
6
  "id": "emi-indo-cordova-plugin-admob",
@@ -17,6 +17,7 @@
17
17
  "cordova-plugin-admob",
18
18
  "cordova-admob-free",
19
19
  "cordova-admob-plus",
20
+ "admob-plus-cordova",
20
21
  "cordova-admob-pro",
21
22
  "cordova-admob-ios",
22
23
  "cordova-admob-android"
package/plugin.xml CHANGED
@@ -1,6 +1,6 @@
1
1
  <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
2
2
  xmlns:android="http://schemas.android.com/apk/res/android"
3
- id="emi-indo-cordova-plugin-admob" version="1.5.0">
3
+ id="emi-indo-cordova-plugin-admob" version="1.5.2">
4
4
 
5
5
  <name>emiAdmobPlugin</name>
6
6
  <description>Cordova Plugin Admob Android IOS</description>
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
  <platform name="ios">
83
-
83
+ <!--minimum macOS 14.4 > Xcode 15.3 -->
84
84
  <config-file target="config.xml" parent="/*">
85
85
  <feature name="emiAdmobPlugin">
86
86
  <param name="ios-package" value="emiAdmobPlugin" />
@@ -88,6 +88,12 @@
88
88
  </feature>
89
89
  </config-file>
90
90
 
91
+ <config-file parent="/*" target="config.xml">
92
+ <!--minimum deployment-target: 12.2 -->
93
+ <preference name="deployment-target" value="12.2" />
94
+ <preference name="SwiftVersion" value="5.10" />
95
+ </config-file>
96
+
91
97
  <preference name="USAGE"
92
98
  default="This identifier will be used to deliver personalized ads to you." />
93
99
 
@@ -115,10 +121,6 @@
115
121
  <key>SKAdNetworkIdentifier</key>
116
122
  <string>4fzdc2evr5.skadnetwork</string>
117
123
  </dict>
118
- <dict>
119
- <key>SKAdNetworkIdentifier</key>
120
- <string>4pfyvq9l8r.skadnetwork</string>
121
- </dict>
122
124
  <dict>
123
125
  <key>SKAdNetworkIdentifier</key>
124
126
  <string>2fnua5tdw4.skadnetwork</string>
@@ -127,10 +129,6 @@
127
129
  <key>SKAdNetworkIdentifier</key>
128
130
  <string>ydx93a7ass.skadnetwork</string>
129
131
  </dict>
130
- <dict>
131
- <key>SKAdNetworkIdentifier</key>
132
- <string>5a6flpkh64.skadnetwork</string>
133
- </dict>
134
132
  <dict>
135
133
  <key>SKAdNetworkIdentifier</key>
136
134
  <string>p78axxw29g.skadnetwork</string>
@@ -165,11 +163,11 @@
165
163
  </dict>
166
164
  <dict>
167
165
  <key>SKAdNetworkIdentifier</key>
168
- <string>f38h382jlk.skadnetwork</string>
166
+ <string>hs6bdukanm.skadnetwork</string>
169
167
  </dict>
170
168
  <dict>
171
169
  <key>SKAdNetworkIdentifier</key>
172
- <string>hs6bdukanm.skadnetwork</string>
170
+ <string>mlmmfzh3r3.skadnetwork</string>
173
171
  </dict>
174
172
  <dict>
175
173
  <key>SKAdNetworkIdentifier</key>
@@ -181,11 +179,11 @@
181
179
  </dict>
182
180
  <dict>
183
181
  <key>SKAdNetworkIdentifier</key>
184
- <string>yclnxrl5pm.skadnetwork</string>
182
+ <string>su67r6k2v3.skadnetwork</string>
185
183
  </dict>
186
184
  <dict>
187
185
  <key>SKAdNetworkIdentifier</key>
188
- <string>t38b2kh725.skadnetwork</string>
186
+ <string>yclnxrl5pm.skadnetwork</string>
189
187
  </dict>
190
188
  <dict>
191
189
  <key>SKAdNetworkIdentifier</key>
@@ -203,10 +201,6 @@
203
201
  <key>SKAdNetworkIdentifier</key>
204
202
  <string>y5ghdn5j9k.skadnetwork</string>
205
203
  </dict>
206
- <dict>
207
- <key>SKAdNetworkIdentifier</key>
208
- <string>n6fk4nfna4.skadnetwork</string>
209
- </dict>
210
204
  <dict>
211
205
  <key>SKAdNetworkIdentifier</key>
212
206
  <string>v9wttpbfk9.skadnetwork</string>
@@ -227,10 +221,6 @@
227
221
  <key>SKAdNetworkIdentifier</key>
228
222
  <string>9t245vhmpl.skadnetwork</string>
229
223
  </dict>
230
- <dict>
231
- <key>SKAdNetworkIdentifier</key>
232
- <string>eh6m2bh4zr.skadnetwork</string>
233
- </dict>
234
224
  <dict>
235
225
  <key>SKAdNetworkIdentifier</key>
236
226
  <string>a2p9lx4jpn.skadnetwork</string>
@@ -251,18 +241,10 @@
251
241
  <key>SKAdNetworkIdentifier</key>
252
242
  <string>8s468mfl3y.skadnetwork</string>
253
243
  </dict>
254
- <dict>
255
- <key>SKAdNetworkIdentifier</key>
256
- <string>klf5c3l5u5.skadnetwork</string>
257
- </dict>
258
244
  <dict>
259
245
  <key>SKAdNetworkIdentifier</key>
260
246
  <string>ppxm28t8ap.skadnetwork</string>
261
247
  </dict>
262
- <dict>
263
- <key>SKAdNetworkIdentifier</key>
264
- <string>ecpz2srf59.skadnetwork</string>
265
- </dict>
266
248
  <dict>
267
249
  <key>SKAdNetworkIdentifier</key>
268
250
  <string>uw77j35x4d.skadnetwork</string>
@@ -271,10 +253,6 @@
271
253
  <key>SKAdNetworkIdentifier</key>
272
254
  <string>pwa73g5rt2.skadnetwork</string>
273
255
  </dict>
274
- <dict>
275
- <key>SKAdNetworkIdentifier</key>
276
- <string>mlmmfzh3r3.skadnetwork</string>
277
- </dict>
278
256
  <dict>
279
257
  <key>SKAdNetworkIdentifier</key>
280
258
  <string>578prtvx9j.skadnetwork</string>
@@ -285,15 +263,15 @@
285
263
  </dict>
286
264
  <dict>
287
265
  <key>SKAdNetworkIdentifier</key>
288
- <string>e5fvkxwrpn.skadnetwork</string>
266
+ <string>tl55sbb4fm.skadnetwork</string>
289
267
  </dict>
290
268
  <dict>
291
269
  <key>SKAdNetworkIdentifier</key>
292
- <string>8c4e2ghe7u.skadnetwork</string>
270
+ <string>e5fvkxwrpn.skadnetwork</string>
293
271
  </dict>
294
272
  <dict>
295
273
  <key>SKAdNetworkIdentifier</key>
296
- <string>zq492l623r.skadnetwork</string>
274
+ <string>8c4e2ghe7u.skadnetwork</string>
297
275
  </dict>
298
276
  <dict>
299
277
  <key>SKAdNetworkIdentifier</key>
@@ -317,9 +295,12 @@
317
295
  <source url="https://cdn.cocoapods.org/" />
318
296
  </config>
319
297
  <pods use-frameworks="true">
320
- <pod name="Google-Mobile-Ads-SDK" spec="~> 11.10.0" />
298
+ <!--minimum macOS 14.4 > Xcode 15.3 -->
299
+ <pod name="GoogleUserMessagingPlatform" spec="~> 2.6.0" />
300
+ <pod name="Google-Mobile-Ads-SDK" spec="~> 11.10.0" />
301
+
321
302
  </pods>
322
303
  </podspec>
323
304
 
324
305
  </platform>
325
- </plugin>
306
+ </plugin>
@@ -2,6 +2,7 @@
2
2
  #import <Cordova/CDVPlugin.h>
3
3
  #import <GoogleMobileAds/GoogleMobileAds.h>
4
4
  #import <UserMessagingPlatform/UserMessagingPlatform.h>
5
+ #import <CommonCrypto/CommonDigest.h>
5
6
  @interface emiAdmobPlugin : CDVPlugin<GADBannerViewDelegate, GADFullScreenContentDelegate>{}
6
7
  @property(nonatomic, strong) GADAppOpenAd *appOpenAd;
7
8
  @property(nonatomic, strong) GADBannerView *bannerView;
@@ -11,10 +12,16 @@
11
12
  @property(nonatomic, readonly) BOOL isPrivacyOptionsRequired;
12
13
  @property(nonatomic, strong) CDVInvokedUrlCommand *command;
13
14
  @property(nonatomic, strong) GADResponseInfo *responseInfo;
15
+ @property(nonatomic, readonly) BOOL canRequestAds;
16
+ @property (nonatomic, assign) BOOL isUsingAdManagerRequest;
17
+ @property (nonatomic, assign) CGFloat viewWidth;
18
+ @property (nonatomic, strong) UIView *bannerViewLayout;
19
+
14
20
  - (void)initialize:(CDVInvokedUrlCommand *)command;
15
21
  - (void)requestIDFA:(CDVInvokedUrlCommand *)command;
16
22
  - (void)showPrivacyOptionsForm:(CDVInvokedUrlCommand *)command;
17
- - (void)getConsentRequest:(CDVInvokedUrlCommand *)command;
23
+ // - (void)getConsentRequest:(CDVInvokedUrlCommand *)command;
24
+ - (void)forceDisplayPrivacyForm:(CDVInvokedUrlCommand *)command;
18
25
  - (void)consentReset:(CDVInvokedUrlCommand *)command;
19
26
  - (void)getIabTfc:(CDVInvokedUrlCommand *)command;
20
27
  - (void)loadAppOpenAd:(CDVInvokedUrlCommand *)command;
@@ -31,5 +38,3 @@
31
38
  - (void)showRewardedAd:(CDVInvokedUrlCommand *)command;
32
39
  - (void) fireEvent:(NSString *)obj event:(NSString *)eventName withData:(NSString *)jsonStr;
33
40
  @end
34
-
35
-