adwhale-sdk-react-native 2.7.203 → 2.7.204

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,5 +1,5 @@
1
1
  # adwhale-sdk-react-native
2
- AdWhale Android 네이티브 광고 미디에이션 SDK를
2
+ ADwhale Android 네이티브 광고 미디에이션 SDK를
3
3
  React Native 환경에서 사용할 수 있도록 제공하는 공식 SDK입니다.
4
4
 
5
5
  - Android 네이티브 SDK 기반
@@ -43,7 +43,7 @@ npm install adwhale-sdk-react-native
43
43
  운영 안정성을 중시하는 경우
44
44
  ```json
45
45
  {
46
- "adwhale-sdk-react-native": "~2.7.203"
46
+ "adwhale-sdk-react-native": "~2.7.204"
47
47
  }
48
48
  ```
49
49
  - Android SDK 2.7.2 기반 유지
@@ -52,7 +52,7 @@ npm install adwhale-sdk-react-native
52
52
  ### 동일한 Android SDK 기반의 최신 RN 수정만 사용
53
53
  ```json
54
54
  {
55
- "adwhale-sdk-react-native": "^2.7.203"
55
+ "adwhale-sdk-react-native": "^2.7.204"
56
56
  }
57
57
  ```
58
58
  - Android SDK 2.7.x 범위 내 최신 RN 수정 자동 반영
@@ -62,7 +62,7 @@ npm install adwhale-sdk-react-native
62
62
  ### 특정 버전을 완전히 고정하여 사용하는 경우
63
63
  ```json
64
64
  {
65
- "adwhale-sdk-react-native": "2.7.203"
65
+ "adwhale-sdk-react-native": "2.7.204"
66
66
  }
67
67
  ```
68
68
 
@@ -78,7 +78,10 @@ npm install adwhale-sdk-react-native
78
78
 
79
79
 
80
80
  ## Example Project
81
- SDK 동작을 바로 확인할 수 있는 example 프로젝트가 포함되어 있습니다.
81
+ SDK 동작을 바로 확인할 수 있는 example 프로젝트를 제공합니다.
82
+ - [React Native 샘플](https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative/tree/main/ReactNativeSample)
83
+ - [Expo 샘플](https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative/tree/main/ExpoSample)
84
+ yarn 사용시
82
85
  ```sh
83
86
  yarn install
84
87
  yarn prepare
@@ -86,6 +89,13 @@ cd example
86
89
  yarn android
87
90
  ```
88
91
 
92
+ npm 사용시
93
+ ```sh
94
+ npm install
95
+ cd example
96
+ npm run android
97
+ ```
98
+
89
99
  ## Expo Support
90
100
  다음 환경에서 사용 가능합니다.
91
101
  - Expo Bare Workflow
@@ -114,8 +124,21 @@ cd example/android
114
124
  npx react-native doctor
