@vynix-org/react-native-ads-sdk 0.2.1 → 0.2.3
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/android/src/main/AndroidManifest.xml +1 -3
- package/lib/module/ads-manager/NativeAdsManager.js +26 -8
- package/lib/module/ads-manager/NativeAdsManager.js.map +1 -1
- package/lib/module/analytics/AdjustTrackingManager.js +91 -141
- package/lib/module/analytics/AdjustTrackingManager.js.map +1 -1
- package/lib/module/analytics/TrackingManager.js +2 -2
- package/lib/module/analytics/TrackingManager.js.map +1 -1
- package/lib/module/components/NativeAdComponent.js +78 -69
- package/lib/module/components/NativeAdComponent.js.map +1 -1
- package/lib/module/components/NativeStyles.js +20 -0
- package/lib/module/components/NativeStyles.js.map +1 -1
- package/lib/module/event/config.js +27 -0
- package/lib/module/event/config.js.map +1 -0
- package/lib/module/hook/useNativeAd.js +4 -2
- package/lib/module/hook/useNativeAd.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/stores/native-ads-store.js +35 -4
- package/lib/module/stores/native-ads-store.js.map +1 -1
- package/lib/module/types/ads-types.js +1 -0
- package/lib/module/types/ads-types.js.map +1 -1
- package/lib/typescript/src/ads-manager/NativeAdsManager.d.ts.map +1 -1
- package/lib/typescript/src/analytics/AdjustTrackingManager.d.ts +22 -0
- package/lib/typescript/src/analytics/AdjustTrackingManager.d.ts.map +1 -1
- package/lib/typescript/src/components/NativeAdComponent.d.ts.map +1 -1
- package/lib/typescript/src/components/NativeStyles.d.ts +24 -0
- package/lib/typescript/src/components/NativeStyles.d.ts.map +1 -1
- package/lib/typescript/src/event/config.d.ts +11 -0
- package/lib/typescript/src/event/config.d.ts.map +1 -0
- package/lib/typescript/src/hook/useNativeAd.d.ts +1 -0
- package/lib/typescript/src/hook/useNativeAd.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/stores/native-ads-store.d.ts +3 -0
- package/lib/typescript/src/stores/native-ads-store.d.ts.map +1 -1
- package/lib/typescript/src/types/ads-types.d.ts +4 -0
- package/lib/typescript/src/types/ads-types.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/ads-manager/NativeAdsManager.ts +32 -8
- package/src/analytics/AdjustTrackingManager.ts +146 -141
- package/src/analytics/TrackingManager.ts +2 -2
- package/src/components/NativeAdComponent.tsx +97 -79
- package/src/components/NativeStyles.ts +20 -0
- package/src/event/config.ts +36 -0
- package/src/hook/useNativeAd.ts +6 -4
- package/src/index.tsx +2 -0
- package/src/stores/native-ads-store.ts +37 -2
- package/src/types/ads-types.ts +4 -0
|
@@ -3,6 +3,10 @@ export declare const styles: Readonly<{
|
|
|
3
3
|
width: string;
|
|
4
4
|
alignItems: "center";
|
|
5
5
|
};
|
|
6
|
+
overlayContainer: {
|
|
7
|
+
width: string;
|
|
8
|
+
position: "relative";
|
|
9
|
+
};
|
|
6
10
|
container: {
|
|
7
11
|
width: string;
|
|
8
12
|
backgroundColor: string;
|
|
@@ -79,6 +83,9 @@ export declare const styles: Readonly<{
|
|
|
79
83
|
alignItems: "center";
|
|
80
84
|
padding: number;
|
|
81
85
|
};
|
|
86
|
+
contentBody: {
|
|
87
|
+
flex: number;
|
|
88
|
+
};
|
|
82
89
|
headline: {
|
|
83
90
|
fontSize: number;
|
|
84
91
|
fontWeight: "700";
|
|
@@ -143,5 +150,22 @@ export declare const styles: Readonly<{
|
|
|
143
150
|
flexDirection: "row";
|
|
144
151
|
alignItems: "center";
|
|
145
152
|
};
|
|
153
|
+
refreshOverlay: {
|
|
154
|
+
backgroundColor: string;
|
|
155
|
+
justifyContent: "center";
|
|
156
|
+
alignItems: "center";
|
|
157
|
+
padding: number;
|
|
158
|
+
bottom: 0;
|
|
159
|
+
left: 0;
|
|
160
|
+
position: "absolute";
|
|
161
|
+
right: 0;
|
|
162
|
+
top: 0;
|
|
163
|
+
};
|
|
164
|
+
refreshText: {
|
|
165
|
+
marginTop: number;
|
|
166
|
+
fontSize: number;
|
|
167
|
+
color: string;
|
|
168
|
+
fontWeight: "500";
|
|
169
|
+
};
|
|
146
170
|
}>;
|
|
147
171
|
//# sourceMappingURL=NativeStyles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/NativeStyles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"NativeStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/NativeStyles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsKjB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class ConfigManager {
|
|
2
|
+
private static instance;
|
|
3
|
+
private constructor();
|
|
4
|
+
static getInstance(): ConfigManager;
|
|
5
|
+
initAdjustTracking(appToken: string, environment?: 'sandbox' | 'production'): void;
|
|
6
|
+
setEnableAdjustTracking(enable: boolean): void;
|
|
7
|
+
setEnableAnalyticsTracking(enable: boolean): void;
|
|
8
|
+
setAdjustEventToken(eventToken: string): void;
|
|
9
|
+
}
|
|
10
|
+
export declare const SdkConfig: ConfigManager;
|
|
11
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/event/config.ts"],"names":[],"mappings":"AAGA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IAEvC,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,SAAS,GAAG,YAA2B;IAKtD,uBAAuB,CAAC,MAAM,EAAE,OAAO;IAIvC,0BAA0B,CAAC,MAAM,EAAE,OAAO;IAI1C,mBAAmB,CAAC,UAAU,EAAE,MAAM;CAGvC;AAED,eAAO,MAAM,SAAS,eAA8B,CAAC"}
|
|
@@ -8,6 +8,7 @@ export declare const useNativeAd: (config: UseNativeAdConfig) => {
|
|
|
8
8
|
isLoaded: boolean;
|
|
9
9
|
isDisplayed: boolean;
|
|
10
10
|
hasError: boolean;
|
|
11
|
+
isRefreshing: boolean;
|
|
11
12
|
isUsingHighPriority: boolean;
|
|
12
13
|
hasTriedHighPriority: boolean;
|
|
13
14
|
loadAd: (customConfig?: Partial<AdConfig>) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNativeAd.d.ts","sourceRoot":"","sources":["../../../../src/hook/useNativeAd.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAI5B,KAAK,iBAAiB,GAAG,QAAQ,GAAG,kBAAkB,CAAC;AAEvD,eAAO,MAAM,WAAW,GAAI,QAAQ,iBAAiB
|
|
1
|
+
{"version":3,"file":"useNativeAd.d.ts","sourceRoot":"","sources":["../../../../src/hook/useNativeAd.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAI5B,KAAK,iBAAiB,GAAG,QAAQ,GAAG,kBAAkB,CAAC;AAEvD,eAAO,MAAM,WAAW,GAAI,QAAQ,iBAAiB;;;;;;;;;;;4BAqC3B,OAAO,CAAC,QAAQ,CAAC;+BAejB,OAAO,CAAC,QAAQ,CAAC;;;;CA8G1C,CAAC"}
|
|
@@ -6,5 +6,6 @@ export { useAppOpenAd } from './hook/useAppOpenAd';
|
|
|
6
6
|
export { BannerAdComponent } from './components/BannerAdComponent';
|
|
7
7
|
export { NativeAdComponent } from './components/NativeAdComponent';
|
|
8
8
|
export { NativeAdFullscreenComponent } from './components/NativeAdFullscreenComponent';
|
|
9
|
+
export { SdkConfig } from './event/config';
|
|
9
10
|
export type { AdStatus, AdConfig, AdData, AdInstance, AdManagerState, AdManagerActions, AdManagerContextType, UseAdOptions, UseNativeAdOptions, UseBannerAdOptions, UseInterstitialAdOptions, UseRewardedAdOptions, UseRewardedInterstitialAdOptions, InterstitialAdConfig, RewardedAdConfig, RewardedInterstitialAdConfig, RewardedAdInstance, InterstitialAdInstance, RewardedInterstitialAdInstance, } from './types/ads-types';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,kBAAkB,EAClB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC"}
|
|
@@ -3,6 +3,7 @@ interface NativeAdStore {
|
|
|
3
3
|
ads: Map<string, AdInstance>;
|
|
4
4
|
loadingKeys: Set<string>;
|
|
5
5
|
errors: Map<string, string>;
|
|
6
|
+
refreshingKeys: Set<string>;
|
|
6
7
|
preloadAd: (config: AdConfig) => Promise<void>;
|
|
7
8
|
loadAd: (config: AdConfig) => Promise<void>;
|
|
8
9
|
displayAd: (adKey: string) => Promise<AdInstance | null>;
|
|
@@ -17,9 +18,11 @@ interface NativeAdStore {
|
|
|
17
18
|
getErrorAds: () => AdInstance[];
|
|
18
19
|
isUsingHighPriority: (adKey: string) => boolean;
|
|
19
20
|
hasTriedHighPriority: (adKey: string) => boolean;
|
|
21
|
+
isRefreshing: (adKey: string) => boolean;
|
|
20
22
|
_updateAd: (ad: AdInstance) => void;
|
|
21
23
|
_removeAd: (adKey: string) => void;
|
|
22
24
|
_setLoading: (adKey: string, loading: boolean) => void;
|
|
25
|
+
_setRefreshing: (adKey: string, refreshing: boolean) => void;
|
|
23
26
|
_setError: (adKey: string, error: string | null) => void;
|
|
24
27
|
_clearError: (adKey: string) => void;
|
|
25
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-ads-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/native-ads-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9E,UAAU,aAAa;IAErB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG5B,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,UAAU,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,UAAU,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,UAAU,EAAE,CAAC;IAChC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"native-ads-store.d.ts","sourceRoot":"","sources":["../../../../src/stores/native-ads-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9E,UAAU,aAAa;IAErB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAG5B,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,IAAI,CAAC;IAGxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,UAAU,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,UAAU,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,UAAU,EAAE,CAAC;IAChC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAGzC,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,gBAAgB;;;;;;;;EA6M5B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare enum AdStatus {
|
|
2
2
|
IDLE = "idle",
|
|
3
3
|
LOADING = "loading",
|
|
4
|
+
REFRESHING = "refreshing",
|
|
4
5
|
LOADED = "loaded",
|
|
5
6
|
DISPLAYED = "displayed",
|
|
6
7
|
ERROR = "error"
|
|
@@ -40,11 +41,13 @@ export interface AdInstance {
|
|
|
40
41
|
retryCount: number;
|
|
41
42
|
isUsingHighPriority?: boolean;
|
|
42
43
|
hasTriedHighPriority?: boolean;
|
|
44
|
+
isRefreshing?: boolean;
|
|
43
45
|
}
|
|
44
46
|
export interface AdManagerState {
|
|
45
47
|
ads: Map<string, AdInstance>;
|
|
46
48
|
loadingKeys: Set<string>;
|
|
47
49
|
displayedKeys: Set<string>;
|
|
50
|
+
refreshingKeys: Set<string>;
|
|
48
51
|
}
|
|
49
52
|
export interface AdManagerActions {
|
|
50
53
|
preloadAd: (adKey: string, adId: string, config?: Partial<AdConfig>) => Promise<void>;
|
|
@@ -113,6 +116,7 @@ export interface GenericAdManagerState {
|
|
|
113
116
|
ads: Map<string, AnyAdInstance>;
|
|
114
117
|
loadingKeys: Set<string>;
|
|
115
118
|
displayedKeys: Set<string>;
|
|
119
|
+
refreshingKeys: Set<string>;
|
|
116
120
|
}
|
|
117
121
|
export interface GenericAdManagerActions {
|
|
118
122
|
preloadAd: (adKey: string, adId: string, adType: AdType, config?: Partial<AdConfig | BannerAdConfig | InterstitialAdConfig | RewardedAdConfig | RewardedInterstitialAdConfig>) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ads-types.d.ts","sourceRoot":"","sources":["../../../../src/types/ads-types.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ads-types.d.ts","sourceRoot":"","sources":["../../../../src/types/ads-types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vynix-org/react-native-ads-sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "This is ads sdk for vynix",
|
|
5
5
|
"access": "public",
|
|
6
6
|
"main": "./lib/module/index.js",
|
|
@@ -176,6 +176,7 @@
|
|
|
176
176
|
"version": "0.54.3"
|
|
177
177
|
},
|
|
178
178
|
"dependencies": {
|
|
179
|
+
"react-native-adjust": "^5.4.4",
|
|
179
180
|
"rn-placeholder": "^3.0.3",
|
|
180
181
|
"zustand": "^5.0.8"
|
|
181
182
|
}
|
|
@@ -14,6 +14,7 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
14
14
|
ads: new Map(),
|
|
15
15
|
loadingKeys: new Set(),
|
|
16
16
|
displayedKeys: new Set(),
|
|
17
|
+
refreshingKeys: new Set(),
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
private configs: Map<string, AdConfig> = new Map();
|
|
@@ -62,6 +63,7 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
62
63
|
retryCount: 0,
|
|
63
64
|
isUsingHighPriority: false,
|
|
64
65
|
hasTriedHighPriority: false,
|
|
66
|
+
isRefreshing: false,
|
|
65
67
|
};
|
|
66
68
|
this.state.ads.set(adKey, adInstance);
|
|
67
69
|
}
|
|
@@ -103,6 +105,8 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
103
105
|
if (ad.status === AdStatus.LOADED) {
|
|
104
106
|
ad.status = AdStatus.DISPLAYED;
|
|
105
107
|
ad.displayTime = Date.now();
|
|
108
|
+
ad.isRefreshing = false;
|
|
109
|
+
this.state.refreshingKeys.delete(adKey);
|
|
106
110
|
this.state.displayedKeys.add(adKey);
|
|
107
111
|
|
|
108
112
|
this.emit('adDisplayed', ad);
|
|
@@ -155,6 +159,7 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
155
159
|
this.state.ads.delete(adKey);
|
|
156
160
|
this.state.loadingKeys.delete(adKey);
|
|
157
161
|
this.state.displayedKeys.delete(adKey);
|
|
162
|
+
this.state.refreshingKeys.delete(adKey);
|
|
158
163
|
this.configs.delete(adKey);
|
|
159
164
|
this.loadPromises.delete(adKey);
|
|
160
165
|
this.emit('adRemoved', adKey);
|
|
@@ -172,9 +177,12 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
172
177
|
// Reset status
|
|
173
178
|
const ad = this.state.ads.get(adKey);
|
|
174
179
|
if (ad) {
|
|
175
|
-
ad.status = AdStatus.
|
|
180
|
+
ad.status = AdStatus.REFRESHING;
|
|
176
181
|
ad.error = null;
|
|
177
182
|
ad.retryCount = 0;
|
|
183
|
+
ad.isRefreshing = true;
|
|
184
|
+
this.state.refreshingKeys.add(adKey);
|
|
185
|
+
this.emit('adRefreshing', ad);
|
|
178
186
|
}
|
|
179
187
|
|
|
180
188
|
return this.preloadAd(config);
|
|
@@ -197,6 +205,7 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
197
205
|
ads: new Map(this.state.ads),
|
|
198
206
|
loadingKeys: new Set(this.state.loadingKeys),
|
|
199
207
|
displayedKeys: new Set(this.state.displayedKeys),
|
|
208
|
+
refreshingKeys: new Set(this.state.refreshingKeys),
|
|
200
209
|
};
|
|
201
210
|
}
|
|
202
211
|
|
|
@@ -243,21 +252,30 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
243
252
|
}
|
|
244
253
|
}
|
|
245
254
|
|
|
246
|
-
|
|
255
|
+
const isRefreshing = this.state.refreshingKeys.has(adKey);
|
|
256
|
+
|
|
257
|
+
ad.status = isRefreshing ? AdStatus.REFRESHING : AdStatus.LOADING;
|
|
247
258
|
ad.retryCount++;
|
|
259
|
+
ad.isRefreshing = isRefreshing;
|
|
248
260
|
this.state.loadingKeys.add(adKey);
|
|
249
261
|
|
|
250
262
|
this.emit('adLoading', ad);
|
|
251
263
|
|
|
252
264
|
try {
|
|
253
265
|
// Gọi native method để load ad
|
|
254
|
-
const adData = await this.loadNativeAd(
|
|
266
|
+
const adData = await this.loadNativeAd(
|
|
267
|
+
adKey,
|
|
268
|
+
adIdToLoad,
|
|
269
|
+
config.timeout!
|
|
270
|
+
);
|
|
255
271
|
|
|
256
272
|
ad.status = AdStatus.LOADED;
|
|
257
273
|
ad.data = adData;
|
|
258
274
|
ad.error = null;
|
|
259
275
|
ad.loadTime = Date.now();
|
|
260
276
|
ad.retryCount = 0;
|
|
277
|
+
ad.isRefreshing = false;
|
|
278
|
+
this.state.refreshingKeys.delete(adKey);
|
|
261
279
|
|
|
262
280
|
// Nếu load high priority thành công, đánh dấu đã thử
|
|
263
281
|
if (ad.isUsingHighPriority) {
|
|
@@ -269,7 +287,9 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
269
287
|
} catch (error) {
|
|
270
288
|
ad.status = AdStatus.ERROR;
|
|
271
289
|
ad.error = error instanceof Error ? error.message : String(error);
|
|
290
|
+
ad.isRefreshing = false;
|
|
272
291
|
this.state.loadingKeys.delete(adKey);
|
|
292
|
+
this.state.refreshingKeys.delete(adKey);
|
|
273
293
|
this.emit('adError', ad);
|
|
274
294
|
throw error;
|
|
275
295
|
}
|
|
@@ -312,7 +332,11 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
312
332
|
/**
|
|
313
333
|
* Load native ad sử dụng react-native-google-mobile-ads
|
|
314
334
|
*/
|
|
315
|
-
private async loadNativeAd(
|
|
335
|
+
private async loadNativeAd(
|
|
336
|
+
adKey: string,
|
|
337
|
+
adId: string,
|
|
338
|
+
timeout: number
|
|
339
|
+
): Promise<AdData> {
|
|
316
340
|
try {
|
|
317
341
|
// Đảm bảo Google Mobile Ads SDK đã được khởi tạo
|
|
318
342
|
await googleMobileAdsManager.initialize();
|
|
@@ -355,8 +379,6 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
355
379
|
adFormat: 'Native',
|
|
356
380
|
});
|
|
357
381
|
|
|
358
|
-
console.log('nativeAd', 'loadNativeAd');
|
|
359
|
-
|
|
360
382
|
// Thêm event listeners cho native ad
|
|
361
383
|
const unsubscribeClicked = nativeAd.addAdEventListener(
|
|
362
384
|
NativeAdEventType.CLICKED,
|
|
@@ -366,7 +388,7 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
366
388
|
adUnitId: finalAdId,
|
|
367
389
|
adFormat: 'Native',
|
|
368
390
|
});
|
|
369
|
-
this.emit('adClicked', { adId, nativeAd });
|
|
391
|
+
this.emit('adClicked', { adKey, adId, nativeAd });
|
|
370
392
|
}
|
|
371
393
|
);
|
|
372
394
|
|
|
@@ -378,7 +400,7 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
378
400
|
adUnitId: finalAdId,
|
|
379
401
|
adFormat: 'Native',
|
|
380
402
|
});
|
|
381
|
-
this.emit('adImpression', { adId, nativeAd });
|
|
403
|
+
this.emit('adImpression', { adKey, adId, nativeAd });
|
|
382
404
|
}
|
|
383
405
|
);
|
|
384
406
|
|
|
@@ -411,6 +433,8 @@ export class NativeAdsManager extends CustomEventEmitter {
|
|
|
411
433
|
// }
|
|
412
434
|
// );
|
|
413
435
|
|
|
436
|
+
console.log('loadNativeAd', nativeAd);
|
|
437
|
+
|
|
414
438
|
// Chuyển đổi native ad data thành AdData format
|
|
415
439
|
const adData: AdData = {
|
|
416
440
|
id: adId,
|
|
@@ -1,141 +1,146 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
1
|
+
import { Adjust, AdjustEvent, AdjustConfig } from 'react-native-adjust';
|
|
2
|
+
import type { EventParams } from './EventTracking';
|
|
3
|
+
|
|
4
|
+
export type RevenueParams = {
|
|
5
|
+
adUnitId?: string;
|
|
6
|
+
adFormat?: string;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export class AdjustTrackingManager {
|
|
10
|
+
private static instance: AdjustTrackingManager;
|
|
11
|
+
private isEnabled = true;
|
|
12
|
+
private isInitialized = false;
|
|
13
|
+
private initPromise: Promise<void> | null = null;
|
|
14
|
+
private eventToken: string = '';
|
|
15
|
+
|
|
16
|
+
private constructor() {}
|
|
17
|
+
|
|
18
|
+
static getInstance(): AdjustTrackingManager {
|
|
19
|
+
if (!AdjustTrackingManager.instance) {
|
|
20
|
+
AdjustTrackingManager.instance = new AdjustTrackingManager();
|
|
21
|
+
}
|
|
22
|
+
return AdjustTrackingManager.instance;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async initialize(
|
|
26
|
+
appToken: string,
|
|
27
|
+
environment: 'sandbox' | 'production' = 'production'
|
|
28
|
+
): Promise<void> {
|
|
29
|
+
if (this.isInitialized) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (this.initPromise) {
|
|
34
|
+
return this.initPromise;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.initPromise = this.initializeInternal(appToken, environment);
|
|
38
|
+
return this.initPromise;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private async initializeInternal(
|
|
42
|
+
appToken: string,
|
|
43
|
+
environment: 'sandbox' | 'production'
|
|
44
|
+
): Promise<void> {
|
|
45
|
+
try {
|
|
46
|
+
const adjustConfig = new AdjustConfig(
|
|
47
|
+
appToken,
|
|
48
|
+
environment === 'sandbox'
|
|
49
|
+
? AdjustConfig.EnvironmentSandbox
|
|
50
|
+
: AdjustConfig.EnvironmentProduction
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
adjustConfig.setAttributionCallback((attribution) => {
|
|
54
|
+
console.log('Adjust attribution:', attribution);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
adjustConfig.setEventTrackingSucceededCallback(
|
|
58
|
+
(eventSuccessResponseData) => {
|
|
59
|
+
console.log(
|
|
60
|
+
'Adjust event tracking succeeded:',
|
|
61
|
+
eventSuccessResponseData
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
adjustConfig.setEventTrackingFailedCallback(
|
|
67
|
+
(eventFailureResponseData) => {
|
|
68
|
+
console.error(
|
|
69
|
+
'Adjust event tracking failed:',
|
|
70
|
+
eventFailureResponseData
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
Adjust.initSdk(adjustConfig);
|
|
76
|
+
this.isInitialized = true;
|
|
77
|
+
console.log('Adjust Tracking Manager initialized successfully');
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error('Failed to initialize Adjust Tracking Manager:', error);
|
|
80
|
+
this.isInitialized = false;
|
|
81
|
+
this.initPromise = null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
isTrackingEnabled(): boolean {
|
|
86
|
+
return this.isEnabled;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
setTrackingEnabled(enabled: boolean): void {
|
|
90
|
+
this.isEnabled = enabled;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
setEventToken(eventToken: string): void {
|
|
94
|
+
this.eventToken = eventToken;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async trackRevenue(params?: EventParams): Promise<void> {
|
|
98
|
+
if (!this.isEnabled || !this.eventToken || this.eventToken.length === 0) {
|
|
99
|
+
console.warn('Adjust revenue tracking is disabled.');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
await this.ensureInitialized();
|
|
105
|
+
|
|
106
|
+
const adjustEvent = new AdjustEvent(this.eventToken);
|
|
107
|
+
adjustEvent.setRevenue(params?.value ?? 0, params?.currency ?? 'USD');
|
|
108
|
+
|
|
109
|
+
if (params?.adUnitId) {
|
|
110
|
+
adjustEvent.addCallbackParameter('ad_unit_id', params.adUnitId);
|
|
111
|
+
}
|
|
112
|
+
if (params?.adFormat) {
|
|
113
|
+
adjustEvent.addCallbackParameter('ad_format', params.adFormat);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
Adjust.trackEvent(adjustEvent);
|
|
117
|
+
console.log(`Adjust revenue event tracked: ${this.eventToken}`, {
|
|
118
|
+
value: params?.value ?? 0,
|
|
119
|
+
currency: params?.currency ?? 'USD',
|
|
120
|
+
params,
|
|
121
|
+
});
|
|
122
|
+
} catch (error) {
|
|
123
|
+
console.error(
|
|
124
|
+
`Failed to track Adjust revenue event ${this.eventToken}:`,
|
|
125
|
+
error
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private async ensureInitialized(): Promise<void> {
|
|
131
|
+
if (this.isInitialized) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (this.initPromise) {
|
|
136
|
+
await this.initPromise;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
throw new Error(
|
|
141
|
+
'Adjust Tracking Manager chưa được khởi tạo. Vui lòng gọi initialize() trước.'
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export const adjustTrackingManager = AdjustTrackingManager.getInstance();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { adjustTrackingManager } from './AdjustTrackingManager';
|
|
2
2
|
import { analyticsManager } from './AnalyticsManager';
|
|
3
3
|
import type { EventParams } from './EventTracking';
|
|
4
4
|
|
|
@@ -24,7 +24,7 @@ export class TrackingManager {
|
|
|
24
24
|
|
|
25
25
|
async onTrackingRevenueAd(params?: EventParams) {
|
|
26
26
|
await analyticsManager.logRevenueAdEvent(params);
|
|
27
|
-
|
|
27
|
+
await adjustTrackingManager.trackRevenue(params);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
async onTrackingAdLoaded(params?: EventParams) {
|