@vynix-org/react-native-ads-sdk 0.1.2 → 0.1.4

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.
@@ -12,7 +12,7 @@ buildscript {
12
12
  classpath "com.android.tools.build:gradle:8.7.2"
13
13
  // noinspection DifferentKotlinGradleVersion
14
14
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
15
- classpath("com.google.gms:google-services:4.4.0")
15
+ // classpath("com.google.gms:google-services:4.4.0")
16
16
  }
17
17
  }
18
18
 
@@ -21,7 +21,7 @@ apply plugin: "com.android.library"
21
21
  apply plugin: "kotlin-android"
22
22
 
23
23
  apply plugin: "com.facebook.react"
24
- apply plugin: "com.google.gms.google-services"
24
+ // apply plugin: "com.google.gms.google-services"
25
25
 
26
26
  def getExtOrIntegerDefault(name) {
27
27
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["AdsSdk_" + name]).toInteger()
@@ -66,14 +66,23 @@ android {
66
66
  }
67
67
  }
68
68
 
69
- repositories {
70
- mavenCentral()
71
- google()
72
- // Repositories cho các ad networks
73
- // maven { url 'https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea' }
74
- maven { url 'https://artifact.bytedance.com/repository/pangle' }
75
- maven { url 'https://android-sdk.is.com/' }
76
- }
69
+ // allprojects {
70
+ // repositories {
71
+ // mavenCentral()
72
+ // google()
73
+ // maven {
74
+ // url = uri("https://android-sdk.is.com/")
75
+ // }
76
+ // maven { url "https://artifacts.applovin.com/android" }
77
+
78
+ // maven {
79
+ // url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"
80
+ // }
81
+ // maven {
82
+ // url = uri("https://artifact.bytedance.com/repository/pangle/")
83
+ // }
84
+ // }
85
+ // }
77
86
 
78
87
  def kotlin_version = getExtOrDefault("kotlinVersion")
79
88
 