115
125
  ```
116
126
 
127
+ ## Changelog
128
+ | 배포버전 | 내용 | 배포날짜 |
129
+ |---------|-----------------------------------------------------------------------------------------------------------------------------------------------|------------|
130
+ | 2.7.204 | 버그 및 샘플 수정 | 2026.01.22 |
131
+ | 2.7.203 | 버그 및 샘플 수정 | 2026.01.19 |
132
+ | 2.7.202 | 버그 및 샘플 수정 | 2026.01.19 |
133
+ | 2.7.201 | 버그 및 샘플 수정 | 2026.01.12 |
134
+ | 2.7.200 | 앱오프닝 광고 추가 (ADwhale Android SDK v2.7.2에서 추가됨) | 2026.01.09 |
135
+ | 2.7.102 | gcoder 및 placement name 추가 | 2025.12.29 |
136
+ | 2.7.101 | 버그 및 샘플 수정 | 2025.12.23 |
137
+ | 2.7.100 | 네이티브 광고 추가 (ADwhale Android SDK v2.7.0) | 2025.12.15 |
138
+ | | GDPR 기능 추가 (ADwhale Android SDK v2.7.0) | |
139
+ | | 적응형 배너 추가 (ADwhale Android SDK v2.7.1) | |
117
140
 
118
141
  ## Learn More
142
+ - [ADwhale ReactNative 가이드](https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk)
119
143
  - [React Native Documentation](https://reactnative.dev/docs/getting-started)
120
144
  - [Expo Documentation](https://docs.expo.dev)
121
- - [AdWhale SDK Guide](https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk)
@@ -2,6 +2,21 @@ plugins {
2
2
  id "com.android.library"
3
3
  id "com.facebook.react"
4
4
  }
5
+ Properties properties = new Properties()
6
+ // local.properties 경로 탐색 (라이브러리 단독 빌드 vs example 앱 빌드)
7
+ def localPropertiesCandidates = [
8
+ project.file('../local.properties'), // 라이브러리 단독 빌드: android/ → adwhale-sdk-react-native/
9
+ project.rootProject.file('../../local.properties') // example 앱 빌드: example/android/ → adwhale-sdk-react-native/
10
+ ]
11
+ def lp = localPropertiesCandidates.find { it.exists() }
12
+ if (lp != null) {
13
+ properties.load(lp.newDataInputStream())
14
+ }
15
+ ext.sdkVersionMajor = (properties["sdkVersionMajor"] ?: "1")
16
+ ext.sdkVersionMinor = (properties["sdkVersionMinor"] ?: "0")
17
+ ext.sdkVersionPatch = (properties["sdkVersionPatch"] ?: "0")
18
+ ext.sdkVersionCode = Integer.valueOf((Integer.parseInt(sdkVersionMajor)*10000) + (Integer.parseInt(sdkVersionMinor)*100) + Integer.parseInt(sdkVersionPatch))
19
+ ext.sdkVersion = "${sdkVersionMajor}.${sdkVersionMinor}.${sdkVersionPatch}"
5
20
 
6
21
  def resolveNodeBinary() {
7
22
  def candidateSources = [
@@ -120,19 +135,4 @@ dependencies {
120
135
  // 기본 디펜던시: ADwhale Mediation SDK Repository
121
136
  implementation "net.adwhale.sdk.mediation:adwhale-mediation-sdk:2.7.2"
122
137
 
123
- // 옵션 디펜던시(제외가능): Cauly Adapter SDK Repository
124
- implementation "net.adwhale.sdk.cauly.adapter:cauly-sdk:3.5.41.0"
125
-
126
- // 옵션 디펜던시(제외가능): Admize Adapter SDK Repository
127
- implementation "net.adwhale.sdk.admize.adapter:admize-sdk:1.0.8.0"
128
-
129
- // 옵션 디펜던시(제외가능): AdFit Adapter SDK Repository
130
- implementation "net.adwhale.sdk.adfit.adapter:adfit-sdk:3.17.2.5"
131
-
132
- // 옵션 디펜던시(제외가능): Admob Adapter SDK Repository
133
- implementation "net.adwhale.sdk.admob.adapter:admob-sdk:24.3.0.2"
134
-
135
- // 옵션 디펜던시(제외가능): Levelplay Adapter SDK Repository
136
- implementation "net.adwhale.sdk.levelplay.adapter:levelplay-sdk:8.7.0.6"
137
-
138
138
  }
@@ -151,114 +151,3 @@
151
151
  -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationAppOpenAdListener {*;}
152
152
 
153
153
  #================== AdWhale Mediation SDK Proguard for Release 적용 코드 끝 ==================
154
-
155
- #================== AdWhale Cauly Adapter SDK Proguard for Release 적용 코드 시작 ==================
156
-
157
- -keep class net.adwhale.sdk.cauly.adapter.CaulyAdBannerLoader {*;}
158
-
159
- -keep class net.adwhale.sdk.cauly.adapter.CaulyAdBannerPreLoader {*;}
160
-
161
- -keep class net.adwhale.sdk.cauly.adapter.CaulyAdInterstitialLoader {*;}
162
-
163
- -keep class net.adwhale.sdk.cauly.adapter.CaulyAdRewardLoader {*;}
164
-
165
- -keep class net.adwhale.sdk.cauly.adapter.CaulyCustomEventInterstitialLoader {*;}
166
-
167
- -keep class net.adwhale.sdk.cauly.adapter.CaulyCustomEventBannerLoader {*;}
168
-
169
- -keep class net.adwhale.sdk.cauly.adapter.CaulyCustomEventRewardLoader {*;}
170
-
171
- #================== AdWhale Cauly Adapter SDK Proguard for Release 적용 코드 끝 ==================
172
-
173
- #================== AdWhale Admize Adapter SDK Proguard for Release 적용 코드 시작 ==================
174
-
175
- -keep class net.adwhale.sdk.admize.adapter.AdmizeAdBannerLoader {*;}
176
-
177
- -keep class net.adwhale.sdk.admize.adapter.AdmizeAdBannerPreLoader {*;}
178
-
179
- -keep class net.adwhale.sdk.admize.adapter.AdmizeAdInterstitialLoader {*;}
180
-
181
- -keep class net.adwhale.sdk.admize.adapter.AdmizeAdRewardLoader {*;}
182
-
183
- #================== AdWhale Admize Adapter SDK Proguard for Release 적용 코드 끝 ==================
184
-
185
- #================== AdWhale AdFit Adapter SDK Proguard for Release 적용 코드 시작 ==================
186
-
187
- -keep class net.adwhale.sdk.adfit.adapter.AdFitAdBannerLoader {*;}
188
-
189
- -keep class net.adwhale.sdk.adfit.adapter.AdFitAdBannerPreLoader {*;}
190
-
191
- #================== AdWhale AdFit Adapter SDK Proguard for Release 적용 코드 끝 ==================
192
-
193
- #================== AdWhale AdManager Adapter SDK Proguard for Release 적용 코드 시작 ==================
194
-
195
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdBannerLoader {*;}
196
-
197
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdBannerPreLoader {*;}
198
-
199
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdInterstitialLoader {*;}
200
-
201
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdNativeTemplateLoader {*;}
202
-
203
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdNativeCustomBindingLoader {*;}
204
-
205
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdRewardLoader {*;}
206
-
207
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdRewardedInterstitialLoader {*;}
208
- -keep class net.adwhale.sdk.admob.adapter.AdManagerAdAppOpeningLoader {*;}
209
-
210
- #================== AdWhale AdManager Adapter SDK Proguard for Release 적용 코드 끝 ==================
211
-
212
- #================== AdWhale Admob Adapter SDK Proguard for Release 적용 코드 시작 ==================
213
-
214
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdBannerLoader {*;}
215
-
216
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdBannerPreLoader {*;}
217
-
218
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdInterstitialLoader {*;}
219
-
220
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdNativeTemplateLoader {*;}
221
-
222
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdNativeCustomBindingLoader {*;}
223
-
224
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdRewardLoader {*;}
225
-
226
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdRewardedInterstitialLoader {*;}
227
-
228
- -keep class net.adwhale.sdk.admob.adapter.AdmobAdAppOpeningLoader {*;}
229
-
230
- -keep class net.adwhale.sdk.admob.adapter.custom.cauly.AdMobCaulyEvent {*;}
231
-
232
- -keep class net.adwhale.sdk.admob.adapter.custom.cauly.CaulyMediationBannerAd {*;}
233
-
234
- -keep class net.adwhale.sdk.admob.adapter.custom.cauly.CaulyMediationInterstitialAd {*;}
235
-
236
- -keep class net.adwhale.sdk.admob.adapter.custom.cauly.CaulyMediationRewardAd {*;}
237
-
238
- # AdWhale AdMob Adapter - Keep the public entry points for reflection
239
- -keep public class net.adwhale.sdk.admob.adapter.AdMobPrivacyAdapter {
240
- public static net.adwhale.sdk.admob.adapter.AdMobPrivacyAdapter getInstance();
241
- }
242
-
243
- #================== AdWhale Admob Adapter SDK Proguard for Release 적용 코드 끝 ==================
244
-
245
- #================== AdWhale LevelPlay Adapter SDK Proguard for Release 적용 코드 시작 ==================
246
-
247
- -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdBannerLoader {*;}
248
-
249
- -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdBannerPreLoader {*;}
250
-
251
- -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdInterstitialLoader {*;}
252
-
253
- -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdRewardLoader {*;}
254
-
255
- -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdNativeCustomBindingLoader {*;}
256
-
257
- -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdNativeTemplateLoader {*;}
258
-
259
- # AdWhale LevelPlay Adapter - Keep the public entry points for reflection
260
- -keep public class net.adwhale.sdk.levelplay.adapter.LevelPlayPrivacyAdapter {
261
- public static net.adwhale.sdk.levelplay.adapter.LevelPlayPrivacyAdapter getInstance();
262
- }
263
-
264
- #================== AdWhale LevelPlay Adapter SDK Proguard for Release 적용 코드 끝 ==================
@@ -100,7 +100,11 @@ public class RNAdWhaleMediationAdSettingModule extends NativeAdwhaleSdkReactNati
100
100
  Log.i(REACT_CLASS_NAME, ".initialize()");
101
101
  Activity currentActivity = getCurrentActivity();
102
102
  if (currentActivity == null) {
103
- promise.reject("NO_ACTIVITY", "Unable to initialize AdWhale SDK: No activity available");
103
+ WritableMap errorResult = Arguments.createMap();
104
+ errorResult.putInt("statusCode", -1);
105
+ errorResult.putString("message", "Unable to initialize AdWhale SDK: No activity available");
106
+ errorResult.putBoolean("isSuccess", false);
107
+ promise.resolve(errorResult);
104
108
  return;
105
109
  }
106
110
 
@@ -110,7 +114,11 @@ public class RNAdWhaleMediationAdSettingModule extends NativeAdwhaleSdkReactNati
110
114
  @Override
111
115
  public void onInitComplete(int statusCode, String message) {
112
116
  Log.i(REACT_CLASS_NAME, ".onInitComplete(" + statusCode + ", " + message + ")");
113
- promise.resolve(statusCode);
117
+ WritableMap result = Arguments.createMap();
118
+ result.putInt("statusCode", statusCode);
119
+ result.putString("message", message);
120
+ result.putBoolean("isSuccess", statusCode == 100);
121
+ promise.resolve(result);
114
122
  }
115
123
  });
116
124
  }
@@ -108,21 +108,32 @@ public class RNAdWhaleMediationAdView extends ViewGroupManager<RNWrapperView> {
108
108
  if (adView == null) return;
109
109
 
110
110
  ADWHALE_AD_SIZE adSize = ADWHALE_AD_SIZE.DEFAULT;
111
- if ("320x50".equals(adSizeName)) {
111
+
112
+ if ("BANNER320x50".equals(adSizeName)) {
112
113
  adSize = ADWHALE_AD_SIZE.BANNER320x50;
113
- } else if ("320x100".equals(adSizeName)) {
114
+ } else if ("BANNER320x100".equals(adSizeName)) {
114
115
  adSize = ADWHALE_AD_SIZE.BANNER320x100;
115
- } else if ("300x250".equals(adSizeName)) {
116
+ } else if ("BANNER300x250".equals(adSizeName)) {
116
117
  adSize = ADWHALE_AD_SIZE.BANNER300x250;
117
- } else if ("250x250".equals(adSizeName)) {
118
+ } else if ("BANNER250x250".equals(adSizeName)) {
118
119
  adSize = ADWHALE_AD_SIZE.BANNER250x250;
119
120
  } else if ("ADAPTIVE_ANCHOR".equals(adSizeName)) {
120
121
  adSize = ADWHALE_AD_SIZE.ADAPTIVE_ANCHOR;
121
122
  }
123
+
122
124
  adView.setAdwhaleAdSize(adSize);
123
125
  Log.d(REACT_CLASS_NAME, "Ad size set to: " + adSize.name());
124
126
  }
125
127
 
128
+ @ReactProp(name = "adaptiveAnchorWidth", defaultInt = 0)
129
+ public void setAdaptiveAnchorWidth(RNWrapperView view, int width) {
130
+ AdWhaleMediationAdView adView = getAdWhaleMediationAdView(view);
131
+ if (adView != null) {
132
+ adView.setAdaptiveAnchorWidth(width);
133
+ Log.d(REACT_CLASS_NAME, "Adaptive anchor width set to: " + width);
134
+ }
135
+ }
136
+
126
137
  @ReactProp(name = "loadAd")
127
138
  public void setLoadAd(RNWrapperView view, boolean loadAd) {
128
139
  if (loadAd) {
@@ -4,16 +4,40 @@
4
4
  import React from 'react';
5
5
  import { requireNativeComponent } from 'react-native';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * AdWhale 배너 광고 사이즈 enum
9
+ * Android SDK의 ADWHALE_AD_SIZE enum과 매핑됩니다.
10
+ */
11
+ export let AdWhaleAdSize = /*#__PURE__*/function (AdWhaleAdSize) {
12
+ /** 표준 배너 (320x50) */
13
+ AdWhaleAdSize["BANNER_320x50"] = "BANNER320x50";
14
+ /** 큰 배너 (320x100) */
15
+ AdWhaleAdSize["BANNER_320x100"] = "BANNER320x100";
16
+ /** 중간 직사각형 (300x250) */
17
+ AdWhaleAdSize["BANNER_300x250"] = "BANNER300x250";
18
+ /** 정사각형 (250x250) */
19
+ AdWhaleAdSize["BANNER_250x250"] = "BANNER250x250";
20
+ /** 적응형 앵커 배너 - adaptiveAnchorWidth와 함께 사용 */
21
+ AdWhaleAdSize["ADAPTIVE_ANCHOR"] = "ADAPTIVE_ANCHOR";
22
+ return AdWhaleAdSize;
23
+ }({});
7
24
  const RNAdWhaleMediationAdView = requireNativeComponent('RNAdWhaleMediationAdView');
8
25
  export const AdWhaleAdView = ({
9
26
  onAdLoadFailed,
27
+ adSize,
28
+ adaptiveAnchorWidth,
10
29
  ...restProps
11
30
  }) => {
12
31
  const handleAdLoadFailed = e => {
13
32
  onAdLoadFailed?.(e.nativeEvent);
14
33
  };
34
+
35
+ // ADAPTIVE_ANCHOR일 때만 adaptiveAnchorWidth를 네이티브로 전달
36
+ const nativeAdaptiveAnchorWidth = adSize === AdWhaleAdSize.ADAPTIVE_ANCHOR ? adaptiveAnchorWidth : undefined;
15
37
  return /*#__PURE__*/_jsx(RNAdWhaleMediationAdView, {
16
38
  ...restProps,
39
+ adSize: adSize,
40
+ adaptiveAnchorWidth: nativeAdaptiveAnchorWidth,
17
41
  onAdLoadFailed: onAdLoadFailed ? handleAdLoadFailed : undefined
18
42
  });
19
43
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","requireNativeComponent","jsx","_jsx","RNAdWhaleMediationAdView","AdWhaleAdView","onAdLoadFailed","restProps","handleAdLoadFailed","e","nativeEvent","undefined"],"sourceRoot":"../../src","sources":["AdWhaleAdView.tsx"],"mappings":";;AAAA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,sBAAsB,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAyCtD,MAAMC,wBAAwB,GAC5BH,sBAAsB,CAAoB,0BAA0B,CAAC;AAEvE,OAAO,MAAMI,aAA+C,GAAGA,CAAC;EAC9DC,cAAc;EACd,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,kBAAuD,GAAGC,CAAC,IAAI;IACnEH,cAAc,GAAGG,CAAC,CAACC,WAAW,CAAC;EACjC,CAAC;EAED,oBACEP,IAAA,CAACC,wBAAwB;IAAA,GACnBG,SAAS;IACbD,cAAc,EAAEA,cAAc,GAAGE,kBAAkB,GAAGG;EAAU,CACjE,CAAC;AAEN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","requireNativeComponent","jsx","_jsx","AdWhaleAdSize","RNAdWhaleMediationAdView","AdWhaleAdView","onAdLoadFailed","adSize","adaptiveAnchorWidth","restProps","handleAdLoadFailed","e","nativeEvent","nativeAdaptiveAnchorWidth","ADAPTIVE_ANCHOR","undefined"],"sourceRoot":"../../src","sources":["AdWhaleAdView.tsx"],"mappings":";;AAAA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,sBAAsB,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtD;AACA;AACA;AACA;AACA,WAAYC,aAAa,0BAAbA,aAAa;EACvB;EADUA,aAAa;EAGvB;EAHUA,aAAa;EAKvB;EALUA,aAAa;EAOvB;EAPUA,aAAa;EASvB;EATUA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAuDzB,MAAMC,wBAAwB,GAC5BJ,sBAAsB,CAAoB,0BAA0B,CAAC;AAEvE,OAAO,MAAMK,aAA+C,GAAGA,CAAC;EAC9DC,cAAc;EACdC,MAAM;EACNC,mBAAmB;EACnB,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,kBAAuD,GAAGC,CAAC,IAAI;IACnEL,cAAc,GAAGK,CAAC,CAACC,WAAW,CAAC;EACjC,CAAC;;EAED;EACA,MAAMC,yBAAyB,GAC7BN,MAAM,KAAKJ,aAAa,CAACW,eAAe,GAAGN,mBAAmB,GAAGO,SAAS;EAE5E,oBACEb,IAAA,CAACE,wBAAwB;IAAA,GACnBK,SAAS;IACbF,MAAM,EAAEA,MAAO;IACfC,mBAAmB,EAAEK,yBAA0B;IAC/CP,cAAc,EAAEA,cAAc,GAAGI,kBAAkB,GAAGK;EAAU,CACjE,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","NativeAdwhaleSdkReactNative","LINKING_ERROR","OS","RNAdWhaleMediationLoggerModule","AdwhaleSdkReactNative","console","warn","log","hasInitialize","initialize","hasRequestGdprConsent","requestGdprConsent","hasGetConsentStatus","getConsentStatus","hasResetGdprConsentStatus","resetGdprConsentStatus","hasSetGdpr","setGdpr","hasSetCoppa","setCoppa","AdWhaleMediationAds","Promise","reject","Error","setLoggerEnabled","enabled","setLogLevel","getLogLevel","error","consent"],"sourceRoot":"../../src","sources":["AdWhaleMediationAds.ts"],"mappings":";;AAAA;AACA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,OAAOC,2BAA2B,MAAM,kCAA+B;AAEvE,MAAMC,aAAa,GACjB,oDAAoD,GACpD,cAAc,GACd,6EAA6E,GAC7E,mCAAmC,GACnC,0BAA0B,GAC1B,aAAaF,QAAQ,CAACG,EAAE,EAAE;AAO5B,MAAM;EAAEC;AAA+B,CAAC,GAAGL,aAE1C;;AAED;AACA,MAAMM,qBAAqB,GAAGJ,2BAA2B;AAEzD,IAAI,CAACI,qBAAqB,EAAE;EAC1BC,OAAO,CAACC,IAAI,CAACL,aAAa,CAAC;AAC7B,CAAC,MAAM;EACLI,OAAO,CAACE,GAAG,CAAC,6CAA6C,EAAE;IACzDC,aAAa,EAAE,CAAC,CAACJ,qBAAqB,CAACK,UAAU;IACjDC,qBAAqB,EAAE,CAAC,CAACN,qBAAqB,CAACO,kBAAkB;IACjEC,mBAAmB,EAAE,CAAC,CAACR,qBAAqB,CAACS,gBAAgB;IAC7DC,yBAAyB,EAAE,CAAC,CAACV,qBAAqB,CAACW,sBAAsB;IACzEC,UAAU,EAAE,CAAC,CAACZ,qBAAqB,CAACa,OAAO;IAC3CC,WAAW,EAAE,CAAC,CAACd,qBAAqB,CAACe;EACvC,CAAC,CAAC;AACJ;AAEA,OAAO,MAAMC,mBAAmB,GAAG;EACjCX,UAAUA,CAAA,EAAoB;IAC5B,IAAI,CAACL,qBAAqB,EAAEK,UAAU,EAAE;MACtC,OAAOY,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAACtB,aAAa,CAAC,CAAC;IACjD;IACA,OAAOG,qBAAqB,CAACK,UAAU,CAAC,CAAC;EAC3C,CAAC;EAEDe,gBAAgBA,CAACC,OAAgB,EAAE;IACjCtB,8BAA8B,EAAEuB,WAAW,GAAGD,OAAO,CAAC;EACxD,CAAC;EAEDE,WAAWA,CAAA,EAAoB;IAC7B,IAAI,CAACxB,8BAA8B,EAAEwB,WAAW,EAAE;MAChD,OAAON,OAAO,CAACC,MAAM,CACnB,IAAIC,KAAK,CAAC,iDAAiD,CAC7D,CAAC;IACH;IACA,OAAOpB,8BAA8B,CAACwB,WAAW,CAAC,CAAC;EACrD,CAAC;EAEDR,QAAQA,CAACM,OAAgB,EAAE;IACzBpB,OAAO,CAACE,GAAG,CAAC,wCAAwC,EAAEkB,OAAO,CAAC;IAC9D,IAAI,CAACrB,qBAAqB,EAAEe,QAAQ,EAAE;MACpCd,OAAO,CAACC,IAAI,CAAC,oEAAoE,CAAC;MAClF;IACF;IACAF,qBAAqB,CAACe,QAAQ,CAACM,OAAO,CAAC;EACzC,CAAC;EAEDd,kBAAkBA,CAAA,EAAqD;IACrEN,OAAO,CAACE,GAAG,CAAC,iDAAiD,CAAC;IAC9D,IAAI,CAACH,qBAAqB,EAAEO,kBAAkB,EAAE;MAC9C,MAAMiB,KAAK,GAAG,IAAIL,KAAK,CAAC,wDAAwD,CAAC;MACjFlB,OAAO,CAACuB,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;MAC7C,OAAOP,OAAO,CAACC,MAAM,CAACM,KAAK,CAAC;IAC9B;IACA,OAAOxB,qBAAqB,CAACO,kBAAkB,CAAC,CAAC;EACnD,CAAC;EAEDE,gBAAgBA,CAAA,EAIb;IACDR,OAAO,CAACE,GAAG,CAAC,+CAA+C,CAAC;IAC5D,IAAI,CAACH,qBAAqB,EAAES,gBAAgB,EAAE;MAC5C,MAAMe,KAAK,GAAG,IAAIL,KAAK,CAAC,sDAAsD,CAAC;MAC/ElB,OAAO,CAACuB,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;MAC7C,OAAOP,OAAO,CAACC,MAAM,CAACM,KAAK,CAAC;IAC9B;IACA,OAAOxB,qBAAqB,CAACS,gBAAgB,CAAC,CAAC;EACjD,CAAC;EAEDE,sBAAsBA,CAAA,EAAG;IACvBV,OAAO,CAACE,GAAG,CAAC,qDAAqD,CAAC;IAClE,IAAI,CAACH,qBAAqB,EAAEW,sBAAsB,EAAE;MAClDV,OAAO,CAACC,IAAI,CAAC,kFAAkF,CAAC;MAChG;IACF;IACAF,qBAAqB,CAACW,sBAAsB,CAAC,CAAC;EAChD,CAAC;EAEDE,OAAOA,CAACY,OAAgB,EAAE;IACxBxB,OAAO,CAACE,GAAG,CAAC,uCAAuC,EAAEsB,OAAO,CAAC;IAC7D,IAAI,CAACzB,qBAAqB,EAAEa,OAAO,EAAE;MACnCZ,OAAO,CAACC,IAAI,CAAC,mEAAmE,CAAC;MACjF;IACF;IACAF,qBAAqB,CAACa,OAAO,CAACY,OAAO,CAAC;EACxC;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","NativeAdwhaleSdkReactNative","LINKING_ERROR","OS","RNAdWhaleMediationLoggerModule","AdwhaleSdkReactNative","console","warn","log","hasInitialize","initialize","hasRequestGdprConsent","requestGdprConsent","hasGetConsentStatus","getConsentStatus","hasResetGdprConsentStatus","resetGdprConsentStatus","hasSetGdpr","setGdpr","hasSetCoppa","setCoppa","AdWhaleMediationAds","Promise","reject","Error","setLoggerEnabled","enabled","setLogLevel","getLogLevel","error","consent"],"sourceRoot":"../../src","sources":["AdWhaleMediationAds.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAdwhaleSdkReactNative.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAkBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,uBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAdwhaleSdkReactNative.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAwBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,uBAAuB,CAAC","ignoreList":[]}
@@ -14,7 +14,7 @@ export { AdWhaleMediationAds } from "./AdWhaleMediationAds.js";
14
14
  // AdWhaleMediationAds.setGdpr(true)
15
15
 
16
16
  // ✅ 2) 배너 광고 View 컴포넌트
17
- export { AdWhaleAdView } from "./AdWhaleAdView.js";
17
+ export { AdWhaleAdView, AdWhaleAdSize } from "./AdWhaleAdView.js";
18
18
  // ✅ 3) 전면 광고 API
19
19
  export { AdWhaleInterstitialAd } from "./AdWhaleInterstitialAd.js";
20
20
  // ✅ 4) 리워드 광고 API
@@ -1 +1 @@
1
- {"version":3,"names":["AdWhaleMediationAds","AdWhaleAdView","AdWhaleInterstitialAd","AdWhaleRewardAd","AdWhaleAppOpenAd","AdWhaleNativeCustomView"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;;AAEA;AACA,SAASA,mBAAmB,QAAQ,0BAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA,SACEC,aAAa,QACR,oBAAiB;AAQxB;AACA,SACEC,qBAAqB,QAChB,4BAAyB;AAOhC;AACA,SACEC,eAAe,QACV,sBAAmB;AAQ1B;AACA,SACEC,gBAAgB,QACX,uBAAoB;AAO3B;AACA,SACEC,uBAAuB,QAClB,8BAA2B;AAQlC;AACA;AACA;AACA,cAAc,gCAA6B","ignoreList":[]}
1
+ {"version":3,"names":["AdWhaleMediationAds","AdWhaleAdView","AdWhaleAdSize","AdWhaleInterstitialAd","AdWhaleRewardAd","AdWhaleAppOpenAd","AdWhaleNativeCustomView"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;;AAEA;AACA,SAASA,mBAAmB,QAAQ,0BAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA,SACEC,aAAa,EACbC,aAAa,QACR,oBAAiB;AAOxB;AACA,SACEC,qBAAqB,QAChB,4BAAyB;AAOhC;AACA,SACEC,eAAe,QACV,sBAAmB;AAQ1B;AACA,SACEC,gBAAgB,QACX,uBAAoB;AAO3B;AACA,SACEC,uBAAuB,QAClB,8BAA2B;AAQlC;AACA;AACA;AACA,cAAc,gCAA6B","ignoreList":[]}
@@ -1,6 +1,21 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, ViewStyle } from 'react-native';
3
- export type AdWhaleBannerSize = '320x50' | '320x100' | '300x250' | '250x250' | 'ADAPTIVE_ANCHOR';
3
+ /**
4
+ * AdWhale 배너 광고 사이즈 enum
5
+ * Android SDK의 ADWHALE_AD_SIZE enum과 매핑됩니다.
6
+ */
7
+ export declare enum AdWhaleAdSize {
8
+ /** 표준 배너 (320x50) */
9
+ BANNER_320x50 = "BANNER320x50",
10
+ /** 큰 배너 (320x100) */
11
+ BANNER_320x100 = "BANNER320x100",
12
+ /** 중간 직사각형 (300x250) */
13
+ BANNER_300x250 = "BANNER300x250",
14
+ /** 정사각형 (250x250) */
15
+ BANNER_250x250 = "BANNER250x250",
16
+ /** 적응형 앵커 배너 - adaptiveAnchorWidth와 함께 사용 */
17
+ ADAPTIVE_ANCHOR = "ADAPTIVE_ANCHOR"
18
+ }
4
19
  export interface AdWhaleBannerError {
5
20
  statusCode: number;
6
21
  message: string;
@@ -15,7 +30,18 @@ export interface AdWhaleBannerViewProps {
15
30
  placementName?: string;
16
31
  region?: string;
17
32
  gcoder?: AdWhaleBannerGcoder;
18
- adSize: AdWhaleBannerSize;
33
+ /**
34
+ * 배너 광고 사이즈
35
+ * @example adSize={AdWhaleAdSize.BANNER_320x50}
36
+ */
37
+ adSize: AdWhaleAdSize;
38
+ /**
39
+ * ADAPTIVE_ANCHOR 사이즈 사용 시 배너의 너비(dp)를 지정합니다.
40
+ * 0을 입력하면 디바이스 전체 가로 길이가 적용됩니다.
41
+ * @default 0 (디바이스 전체 너비)
42
+ * @example adaptiveAnchorWidth={360}
43
+ */
44
+ adaptiveAnchorWidth?: number;
19
45
  loadAd?: boolean;
20
46
  onAdLoaded?: () => void;
21
47
  onAdLoadFailed?: (event: AdWhaleBannerError) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AdWhaleAdView.d.ts","sourceRoot":"","sources":["../../../src/AdWhaleAdView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAYD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAc1D,CAAC"}
1
+ {"version":3,"file":"AdWhaleAdView.d.ts","sourceRoot":"","sources":["../../../src/AdWhaleAdView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E;;;GAGG;AACH,oBAAY,aAAa;IACvB,qBAAqB;IACrB,aAAa,iBAAiB;IAC9B,qBAAqB;IACrB,cAAc,kBAAkB;IAChC,wBAAwB;IACxB,cAAc,kBAAkB;IAChC,qBAAqB;IACrB,cAAc,kBAAkB;IAChC,6CAA6C;IAC7C,eAAe,oBAAoB;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAYD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsB1D,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { type InitializeResult } from './NativeAdwhaleSdkReactNative';
1
2
  export declare const AdWhaleMediationAds: {
2
- initialize(): Promise<number>;
3
+ initialize(): Promise<InitializeResult>;
3
4
  setLoggerEnabled(enabled: boolean): void;
4
5
  getLogLevel(): Promise<string>;
5
6
  setCoppa(enabled: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AdWhaleMediationAds.d.ts","sourceRoot":"","sources":["../../../src/AdWhaleMediationAds.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,mBAAmB;kBAChB,OAAO,CAAC,MAAM,CAAC;8BAOH,OAAO;mBAIlB,OAAO,CAAC,MAAM,CAAC;sBASZ,OAAO;0BASH,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;wBAUlD,OAAO,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;;qBAmBe,OAAO;CAQzB,CAAC"}
1
+ {"version":3,"file":"AdWhaleMediationAds.d.ts","sourceRoot":"","sources":["../../../src/AdWhaleMediationAds.ts"],"names":[],"mappings":"AAEA,OAAoC,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAmCnG,eAAO,MAAM,mBAAmB;kBAChB,OAAO,CAAC,gBAAgB,CAAC;8BAOb,OAAO;mBAIlB,OAAO,CAAC,MAAM,CAAC;sBASZ,OAAO;0BASH,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;wBAUlD,OAAO,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;;qBAmBe,OAAO;CAQzB,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import { type TurboModule } from 'react-native';
2
+ export interface InitializeResult {
3
+ statusCode: number;
4
+ message: string;
5
+ isSuccess: boolean;
6
+ }
2
7
  export interface Spec extends TurboModule {
3
- initialize(): Promise<number>;
8
+ initialize(): Promise<InitializeResult>;
4
9
  setCoppa(isEnabled: boolean): void;
5
10
  requestGdprConsent(): Promise<{
6
11
  isSuccess: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeAdwhaleSdkReactNative.d.ts","sourceRoot":"","sources":["../../../src/NativeAdwhaleSdkReactNative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,IAAI,OAAO,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,gBAAgB,IAAI,OAAO,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC,CAAC;IACH,sBAAsB,IAAI,IAAI,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC;;AAED,wBAA+E"}
1
+ {"version":3,"file":"NativeAdwhaleSdkReactNative.d.ts","sourceRoot":"","sources":["../../../src/NativeAdwhaleSdkReactNative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,IAAI,OAAO,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,gBAAgB,IAAI,OAAO,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC,CAAC;IACH,sBAAsB,IAAI,IAAI,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC;;AAED,wBAA+E"}
@@ -1,6 +1,6 @@
1
1
  export { AdWhaleMediationAds } from './AdWhaleMediationAds';
2
- export { AdWhaleAdView, } from './AdWhaleAdView';
3
- export type { AdWhaleBannerSize, AdWhaleBannerError, AdWhaleBannerViewProps, } from './AdWhaleAdView';
2
+ export { AdWhaleAdView, AdWhaleAdSize, } from './AdWhaleAdView';
3
+ export type { AdWhaleBannerError, AdWhaleBannerViewProps, } from './AdWhaleAdView';
4
4
  export { AdWhaleInterstitialAd, } from './AdWhaleInterstitialAd';
5
5
  export type { AdWhaleInterstitialErrorEvent, AdWhaleInterstitialEvents, } from './AdWhaleInterstitialAd';
6
6
  export { AdWhaleRewardAd, } from './AdWhaleRewardAd';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAY5D,OAAO,EACL,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAMnC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAY5D,OAAO,EACL,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAMnC,cAAc,6BAA6B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adwhale-sdk-react-native",
3
- "version": "2.7.203",
3
+ "version": "2.7.204",
4
4
  "description": "Adwhale SDK React Native library for integrating Adwhale advertising mediation SDK into React Native applications.",
5
5
  "main": "./lib/module/index.js",
6
6
  "react-native": "./lib/module/index.js",
@@ -3,12 +3,22 @@ import React from 'react';
3
3
  import { requireNativeComponent } from 'react-native';
4
4
  import type { NativeSyntheticEvent, StyleProp, ViewStyle } from 'react-native';
5
5
 
6
- export type AdWhaleBannerSize =
7
- | '320x50'
8
- | '320x100'
9
- | '300x250'
10
- | '250x250'
11
- | 'ADAPTIVE_ANCHOR';
6
+ /**
7
+ * AdWhale 배너 광고 사이즈 enum
8
+ * Android SDK의 ADWHALE_AD_SIZE enum과 매핑됩니다.
9
+ */
10
+ export enum AdWhaleAdSize {
11
+ /** 표준 배너 (320x50) */
12
+ BANNER_320x50 = 'BANNER320x50',
13
+ /** 큰 배너 (320x100) */
14
+ BANNER_320x100 = 'BANNER320x100',
15
+ /** 중간 직사각형 (300x250) */
16
+ BANNER_300x250 = 'BANNER300x250',
17
+ /** 정사각형 (250x250) */
18
+ BANNER_250x250 = 'BANNER250x250',
19
+ /** 적응형 앵커 배너 - adaptiveAnchorWidth와 함께 사용 */
20
+ ADAPTIVE_ANCHOR = 'ADAPTIVE_ANCHOR',
21
+ }
12
22
 
13
23
  export interface AdWhaleBannerError {
14
24
  statusCode: number;
@@ -26,7 +36,18 @@ export interface AdWhaleBannerViewProps {
26
36
  placementName?: string;
27
37
  region?: string;
28
38
  gcoder?: AdWhaleBannerGcoder;
29
- adSize: AdWhaleBannerSize;
39
+ /**
40
+ * 배너 광고 사이즈
41
+ * @example adSize={AdWhaleAdSize.BANNER_320x50}
42
+ */
43
+ adSize: AdWhaleAdSize;
44
+ /**
45
+ * ADAPTIVE_ANCHOR 사이즈 사용 시 배너의 너비(dp)를 지정합니다.
46
+ * 0을 입력하면 디바이스 전체 가로 길이가 적용됩니다.
47
+ * @default 0 (디바이스 전체 너비)
48
+ * @example adaptiveAnchorWidth={360}
49
+ */
50
+ adaptiveAnchorWidth?: number;
30
51
  loadAd?: boolean;
31
52
 
32
53
  onAdLoaded?: () => void;
@@ -46,15 +67,23 @@ const RNAdWhaleMediationAdView =
46
67
 
47
68
  export const AdWhaleAdView: React.FC<AdWhaleBannerViewProps> = ({
48
69
  onAdLoadFailed,
70
+ adSize,
71
+ adaptiveAnchorWidth,
49
72
  ...restProps
50
73
  }) => {
51
74
  const handleAdLoadFailed: NativeAdViewProps['onAdLoadFailed'] = e => {
52
75
  onAdLoadFailed?.(e.nativeEvent);
53
76
  };
54
77
 
78
+ // ADAPTIVE_ANCHOR일 때만 adaptiveAnchorWidth를 네이티브로 전달
79
+ const nativeAdaptiveAnchorWidth =
80
+ adSize === AdWhaleAdSize.ADAPTIVE_ANCHOR ? adaptiveAnchorWidth : undefined;
81
+
55
82
  return (
56
83
  <RNAdWhaleMediationAdView
57
84
  {...restProps}
85
+ adSize={adSize}
86
+ adaptiveAnchorWidth={nativeAdaptiveAnchorWidth}
58
87
  onAdLoadFailed={onAdLoadFailed ? handleAdLoadFailed : undefined}
59
88
  />
60
89
  );
@@ -1,6 +1,6 @@
1
1
  // src/AdWhaleMediationAds.ts
2
2
  import { NativeModules, Platform } from 'react-native';
3
- import NativeAdwhaleSdkReactNative from './NativeAdwhaleSdkReactNative';
3
+ import NativeAdwhaleSdkReactNative, { type InitializeResult } from './NativeAdwhaleSdkReactNative';
4
4
 
5
5
  const LINKING_ERROR =
6
6
  `AdWhale Mediation SDK native modules not linked.\n` +
@@ -36,7 +36,7 @@ if (!AdwhaleSdkReactNative) {
36
36
  }
37
37
 
38
38
  export const AdWhaleMediationAds = {
39
- initialize(): Promise<number> {
39
+ initialize(): Promise<InitializeResult> {
40
40
  if (!AdwhaleSdkReactNative?.initialize) {
41
41
  return Promise.reject(new Error(LINKING_ERROR));
42
42
  }
@@ -1,7 +1,13 @@
1
1
  import { TurboModuleRegistry, type TurboModule } from 'react-native';
2
2
 
3
+ export interface InitializeResult {
4
+ statusCode: number;
5
+ message: string;
6
+ isSuccess: boolean;
7
+ }
8
+
3
9
  export interface Spec extends TurboModule {
4
- initialize(): Promise<number>;
10
+ initialize(): Promise<InitializeResult>;
5
11
  setCoppa(isEnabled: boolean): void;
6
12
  requestGdprConsent(): Promise<{
7
13
  isSuccess: boolean;
package/src/index.ts CHANGED
@@ -15,9 +15,9 @@ export { AdWhaleMediationAds } from './AdWhaleMediationAds';
15
15
  // ✅ 2) 배너 광고 View 컴포넌트
16
16
  export {
17
17
  AdWhaleAdView,
18
+ AdWhaleAdSize,
18
19
  } from './AdWhaleAdView';
19
20
  export type {
20
- AdWhaleBannerSize,
21
21
  AdWhaleBannerError,
22
22
  AdWhaleBannerViewProps,
23
23
  } from './AdWhaleAdView';