adwhale-sdk-react-native 2.7.202 → 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/AdwhaleSdkReactNativePackage.java +37 -0
- package/android/src/main/java/com/adwhalesdkreactnative/NativeAdBinderFactory.java +19 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +10 -2
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +15 -4
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationCustomNativeAdView.java +186 -196
- package/android/src/main/java/com/adwhalesdkreactnative/SimpleBinderFactory.java +55 -0
- package/lib/module/AdWhaleAdView.js +44 -0
- package/lib/module/AdWhaleAdView.js.map +1 -0
- package/lib/module/{AdWhaleMediationSdk.js → AdWhaleMediationAds.js} +14 -14
- package/lib/module/AdWhaleMediationAds.js.map +1 -0
- package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -1
- package/lib/module/index.js +9 -9
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/AdWhaleAdView.d.ts +51 -0
- package/lib/typescript/src/AdWhaleAdView.d.ts.map +1 -0
- package/lib/typescript/src/{AdWhaleMediationSdk.d.ts → AdWhaleMediationAds.d.ts} +4 -3
- package/lib/typescript/src/AdWhaleMediationAds.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleNativeCustomView.d.ts +1 -1
- package/lib/typescript/src/AdWhaleNativeCustomView.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 +3 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/plugin/index.js +14 -367
- package/src/AdWhaleAdView.tsx +90 -0
- package/src/{AdWhaleMediationSdk.ts → AdWhaleMediationAds.ts} +15 -15
- package/src/AdWhaleNativeCustomView.tsx +1 -1
- package/src/NativeAdwhaleSdkReactNative.ts +7 -1
- package/src/index.ts +12 -12
- package/android/src/main/res/layout/custom_native_ad_layout.xml +0 -58
- package/lib/module/AdWhaleBannerView.js +0 -20
- package/lib/module/AdWhaleBannerView.js.map +0 -1
- package/lib/module/AdWhaleMediationSdk.js.map +0 -1
- package/lib/typescript/src/AdWhaleBannerView.d.ts +0 -25
- package/lib/typescript/src/AdWhaleBannerView.d.ts.map +0 -1
- package/lib/typescript/src/AdWhaleMediationSdk.d.ts.map +0 -1
- package/src/AdWhaleBannerView.tsx +0 -61
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 적용 코드 끝 ==================
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.adwhalesdkreactnative;
|
|
2
2
|
|
|
3
3
|
import androidx.annotation.NonNull;
|
|
4
|
+
import androidx.annotation.Nullable;
|
|
4
5
|
|
|
5
6
|
import com.facebook.react.BaseReactPackage;
|
|
6
7
|
import com.facebook.react.bridge.NativeModule;
|
|
@@ -13,12 +14,48 @@ import java.util.Arrays;
|
|
|
13
14
|
import java.util.HashMap;
|
|
14
15
|
import java.util.List;
|
|
15
16
|
import java.util.Map;
|
|
17
|
+
import java.util.concurrent.ConcurrentHashMap;
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* React Native New Architecture 적용
|
|
19
21
|
* TurboModule(code gen 모듈) + 기존 NativeModule(전면/보상형) + ViewManager 혼용 구조
|
|
20
22
|
*/
|
|
21
23
|
public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
24
|
+
/**
|
|
25
|
+
* factoryId를 키로 하는 BinderFactory 저장소
|
|
26
|
+
*/
|
|
27
|
+
private static final Map<String, NativeAdBinderFactory> binderFactoryMap = new ConcurrentHashMap<>();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 사용자 지정 커스텀 네이티브 레이아웃을 등록합니다.
|
|
31
|
+
* Flutter의 AdWhaleSdkFlutterPlugin.registerBinderFactory와 동일한 기능을 제공합니다.
|
|
32
|
+
*
|
|
33
|
+
* @param factoryId 팩토리 ID (예: "app_custom")
|
|
34
|
+
* @param factory BinderFactory 인스턴스
|
|
35
|
+
*/
|
|
36
|
+
public static void registerBinderFactory(@NonNull String factoryId, @NonNull NativeAdBinderFactory factory) {
|
|
37
|
+
if (factoryId == null || factoryId.isEmpty()) {
|
|
38
|
+
throw new IllegalArgumentException("factoryId cannot be null or empty");
|
|
39
|
+
}
|
|
40
|
+
if (factory == null) {
|
|
41
|
+
throw new IllegalArgumentException("factory cannot be null");
|
|
42
|
+
}
|
|
43
|
+
binderFactoryMap.put(factoryId, factory);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* 등록된 BinderFactory를 가져옵니다.
|
|
48
|
+
*
|
|
49
|
+
* @param factoryId 팩토리 ID
|
|
50
|
+
* @return 등록된 BinderFactory 또는 null
|
|
51
|
+
*/
|
|
52
|
+
@Nullable
|
|
53
|
+
public static NativeAdBinderFactory getBinderFactory(@Nullable String factoryId) {
|
|
54
|
+
if (factoryId == null || factoryId.isEmpty()) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return binderFactoryMap.get(factoryId);
|
|
58
|
+
}
|
|
22
59
|
|
|
23
60
|
@Override
|
|
24
61
|
public NativeModule getModule(String name, ReactApplicationContext reactContext) {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.adwhalesdkreactnative;
|
|
2
|
+
|
|
3
|
+
import android.app.Activity;
|
|
4
|
+
import androidx.annotation.NonNull;
|
|
5
|
+
import net.adwhale.sdk.mediation.ads.AdWhaleNativeAdBinder;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 네이티브 광고 바인더를 생성하는 팩토리 인터페이스
|
|
9
|
+
*/
|
|
10
|
+
public interface NativeAdBinderFactory {
|
|
11
|
+
/**
|
|
12
|
+
* AdWhaleNativeAdBinder를 생성합니다.
|
|
13
|
+
*
|
|
14
|
+
* @param activity 현재 Activity
|
|
15
|
+
* @return AdWhaleNativeAdBinder 인스턴스
|
|
16
|
+
*/
|
|
17
|
+
@NonNull
|
|
18
|
+
AdWhaleNativeAdBinder createBinder(@NonNull Activity activity);
|
|
19
|
+
}
|
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) {
|