@@ -82,8 +91,8 @@ dependencies {
82
91
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
83
92
 
84
93
  // Must-have
85
- api 'com.google.ads.mediation:facebook:6.17.0.0'
86
- api 'com.google.ads.mediation:applovin:12.6.0.0'
94
+ // api 'com.google.ads.mediation:facebook:6.17.0.0'
95
+ // api 'com.google.ads.mediation:applovin:13.4.0.1'
87
96
 
88
97
  // Game
89
98
  // api 'com.google.ads.mediation:unity:4.12.2.0'
@@ -93,7 +102,7 @@ dependencies {
93
102
  // api 'com.google.ads.mediation:vungle:7.4.1.0'
94
103
 
95
104
  // Châu Á focused
96
- api 'com.google.ads.mediation:pangle:6.2.0.9.0'
105
+ // api 'com.google.ads.mediation:pangle:7.7.0.2.0'
97
106
  // Mintegral (Mobvista)
98
107
  // api 'com.google.ads.mediation:mintegral:16.7.71.0'
99
108
  // api 'com.google.ads.mediation:inmobi:10.7.5.0'
@@ -1,5 +1,3 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
- <uses-permission android:name="android.permission.INTERNET" />
3
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
2
+
5
3
  </manifest>
@@ -1,23 +1,18 @@
1
1
  package com.adssdk
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
4
5
  import com.facebook.react.module.annotations.ReactModule
5
6
 
6
7
  @ReactModule(name = AdsSdkModule.NAME)
7
8
  class AdsSdkModule(reactContext: ReactApplicationContext) :
8
- NativeAdsSdkSpec(reactContext) {
9
+ ReactContextBaseJavaModule(reactContext) {
9
10
 
10
11
  override fun getName(): String {
11
12
  return NAME
12
13
  }
13
14
 
14
- // Example method
15
- // See https://reactnative.dev/docs/native-modules-android
16
- override fun multiply(a: Double, b: Double): Double {
17
- return a * b
18
- }
19
-
20
15
  companion object {
21
16
  const val NAME = "AdsSdk"
22
17
  }
23
- }
18
+ }
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useEffect, useState, useRef } from 'react';
4
- import { View, StyleSheet, ActivityIndicator, Text } from 'react-native';
4
+ import { View, StyleSheet } from 'react-native';
5
5
  import { BannerAd } from 'react-native-google-mobile-ads';
6
+ import { Placeholder, PlaceholderMedia, PlaceholderLine, Fade } from 'rn-placeholder';
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
8
  export const BannerAdComponent = ({
8
9
  adId,
@@ -16,10 +17,11 @@ export const BannerAdComponent = ({
16
17
  onAdClicked,
17
18
  onAdImpression,
18
19
  showLoading = true,
19
- loadingText = 'Đang tải quảng cáo...',
20
- errorText = 'Không thể tải quảng cáo',
20
+ // loadingText = 'Đang tải quảng cáo...',
21
+ // errorText = 'Không thể tải quảng cáo',
21
22
  showError = true,
22
- requestOptions
23
+ requestOptions,
24
+ renderLoading
23
25
  }) => {
24
26
  const [isLoaded, setIsLoaded] = useState(false);
25
27
  const [error, setError] = useState(null);
@@ -78,52 +80,52 @@ export const BannerAdComponent = ({
78
80
  }
79
81
  return /*#__PURE__*/_jsxs(View, {
80
82
  style: [styles.container, style],
81
- children: [!isLoaded && !error && showLoading && /*#__PURE__*/_jsxs(View, {
83
+ children: [!isLoaded && !error && showLoading && (renderLoading ? renderLoading() : /*#__PURE__*/_jsx(Placeholder, {
82
84
  style: styles.loadingContainer,
83
- children: [/*#__PURE__*/_jsx(ActivityIndicator, {
84
- size: "small",
85
- color: "#007AFF"
86
- }), /*#__PURE__*/_jsx(Text, {
87
- style: styles.loadingText,
88
- children: loadingText
89
- })]
90
- }), error && showError && /*#__PURE__*/_jsx(View, {
91
- style: styles.errorContainer,
92
- children: /*#__PURE__*/_jsx(Text, {
93
- style: styles.errorText,
94
- children: errorText
85
+ Animation: Fade,
86
+ Left: PlaceholderMedia,
87
+ Right: PlaceholderMedia,
88
+ children: /*#__PURE__*/_jsx(PlaceholderLine, {
89
+ noMargin: true,
90
+ style: {
91
+ minHeight: 40
92
+ }
95
93
  })
96
- }), /*#__PURE__*/_jsx(BannerAd, {
97
- // Key quan trọng để force re-render khi adId thay đổi
98
- ref: bannerRef,
99
- unitId: currentAdId,
100
- size: size,
101
- onAdLoaded: handleAdLoaded,
102
- onAdFailedToLoad: handleAdFailedToLoad,
103
- onAdOpened: handleAdOpened,
104
- onAdClosed: handleAdClosed,
105
- onAdClicked: handleAdClicked,
106
- onAdImpression: handleAdImpression,
107
- requestOptions: requestOptions
108
- }, currentAdId)]
94
+ })), error && showError && /*#__PURE__*/_jsx(View, {}), /*#__PURE__*/_jsx(View, {
95
+ style: {
96
+ minHeight: 50
97
+ },
98
+ children: /*#__PURE__*/_jsx(BannerAd, {
99
+ ref: bannerRef,
100
+ unitId: currentAdId,
101
+ size: size,
102
+ onAdLoaded: handleAdLoaded,
103
+ onAdFailedToLoad: handleAdFailedToLoad,
104
+ onAdOpened: handleAdOpened,
105
+ onAdClosed: handleAdClosed,
106
+ onAdClicked: handleAdClicked,
107
+ onAdImpression: handleAdImpression,
108
+ requestOptions: requestOptions
109
+ }, currentAdId)
110
+ })]
109
111
  });
110
112
  };
111
113
  const styles = StyleSheet.create({
112
114
  container: {
113
115
  alignItems: 'center',
114
116
  justifyContent: 'center',
115
- minHeight: 50,
116
117
  backgroundColor: 'transparent'
117
118
  },
118
119
  loadingContainer: {
119
- width: '80%',
120
+ flexDirection: 'row',
121
+ width: '100%',
120
122
  position: 'absolute',
121
123
  alignItems: 'center',
122
124
  justifyContent: 'center',
123
- zIndex: 1,
124
125
  backgroundColor: 'rgba(255, 255, 255, 0.9)',
125
- borderRadius: 8,
126
- padding: 12
126
+ paddingHorizontal: 20,
127
+ paddingVertical: 10,
128
+ borderRadius: 8
127
129
  },
128
130
  loadingText: {
129
131
  marginTop: 8,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","useRef","View","StyleSheet","ActivityIndicator","Text","BannerAd","jsx","_jsx","jsxs","_jsxs","BannerAdComponent","adId","adHighpriorityId","style","size","onAdLoaded","onAdFailedToLoad","onAdOpened","onAdClosed","onAdClicked","onAdImpression","showLoading","loadingText","errorText","showError","requestOptions","isLoaded","setIsLoaded","error","setError","shouldRender","setShouldRender","bannerRef","currentAdId","setCurrentAdId","hasTriedHighPriority","setHasTriedHighPriority","handleAdLoaded","console","log","handleAdFailedToLoad","message","handleAdOpened","handleAdClosed","handleAdClicked","handleAdImpression","styles","container","children","loadingContainer","color","errorContainer","ref","unitId","create","alignItems","justifyContent","minHeight","backgroundColor","width","position","zIndex","borderRadius","padding","marginTop","fontSize","textAlign","borderWidth","borderColor","banner","hiddenBanner","opacity","height","overflow"],"sourceRoot":"../../../src","sources":["components/BannerAdComponent.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","useRef","View","StyleSheet","BannerAd","Placeholder","PlaceholderMedia","PlaceholderLine","Fade","jsx","_jsx","jsxs","_jsxs","BannerAdComponent","adId","adHighpriorityId","style","size","onAdLoaded","onAdFailedToLoad","onAdOpened","onAdClosed","onAdClicked","onAdImpression","showLoading","showError","requestOptions","renderLoading","isLoaded","setIsLoaded","error","setError","shouldRender","setShouldRender","bannerRef","currentAdId","setCurrentAdId","hasTriedHighPriority","setHasTriedHighPriority","handleAdLoaded","console","log","handleAdFailedToLoad","message","handleAdOpened","handleAdClosed","handleAdClicked","handleAdImpression","styles","container","children","loadingContainer","Animation","Left","Right","noMargin","minHeight","ref","unitId","create","alignItems","justifyContent","backgroundColor","flexDirection","width","position","paddingHorizontal","paddingVertical","borderRadius","loadingText","marginTop","fontSize","color","textAlign","errorContainer","padding","borderWidth","borderColor","errorText","banner","hiddenBanner","opacity","height","overflow"],"sourceRoot":"../../../src","sources":["components/BannerAdComponent.tsx"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ interface BannerAdComponentProps {
16
16
  errorText?: string;
17
17
  showError?: boolean;
18
18
  requestOptions?: RequestOptions;
19
+ renderLoading?: () => React.ReactNode;
19
20
  }
20
21
  export declare const BannerAdComponent: React.FC<BannerAdComponentProps>;
21
22
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"BannerAdComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAdComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAE/E,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EACD,QAAQ,GACR,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,0BAA0B,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA+H9D,CAAC"}
1
+ {"version":3,"file":"BannerAdComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAdComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAQ/E,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EACD,QAAQ,GACR,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,aAAa,GACb,0BAA0B,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;CACvC;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAoI9D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vynix-org/react-native-ads-sdk",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "This is ads sdk for vynix",
5
5
  "access": "public",
6
6
  "main": "./lib/module/index.js",
@@ -172,6 +172,7 @@
172
172
  "version": "0.54.3"
173
173
  },
174
174
  "dependencies": {
175
+ "rn-placeholder": "^3.0.3",
175
176
  "zustand": "^5.0.8"
176
177
  }
177
178
  }
@@ -1,6 +1,12 @@
1
1
  import React, { useEffect, useState, useRef } from 'react';
2
- import { View, StyleSheet, ActivityIndicator, Text } from 'react-native';
2
+ import { View, StyleSheet } from 'react-native';
3
3
  import { BannerAd, type RequestOptions } from 'react-native-google-mobile-ads';
4
+ import {
5
+ Placeholder,
6
+ PlaceholderMedia,
7
+ PlaceholderLine,
8
+ Fade,
9
+ } from 'rn-placeholder';
4
10
 
5
11
  interface BannerAdComponentProps {
6
12
  adId: string;
@@ -24,6 +30,7 @@ interface BannerAdComponentProps {
24
30
  errorText?: string;
25
31
  showError?: boolean;
26
32
  requestOptions?: RequestOptions;
33
+ renderLoading?: () => React.ReactNode;
27
34
  }
28
35
 
29
36
  export const BannerAdComponent: React.FC<BannerAdComponentProps> = ({
@@ -38,10 +45,11 @@ export const BannerAdComponent: React.FC<BannerAdComponentProps> = ({
38
45
  onAdClicked,
39
46
  onAdImpression,
40
47
  showLoading = true,
41
- loadingText = 'Đang tải quảng cáo...',
42
- errorText = 'Không thể tải quảng cáo',
48
+ // loadingText = 'Đang tải quảng cáo...',
49
+ // errorText = 'Không thể tải quảng cáo',
43
50
  showError = true,
44
51
  requestOptions,
52
+ renderLoading,
45
53
  }) => {
46
54
  const [isLoaded, setIsLoaded] = useState(false);
47
55
  const [error, setError] = useState<string | null>(null);
@@ -122,35 +130,39 @@ export const BannerAdComponent: React.FC<BannerAdComponentProps> = ({
122
130
 
123
131
  return (
124
132
  <View style={[styles.container, style]}>
125
- {/* Hiển thị loading chỉ khi chưa load được và chưa có lỗi */}
126
- {!isLoaded && !error && showLoading && (
127
- <View style={styles.loadingContainer}>
128
- <ActivityIndicator size="small" color="#007AFF" />
129
- <Text style={styles.loadingText}>{loadingText}</Text>
130
- </View>
131
- )}
132
-
133
- {/* Hiển thị error nếu có */}
134
- {error && showError && (
135
- <View style={styles.errorContainer}>
136
- <Text style={styles.errorText}>{errorText}</Text>
137
- </View>
138
- )}
139
-
140
- {/* Banner component - luôn render để load ngay */}
141
- <BannerAd
142
- key={currentAdId} // Key quan trọng để force re-render khi adId thay đổi
143
- ref={bannerRef}
144
- unitId={currentAdId}
145
- size={size}
146
- onAdLoaded={handleAdLoaded}
147
- onAdFailedToLoad={handleAdFailedToLoad}
148
- onAdOpened={handleAdOpened}
149
- onAdClosed={handleAdClosed}
150
- onAdClicked={handleAdClicked}
151
- onAdImpression={handleAdImpression}
152
- requestOptions={requestOptions}
153
- />
133
+ {!isLoaded &&
134
+ !error &&
135
+ showLoading &&
136
+ (renderLoading ? (
137
+ renderLoading()
138
+ ) : (
139
+ <Placeholder
140
+ style={styles.loadingContainer}
141
+ Animation={Fade}
142
+ Left={PlaceholderMedia}
143
+ Right={PlaceholderMedia}
144
+ >
145
+ <PlaceholderLine noMargin style={{ minHeight: 40 }} />
146
+ </Placeholder>
147
+ ))}
148
+
149
+ {error && showError && <View />}
150
+
151
+ <View style={{ minHeight: 50 }}>
152
+ <BannerAd
153
+ key={currentAdId}
154
+ ref={bannerRef}
155
+ unitId={currentAdId}
156
+ size={size}
157
+ onAdLoaded={handleAdLoaded}
158
+ onAdFailedToLoad={handleAdFailedToLoad}
159
+ onAdOpened={handleAdOpened}
160
+ onAdClosed={handleAdClosed}
161
+ onAdClicked={handleAdClicked}
162
+ onAdImpression={handleAdImpression}
163
+ requestOptions={requestOptions}
164
+ />
165
+ </View>
154
166
  </View>
155
167
  );
156
168
  };
@@ -159,18 +171,18 @@ const styles = StyleSheet.create({
159
171
  container: {
160
172
  alignItems: 'center',
161
173
  justifyContent: 'center',
162
- minHeight: 50,
163
174
  backgroundColor: 'transparent',
164
175
  },
165
176
  loadingContainer: {
166
- width: '80%',
177
+ flexDirection: 'row',
178
+ width: '100%',
167
179
  position: 'absolute',
168
180
  alignItems: 'center',
169
181
  justifyContent: 'center',
170
- zIndex: 1,
171
182
  backgroundColor: 'rgba(255, 255, 255, 0.9)',
183
+ paddingHorizontal: 20,
184
+ paddingVertical: 10,
172
185
  borderRadius: 8,
173
- padding: 12,
174
186
  },
175
187
  loadingText: {
176
188
  marginTop: 8,