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 +29 -6
- package/android/build.gradle +15 -15
- package/android/proguard-rules.pro +0 -111
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +10 -2
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +15 -4
- package/lib/module/AdWhaleAdView.js +24 -0
- package/lib/module/AdWhaleAdView.js.map +1 -1
- package/lib/module/AdWhaleMediationAds.js.map +1 -1
- package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/AdWhaleAdView.d.ts +28 -2
- package/lib/typescript/src/AdWhaleAdView.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleMediationAds.d.ts +2 -1
- package/lib/typescript/src/AdWhaleMediationAds.d.ts.map +1 -1
- package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts +6 -1
- package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/AdWhaleAdView.tsx +36 -7
- package/src/AdWhaleMediationAds.ts +2 -2
- package/src/NativeAdwhaleSdkReactNative.ts +7 -1
- package/src/index.ts +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# adwhale-sdk-react-native
|
|
2
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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)
|
package/android/build.gradle
CHANGED
|
@@ -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 적용 코드 끝 ==================
|
package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
111
|
+
|
|
112
|
+
if ("BANNER320x50".equals(adSizeName)) {
|
|
112
113
|
adSize = ADWHALE_AD_SIZE.BANNER320x50;
|
|
113
|
-
} else if ("
|
|
114
|
+
} else if ("BANNER320x100".equals(adSizeName)) {
|
|
114
115
|
adSize = ADWHALE_AD_SIZE.BANNER320x100;
|
|
115
|
-
} else if ("
|
|
116
|
+
} else if ("BANNER300x250".equals(adSizeName)) {
|
|
116
117
|
adSize = ADWHALE_AD_SIZE.BANNER300x250;
|
|
117
|
-
} else if ("
|
|
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;
|
|
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,
|
|
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;
|
|
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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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<
|
|
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":"
|
|
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<
|
|
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,
|
|
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 {
|
|
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,
|
|
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.
|
|
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",
|
package/src/AdWhaleAdView.tsx
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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<
|
|
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<
|
|
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';
|