emi-indo-cordova-plugin-admob 1.6.0 → 1.6.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.
package/README.md CHANGED
@@ -1,4 +1,9 @@
1
1
 
2
+ ## New feature suggestion
3
+ > [!TIP]
4
+ > - Funding is needed to add a new feature of native ads that can be scrolled within html content elements.
5
+ > - I will not settle how much funding is needed to add this feature.
6
+
2
7
 
3
8
  # emi-indo-cordova-plugin-admob
4
9
  Cordova Plugin Admob Android and IOS
@@ -11,11 +16,15 @@
11
16
  ### User Messaging Platform (UMP IOS: 2.6.0) [Release Notes:](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/privacy/download)
12
17
  ### IAB Europe Transparency & Consent Framework (CPM: 2.2.0)
13
18
 
14
-
15
19
  ## New example
16
20
  - https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/tree/main/example/www
17
21
 
18
22
 
23
+ ## Documentation Capacitor example
24
+ - [Documentation Capacitor example: ](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/discussions/29)
25
+
26
+
27
+
19
28
  ## Minimum Cordova Engines
20
29
  - cordova-android version = 12.0.0
21
30
  - cordova-ios version = 7.0.0
@@ -333,7 +342,7 @@ document.addEventListener('on.appOpenAd.loaded', () => {
333
342
  </pre>
334
343
  </details>
335
344
 
336
- - [FULL AppOpenAd basic:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/www/js/appOpenAd.js)
345
+ - [FULL AppOpenAd basic:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/Example/www/js/appOpenAd.js)
337
346
 
338
347
 
339
348
 
@@ -436,7 +445,7 @@ console.log("Collapsible Status: " + event.collapsible);
436
445
  </pre>
437
446
  </details>
438
447
 
439
- [FULL Banner basic:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/www/js/bannerAd.js)
448
+ [FULL Banner basic:](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/Example/www/js/bannerAd.js)
440
449
 
441
450
 
442
451
  ## Interstitial ADS
@@ -499,7 +508,7 @@ document.addEventListener('on.interstitial.dismissed', () => {
499
508
  </details>
500
509
 
501
510
 
502
- [FULL Interstitial basic: ](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/www/js/interstitialAd.js)
511
+ [FULL Interstitial basic: ](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/Example/www/js/interstitialAd.js)
503
512
 
504
513
 
505
514
 
@@ -628,7 +637,7 @@ document.addEventListener('on.rewarded.dismissed', () => {
628
637
  </pre>
629
638
  </details>
630
639
 
631
- [FULL Rewarded basic: ](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/example/www/js/rewardedAd.js)
640
+ [FULL Rewarded basic: ](https://github.com/EMI-INDO/emi-indo-cordova-plugin-admob/blob/main/Example/www/js/rewardedAd.js)
632
641
 
633
642
 
634
643
 
@@ -0,0 +1,148 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const plist = require('plist');
4
+
5
+ const configPath = path.join(process.cwd(), 'capacitor.config.json');
6
+ const androidPlatformPath = path.join(process.cwd(), 'android');
7
+ const iosPlatformPath = path.join(process.cwd(), 'ios');
8
+ const pluginPath = path.join(process.cwd(), 'node_modules', 'emi-indo-cordova-plugin-admob', 'plugin.xml');
9
+ const infoPlistPath = path.join(process.cwd(), 'ios', 'App', 'App', 'Info.plist');
10
+
11
+
12
+ function fileExists(filePath) {
13
+ return fs.existsSync(filePath);
14
+ }
15
+
16
+
17
+ function getAdMobConfig() {
18
+ if (!fileExists(configPath)) {
19
+ throw new Error('capacitor.config.json not found. Ensure this is a Capacitor project.');
20
+ }
21
+
22
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
23
+ const admobConfig = config.plugins?.AdMob;
24
+
25
+ if (!admobConfig || !admobConfig.APP_ID_ANDROID || !admobConfig.APP_ID_IOS) {
26
+ throw new Error('AdMob configuration is missing in capacitor.config.json. Ensure APP_ID_ANDROID and APP_ID_IOS are defined.');
27
+ }
28
+
29
+ return {
30
+ APP_ID_ANDROID: admobConfig.APP_ID_ANDROID,
31
+ APP_ID_IOS: admobConfig.APP_ID_IOS,
32
+ };
33
+ }
34
+
35
+
36
+ function updatePluginXml(admobConfig) {
37
+ if (!fileExists(pluginPath)) {
38
+ console.error('plugin.xml not found. Ensure the plugin is installed.');
39
+ return;
40
+ }
41
+
42
+ let pluginContent = fs.readFileSync(pluginPath, 'utf8');
43
+
44
+ pluginContent = pluginContent
45
+ .replace(/<preference name="APP_ID_ANDROID" default=".*?" \/>/, `<preference name="APP_ID_ANDROID" default="${admobConfig.APP_ID_ANDROID}" />`)
46
+ .replace(/<preference name="APP_ID_IOS" default=".*?" \/>/, `<preference name="APP_ID_IOS" default="${admobConfig.APP_ID_IOS}" />`);
47
+
48
+ fs.writeFileSync(pluginPath, pluginContent, 'utf8');
49
+ console.log('AdMob IDs successfully updated in plugin.xml');
50
+ }
51
+
52
+
53
+ function updateInfoPlist(admobConfig) {
54
+ if (!fileExists(infoPlistPath)) {
55
+ console.error('Info.plist not found. Ensure you have built the iOS project.');
56
+ return;
57
+ }
58
+
59
+ const plistContent = fs.readFileSync(infoPlistPath, 'utf8');
60
+ const plistData = plist.parse(plistContent);
61
+
62
+
63
+ plistData.GADApplicationIdentifier = admobConfig.APP_ID_IOS;
64
+
65
+
66
+ plistData.NSUserTrackingUsageDescription = 'This identifier will be used to deliver personalized ads to you.';
67
+
68
+
69
+ plistData.GADDelayAppMeasurementInit = true;
70
+
71
+ // https://developers.google.com/admob/ios/quick-start
72
+ plistData.SKAdNetworkItems = [
73
+ { SKAdNetworkIdentifier: 'cstr6suwn9.skadnetwork' }, // Google
74
+ { SKAdNetworkIdentifier: '4fzdc2evr5.skadnetwork' }, // Aarki
75
+ { SKAdNetworkIdentifier: '2fnua5tdw4.skadnetwork' }, // Adform
76
+ { SKAdNetworkIdentifier: 'ydx93a7ass.skadnetwork' }, // Adikteev
77
+ { SKAdNetworkIdentifier: 'p78axxw29g.skadnetwork' }, // Amazon
78
+ { SKAdNetworkIdentifier: 'v72qych5uu.skadnetwork' }, // Appier
79
+ { SKAdNetworkIdentifier: 'ludvb6z3bs.skadnetwork' }, // Applovin
80
+ { SKAdNetworkIdentifier: 'cp8zw746q7.skadnetwork' }, // Arpeely
81
+ { SKAdNetworkIdentifier: '3sh42y64q3.skadnetwork' }, // Basis
82
+ { SKAdNetworkIdentifier: 'c6k4g5qg8m.skadnetwork' }, // Beeswax.io
83
+ { SKAdNetworkIdentifier: 's39g8k73mm.skadnetwork' }, // Bidease
84
+ { SKAdNetworkIdentifier: '3qy4746246.skadnetwork' }, // Bigabid
85
+ { SKAdNetworkIdentifier: 'hs6bdukanm.skadnetwork' }, // Criteo
86
+ { SKAdNetworkIdentifier: 'mlmmfzh3r3.skadnetwork' }, // Digital Turbine DSP
87
+ { SKAdNetworkIdentifier: 'v4nxqhlyqp.skadnetwork' }, // i-mobile
88
+ { SKAdNetworkIdentifier: 'wzmmz9fp6w.skadnetwork' }, // InMobi
89
+ { SKAdNetworkIdentifier: 'su67r6k2v3.skadnetwork' }, // ironSource Ads
90
+ { SKAdNetworkIdentifier: 'yclnxrl5pm.skadnetwork' }, // Jampp
91
+ { SKAdNetworkIdentifier: '7ug5zh24hu.skadnetwork' }, // Liftoff
92
+ { SKAdNetworkIdentifier: 'gta9lk7p23.skadnetwork' }, // Liftoff Monetize
93
+ { SKAdNetworkIdentifier: 'vutu7akeur.skadnetwork' }, // LINE
94
+ { SKAdNetworkIdentifier: 'y5ghdn5j9k.skadnetwork' }, // Mediaforce
95
+ { SKAdNetworkIdentifier: 'v9wttpbfk9.skadnetwork' }, // Meta (1 of 2)
96
+ { SKAdNetworkIdentifier: 'n38lu8286q.skadnetwork' }, // Meta (2 of 2)
97
+ { SKAdNetworkIdentifier: '47vhws6wlr.skadnetwork' }, // MicroAd
98
+ { SKAdNetworkIdentifier: 'kbd757ywx3.skadnetwork' }, // Mintegral / Mobvista
99
+ { SKAdNetworkIdentifier: '9t245vhmpl.skadnetwork' }, // Moloco
100
+ { SKAdNetworkIdentifier: 'a2p9lx4jpn.skadnetwork' }, // Opera
101
+ { SKAdNetworkIdentifier: '22mmun2rn5.skadnetwork' }, // Pangle
102
+ { SKAdNetworkIdentifier: '4468km3ulz.skadnetwork' }, // Realtime Technologies GmbH
103
+ { SKAdNetworkIdentifier: '2u9pt9hc89.skadnetwork' }, // Remerge
104
+ { SKAdNetworkIdentifier: '8s468mfl3y.skadnetwork' }, // RTB House
105
+ { SKAdNetworkIdentifier: 'ppxm28t8ap.skadnetwork' }, // Smadex
106
+ { SKAdNetworkIdentifier: 'uw77j35x4d.skadnetwork' }, // The Trade Desk
107
+ { SKAdNetworkIdentifier: 'pwa73g5rt2.skadnetwork' }, // Tremor
108
+ { SKAdNetworkIdentifier: '578prtvx9j.skadnetwork' }, // Unicorn
109
+ { SKAdNetworkIdentifier: '4dzt52r2t5.skadnetwork' }, // Unity Ads
110
+ { SKAdNetworkIdentifier: 'tl55sbb4fm.skadnetwork' }, // Verve
111
+ { SKAdNetworkIdentifier: 'e5fvkxwrpn.skadnetwork' }, // Yahoo!
112
+ { SKAdNetworkIdentifier: '8c4e2ghe7u.skadnetwork' }, // Yahoo! Japan Ads
113
+ { SKAdNetworkIdentifier: '3rd42ekr43.skadnetwork' }, // YouAppi
114
+ { SKAdNetworkIdentifier: '3qcr597p9d.skadnetwork' }, // Zucks
115
+ ];
116
+
117
+
118
+ const updatedPlistContent = plist.build(plistData);
119
+ fs.writeFileSync(infoPlistPath, updatedPlistContent, 'utf8');
120
+ console.log('AdMob IDs and additional configurations successfully updated in Info.plist');
121
+ }
122
+
123
+
124
+ try {
125
+
126
+ if (!fileExists(configPath)) {
127
+ throw new Error('capacitor.config.json not found. Skipping setup.');
128
+ }
129
+
130
+ if (!fileExists(androidPlatformPath) && !fileExists(iosPlatformPath)) {
131
+ throw new Error('Neither Android nor iOS platforms are found. Ensure platforms are added to your Capacitor project.');
132
+ }
133
+
134
+
135
+ const admobConfig = getAdMobConfig();
136
+
137
+
138
+ if (fileExists(androidPlatformPath)) {
139
+ updatePluginXml(admobConfig);
140
+ }
141
+
142
+
143
+ if (fileExists(iosPlatformPath)) {
144
+ updateInfoPlist(admobConfig);
145
+ }
146
+ } catch (error) {
147
+ console.error(error.message);
148
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "appId": "io.cordova.hellocordova",
3
+ "appName": "HelloCordova",
4
+ "webDir": "www",
5
+ "bundledWebRuntime": false,
6
+ "plugins": {
7
+ "AdMob": {
8
+ "APP_ID_ANDROID": "ca-app-pub-3940256099942544~3347511713",
9
+ "APP_ID_IOS": "ca-app-pub-3940256099942544~1458002511"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <widget id="io.cordova.hellocordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
3
+ <name>HelloCordova</name>
4
+ <description>Sample Apache Cordova App</description>
5
+ <author email="dev@cordova.apache.org" href="https://cordova.apache.org">
6
+ Apache Cordova Team
7
+ </author>
8
+ <content src="index.html" />
9
+ <allow-intent href="http://*/*" />
10
+ <allow-intent href="https://*/*" />
11
+ </widget>
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "io.cordova.hellocordova",
3
+ "displayName": "HelloCordova",
4
+ "version": "1.0.0",
5
+ "description": "A sample Apache Cordova application that responds to the deviceready event.",
6
+ "main": "index.js",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 1",
9
+ "update-admob": "node node_modules/emi-indo-cordova-plugin-admob/capacitor-hook-admob-ids.js"
10
+ },
11
+ "keywords": [
12
+ "ecosystem:cordova"
13
+ ],
14
+ "author": "Apache Cordova Team",
15
+ "license": "Apache-2.0",
16
+ "devDependencies": {
17
+ "emi-indo-cordova-plugin-admob": "^1.6.1"
18
+ },
19
+ "cordova": {
20
+ "plugins": {
21
+ "emi-indo-cordova-plugin-admob": {}
22
+ }
23
+ },
24
+ "dependencies": {
25
+ "@capacitor/android": "^6.2.0",
26
+ "@capacitor/ios": "^6.2.0",
27
+ "@capacitor/cli": "^6.2.0",
28
+ "@capacitor/core": "^6.2.0"
29
+ }
30
+ }
@@ -10,12 +10,17 @@ function loadBanner() {
10
10
 
11
11
  if (typeof cordova !== 'undefined') {
12
12
 
13
+ if (!isPlatformIOS){
14
+
13
15
  cordova.plugins.emiAdmobPlugin.styleBannerAd({
14
16
  isOverlapping: true,
15
17
  overlappingHeight: 5,
16
18
  padding: 0,
17
19
  margins: 0
18
20
  });
21
+
22
+ }
23
+
19
24
 
20
25
  cordova.plugins.emiAdmobPlugin.loadBannerAd({
21
26
  adUnitId: Banner_ID, //Banner_ID,
@@ -20,7 +20,7 @@ otherwise you may be subject to ad serving restrictions,
20
20
  if it happens often, it is possible that your admob account will be permanently disabled.
21
21
  */
22
22
 
23
-
23
+ let isPlatformIOS = false;
24
24
 
25
25
  if (window.cordova.platformId === 'ios') {
26
26
 
@@ -30,6 +30,8 @@ if (window.cordova.platformId === 'ios') {
30
30
  Rewarded_ID = 'ca-app-pub-3940256099942544/1712485313';
31
31
  Rewarded_Interstitial_ID = 'ca-app-pub-3940256099942544/6978759866';
32
32
 
33
+ isPlatformIOS = true;
34
+
33
35
  } else {
34
36
  // Assume Android
35
37
  App_Open_ID = 'ca-app-pub-3940256099942544/9257395921';
@@ -74,6 +76,11 @@ document.addEventListener("deviceready", function () {
74
76
 
75
77
 
76
78
 
79
+ if (isPlatformIOS){
80
+
81
+ cordova.plugins.emiAdmobPlugin.requestIDFA(); // requestTrackingAuthorization
82
+
83
+ }
77
84
 
78
85
 
79
86
  // AdMob Sdk initialize
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "emi-indo-cordova-plugin-admob",
3
- "version": "1.6.0",
4
- "description": "Cordova Plugin Admob Android IOS",
3
+ "version": "1.6.2",
4
+ "description": "Cordova Plugin Admob Android IOS Support Capacitor",
5
5
  "cordova": {
6
6
  "id": "emi-indo-cordova-plugin-admob",
7
7
  "platforms": [
@@ -20,7 +20,11 @@
20
20
  "admob-plus-cordova",
21
21
  "cordova-admob-pro",
22
22
  "cordova-admob-ios",
23
- "cordova-admob-android"
23
+ "cordova-admob-android",
24
+ "capacitor",
25
+ "capacitor-admob",
26
+ "capacitor-android",
27
+ "capacitor-ios"
24
28
  ],
25
29
  "author": "EMI INDO",
26
30
  "email": "cordova.c3addon@gmail.com",
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.6.0">
3
+ id="emi-indo-cordova-plugin-admob" version="1.6.2">
4
4
 
5
5
  <name>emiAdmobPlugin</name>
6
6
  <description>Cordova Plugin Admob Android IOS</description>
@@ -1,3 +0,0 @@
1
- {
2
- "xml.downloadExternalResources.enabled": true
3
- }