adwhale-sdk-react-native 2.7.204 → 2.7.400
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/AdwhaleSdkReactNative.podspec +22 -0
- package/README.md +95 -91
- package/android/build.gradle +35 -1
- package/android/proguard-rules.pro +58 -0
- package/android/src/main/java/com/adwhalesdkreactnative/AdWhaleCustomNativeBinderFactory.java +18 -0
- package/android/src/main/java/com/adwhalesdkreactnative/AdwhaleSdkReactNativePackage.java +51 -6
- package/android/src/main/java/com/adwhalesdkreactnative/BinderFactory.java +9 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +148 -49
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +46 -27
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAppOpenAd.java +148 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationCustomNativeAdView.java +37 -46
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationExitPopupAd.java +240 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationInterstitialAd.java +205 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationLoggerModule.java +2 -1
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationNativeAdViewListenerBridge.java +83 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationRewardAd.java +341 -6
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTemplateNativeAdView.java +191 -70
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTransitionPopupAd.java +218 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNWrapperView.java +137 -0
- package/android/src/main/java/com/adwhalesdkreactnative/SimpleBinderFactory.java +1 -1
- package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodArgConst.java +112 -0
- package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodCallConst.java +113 -0
- package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodResultConst.java +28 -0
- package/build/generated/ios/ReactAppDependencyProvider.podspec +34 -0
- package/ios/AdWhaleNativeCustomViewFactoryRegistry.swift +56 -0
- package/ios/AdwhaleSdkReactNative.mm +96 -5
- package/ios/AdwhaleSdkReactNativeModule.swift +148 -0
- package/ios/RNAdWhaleMediationAdViewManager.m +38 -0
- package/ios/RNAdWhaleMediationAdViewManager.swift +14 -0
- package/ios/RNAdWhaleMediationAppOpenAd.m +18 -0
- package/ios/RNAdWhaleMediationAppOpenAd.swift +175 -0
- package/ios/RNAdWhaleMediationCustomNativeAdViewManager.m +22 -0
- package/ios/RNAdWhaleMediationCustomNativeAdViewManager.swift +239 -0
- package/ios/RNAdWhaleMediationInterstitialAd.m +18 -0
- package/ios/RNAdWhaleMediationInterstitialAd.swift +161 -0
- package/ios/RNAdWhaleMediationRewardAd.m +22 -0
- package/ios/RNAdWhaleMediationRewardAd.swift +206 -0
- package/ios/WhaleMediationBannerContainer.swift +182 -0
- package/lib/module/AdWhaleAdView.js +58 -3
- package/lib/module/AdWhaleAdView.js.map +1 -1
- package/lib/module/AdWhaleAppOpenAd.js +223 -25
- package/lib/module/AdWhaleAppOpenAd.js.map +1 -1
- package/lib/module/AdWhaleExitPopupAd.js +93 -0
- package/lib/module/AdWhaleExitPopupAd.js.map +1 -0
- package/lib/module/AdWhaleInterstitialAd.js +146 -22
- package/lib/module/AdWhaleInterstitialAd.js.map +1 -1
- package/lib/module/AdWhaleMediationAds.js +75 -4
- package/lib/module/AdWhaleMediationAds.js.map +1 -1
- package/lib/module/AdWhaleNativeCustomView.js +59 -8
- package/lib/module/AdWhaleNativeCustomView.js.map +1 -1
- package/lib/module/AdWhaleNativeTemplateView.js +37 -19
- package/lib/module/AdWhaleNativeTemplateView.js.map +1 -1
- package/lib/module/AdWhaleRewardAd.js +221 -24
- package/lib/module/AdWhaleRewardAd.js.map +1 -1
- package/lib/module/AdWhaleTransitionPopupAd.js +87 -0
- package/lib/module/AdWhaleTransitionPopupAd.js.map +1 -0
- package/lib/module/NativeAdwhaleSdkReactNative.js +16 -1
- package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -1
- package/lib/module/constants/AdWhaleMethodArgConst.js +53 -0
- package/lib/module/constants/AdWhaleMethodArgConst.js.map +1 -0
- package/lib/module/constants/AdWhaleMethodCallConst.js +56 -0
- package/lib/module/constants/AdWhaleMethodCallConst.js.map +1 -0
- package/lib/module/constants/AdWhaleMethodResultConst.js +16 -0
- package/lib/module/constants/AdWhaleMethodResultConst.js.map +1 -0
- package/lib/module/index.js +10 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/AdWhaleAdView.d.ts +20 -2
- package/lib/typescript/src/AdWhaleAdView.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleAppOpenAd.d.ts +10 -0
- package/lib/typescript/src/AdWhaleAppOpenAd.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleExitPopupAd.d.ts +36 -0
- package/lib/typescript/src/AdWhaleExitPopupAd.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleInterstitialAd.d.ts +16 -0
- package/lib/typescript/src/AdWhaleInterstitialAd.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleMediationAds.d.ts +13 -5
- package/lib/typescript/src/AdWhaleMediationAds.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleNativeCustomView.d.ts +7 -4
- package/lib/typescript/src/AdWhaleNativeCustomView.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts +20 -7
- package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleRewardAd.d.ts +63 -6
- package/lib/typescript/src/AdWhaleRewardAd.d.ts.map +1 -1
- package/lib/typescript/src/AdWhaleTransitionPopupAd.d.ts +33 -0
- package/lib/typescript/src/AdWhaleTransitionPopupAd.d.ts.map +1 -0
- package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts +28 -6
- package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts.map +1 -1
- package/lib/typescript/src/constants/AdWhaleMethodArgConst.d.ts +51 -0
- package/lib/typescript/src/constants/AdWhaleMethodArgConst.d.ts.map +1 -0
- package/lib/typescript/src/constants/AdWhaleMethodCallConst.d.ts +53 -0
- package/lib/typescript/src/constants/AdWhaleMethodCallConst.d.ts.map +1 -0
- package/lib/typescript/src/constants/AdWhaleMethodResultConst.d.ts +14 -0
- package/lib/typescript/src/constants/AdWhaleMethodResultConst.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/AdWhaleAdView.tsx +92 -4
- package/src/AdWhaleAppOpenAd.ts +293 -38
- package/src/AdWhaleExitPopupAd.ts +183 -0
- package/src/AdWhaleInterstitialAd.ts +206 -36
- package/src/AdWhaleMediationAds.ts +108 -4
- package/src/AdWhaleNativeCustomView.tsx +85 -23
- package/src/AdWhaleNativeTemplateView.tsx +79 -42
- package/src/AdWhaleRewardAd.ts +317 -51
- package/src/AdWhaleTransitionPopupAd.ts +171 -0
- package/src/NativeAdwhaleSdkReactNative.ts +30 -6
- package/src/constants/AdWhaleMethodArgConst.ts +50 -0
- package/src/constants/AdWhaleMethodCallConst.ts +60 -0
- package/src/constants/AdWhaleMethodResultConst.ts +13 -0
- package/src/index.ts +35 -0
|
@@ -16,5 +16,27 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
|
|
17
17
|
s.private_header_files = "ios/**/*.h"
|
|
18
18
|
|
|
19
|
+
# adwhale_sdk_flutter/ios/adwhale_sdk_flutter.podspec 과 동일: static framework + AdWhaleSDK
|
|
20
|
+
s.static_framework = true
|
|
21
|
+
s.swift_version = "5.0"
|
|
22
|
+
|
|
23
|
+
# ios/AdwhaleSdkReactNative.mm 에서 AdWhale iOS SDK(AdWhaleAds 등)를 사용
|
|
24
|
+
# 앱 Podfile 에는 AdWhaleSDK_iOS 소스가 있어야 함:
|
|
25
|
+
# source 'https://github.com/dev-adwhale/AdWhaleSDK_iOS.git'
|
|
26
|
+
s.dependency "AdWhaleSDK", "1.0.7"
|
|
27
|
+
# AdWhaleSDK-Swift.h 가 GAD* 프로토콜/클래스를 참조하므로 컴파일 단위에 GMA 헤더가 필요함 (AdWhaleSDK/Core 와 동일 버전)
|
|
28
|
+
s.dependency "Google-Mobile-Ads-SDK", "13.0.0"
|
|
29
|
+
|
|
30
|
+
# Flutter 플러그인과 동일: UMP(UserMessagingPlatform) 검색 경로 + RN install_modules_dependencies 가 HEADER_SEARCH_PATHS 병합
|
|
31
|
+
# AdWhaleSDK-Swift.h 는 Pods 내 xcframework Headers 경로를 직접 넣음 (인덱싱/빌드 안정화)
|
|
32
|
+
s.pod_target_xcconfig = {
|
|
33
|
+
"DEFINES_MODULE" => "YES",
|
|
34
|
+
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" => "i386",
|
|
35
|
+
"FRAMEWORK_SEARCH_PATHS" => "$(inherited) \"${PODS_CONFIGURATION_BUILD_DIR}/GoogleUserMessagingPlatform\" \"${PODS_ROOT}/GoogleUserMessagingPlatform/Frameworks/Release/UserMessagingPlatform.xcframework/ios-arm64\" \"${PODS_ROOT}/GoogleUserMessagingPlatform/Frameworks/Release/UserMessagingPlatform.xcframework/ios-arm64_x86_64-simulator\"",
|
|
36
|
+
# Swift → ObjC 생성 헤더(…-Swift.h). .mm 가 Swift보다 먼저 스캔될 때도 찾을 수 있게 함.
|
|
37
|
+
"HEADER_SEARCH_PATHS" => "$(inherited) \"$(DERIVED_SOURCES_DIR)\" \"${PODS_CONFIGURATION_BUILD_DIR}/AdwhaleSdkReactNative/AdwhaleSdkReactNative.framework/Headers\" \"${PODS_ROOT}/AdWhaleSDK/AdWhaleSDK.xcframework/ios-arm64/AdWhaleSDK.framework/Headers\" \"${PODS_ROOT}/AdWhaleSDK/AdWhaleSDK.xcframework/ios-arm64_x86_64-simulator/AdWhaleSDK.framework/Headers\"",
|
|
38
|
+
"OTHER_LDFLAGS" => "$(inherited) -framework \"UserMessagingPlatform\"",
|
|
39
|
+
}
|
|
40
|
+
|
|
19
41
|
install_modules_dependencies(s)
|
|
20
42
|
end
|
package/README.md
CHANGED
|
@@ -1,142 +1,146 @@
|
|
|
1
|
+
# 최신 버전: 2.7.400
|
|
2
|
+
|
|
1
3
|
# adwhale-sdk-react-native
|
|
2
|
-
ADwhale Android 네이티브 광고 미디에이션 SDK를
|
|
4
|
+
ADwhale Android/iOS 네이티브 광고 미디에이션 SDK를
|
|
3
5
|
React Native 환경에서 사용할 수 있도록 제공하는 공식 SDK입니다.
|
|
4
6
|
|
|
5
|
-
- Android 네이티브 SDK 기반
|
|
6
|
-
- React Native Bridge / TurboModule 지원
|
|
7
|
-
- 배너, 전면, 보상형, 네이티브 광고 지원
|
|
8
7
|
- Expo Bare Workflow / Custom Dev Client 지원
|
|
9
8
|
|
|
10
9
|
> ⚠️ Expo Go (Managed Workflow)에서는 네이티브 모듈 특성상 사용할 수 없습니다.
|
|
11
10
|
|
|
11
|
+
자세한 연동 가이드는 아래 문서를 참고하세요.
|
|
12
|
+
- Guide: https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk
|
|
13
|
+
- Sample: https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative
|
|
14
|
+
- Package: https://www.npmjs.com/package/adwhale-sdk-react-native
|
|
15
|
+
|
|
12
16
|
---
|
|
13
17
|
|
|
14
18
|
## Installation
|
|
15
19
|
```sh
|
|
20
|
+
# yarn 사용 시
|
|
16
21
|
yarn add adwhale-sdk-react-native
|
|
17
22
|
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
# npm 사용 시
|
|
20
24
|
npm install adwhale-sdk-react-native
|
|
21
25
|
```
|
|
22
26
|
|
|
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
|
-
"adwhale-sdk-react-native": "^2.7.204"
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
- Android SDK 2.7.x 범위 내 최신 RN 수정 자동 반영
|
|
59
|
-
- Android SDK 상위 메이저/마이너 버전은 반영되지 않음
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
### 특정 버전을 완전히 고정하여 사용하는 경우
|
|
27
|
+
## Support platforms
|
|
28
|
+
| Platform | Support |
|
|
29
|
+
|----------|---------|
|
|
30
|
+
| Android | O |
|
|
31
|
+
| iOS | O |
|
|
32
|
+
|
|
33
|
+
## Support Features
|
|
34
|
+
| Features | Support |
|
|
35
|
+
|------------------|-------------------|
|
|
36
|
+
| SDK initialize | O |
|
|
37
|
+
| Banner | O |
|
|
38
|
+
| Interstitial | O |
|
|
39
|
+
| Rewarded | O |
|
|
40
|
+
| Native Template | ⚠️(Android only) |
|
|
41
|
+
| Native Custom | O |
|
|
42
|
+
| App Open | O |
|
|
43
|
+
| App Exit Popup | ⚠️(Android only) |
|
|
44
|
+
| Transition Popup | ⚠️(Android only) |
|
|
45
|
+
| Event Callback | O |
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Version
|
|
49
|
+
현재 버전은 ```2.7.400``` 입니다.
|
|
50
|
+
|
|
51
|
+
| Native SDK | React Native SDK |
|
|
52
|
+
|---------------|------------------|
|
|
53
|
+
| Android 2.7.4 | 2.7.400 |
|
|
54
|
+
| iOS 1.0.7 | 2.7.400 |
|
|
55
|
+
|
|
56
|
+
## Dependency
|
|
57
|
+
권장 설정:
|
|
63
58
|
```json
|
|
64
59
|
{
|
|
65
|
-
"adwhale-sdk-react-native": "2.7.
|
|
60
|
+
"adwhale-sdk-react-native": "~2.7.400"
|
|
66
61
|
}
|
|
67
62
|
```
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
### 항상 최신 버전을 사용하는 경우
|
|
63
|
+
고정 설정:
|
|
71
64
|
```json
|
|
72
65
|
{
|
|
73
|
-
"adwhale-sdk-react-native": "
|
|
66
|
+
"adwhale-sdk-react-native": "2.7.400"
|
|
74
67
|
}
|
|
75
68
|
```
|
|
76
|
-
- 최신 Android SDK 및 RN SDK 포함
|
|
77
|
-
- 개발 및 검증 환경에 적합
|
|
78
69
|
|
|
79
|
-
|
|
80
|
-
## Example Project
|
|
70
|
+
## Example
|
|
81
71
|
SDK 동작을 바로 확인할 수 있는 example 프로젝트를 제공합니다.
|
|
82
72
|
- [React Native 샘플](https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative/tree/main/ReactNativeSample)
|
|
83
73
|
- [Expo 샘플](https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative/tree/main/ExpoSample)
|
|
84
|
-
yarn 사용시
|
|
85
74
|
```sh
|
|
75
|
+
# 1. 프로젝트 클론
|
|
76
|
+
git clone https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative.git
|
|
77
|
+
|
|
78
|
+
# 2. ReactNativeSample 사용 시
|
|
79
|
+
cd ADwhaleMediationSDK-ReactNative/ReactNativeSample
|
|
80
|
+
|
|
81
|
+
# 2. ExpoSample 사용 시
|
|
82
|
+
cd ADwhaleMediationSDK-ReactNative/ExpoSample
|
|
83
|
+
|
|
84
|
+
# 3. React Native 의존성 설치: yarn 사용 시
|
|
86
85
|
yarn install
|
|
87
|
-
yarn prepare
|
|
88
|
-
cd example
|
|
89
|
-
yarn android
|
|
90
|
-
```
|
|
91
86
|
|
|
92
|
-
npm
|
|
93
|
-
```sh
|
|
87
|
+
# 3. React Native 의존성 설치: npm 사용 시
|
|
94
88
|
npm install
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
|
|
90
|
+
# 4. iOS 의존성 설치 (iOS 빌드 시에만 필요)
|
|
91
|
+
cd ios
|
|
92
|
+
pod install
|
|
93
|
+
cd ..
|
|
97
94
|
```
|
|
98
95
|
|
|
99
|
-
|
|
96
|
+
### Expo Support
|
|
100
97
|
다음 환경에서 사용 가능합니다.
|
|
101
98
|
- Expo Bare Workflow
|
|
102
99
|
- Expo Custom Dev Client
|
|
103
|
-
Expo Go 환경에서는 사용할 수 없습니다.
|
|
100
|
+
Expo Go 환경에서는 사용할 수 없습니다.
|
|
104
101
|
|
|
102
|
+
### Android 실행
|
|
103
|
+
```sh
|
|
104
|
+
# yarn 사용 시
|
|
105
|
+
yarn start
|
|
106
|
+
yarn android
|
|
105
107
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- 보상형 광고
|
|
111
|
-
- 네이티브 광고 (Template / Custom)
|
|
112
|
-
- 광고 이벤트 리스너 제공
|
|
113
|
-
|
|
108
|
+
# npm 사용 시
|
|
109
|
+
npm start
|
|
110
|
+
npm run android
|
|
111
|
+
```
|
|
114
112
|
|
|
115
|
-
|
|
116
|
-
Android 빌드 오류 발생 시:
|
|
113
|
+
### iOS 실행
|
|
117
114
|
```sh
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
# yarn 사용 시
|
|
116
|
+
yarn start
|
|
117
|
+
yarn ios
|
|
118
|
+
|
|
119
|
+
# npm 사용 시
|
|
120
|
+
npm start
|
|
121
|
+
npm run ios
|
|
120
122
|
```
|
|
121
123
|
|
|
122
|
-
환경
|
|
124
|
+
### 환경 점검
|
|
123
125
|
```sh
|
|
124
126
|
npx react-native doctor
|
|
125
127
|
```
|
|
126
128
|
|
|
127
129
|
## Changelog
|
|
128
|
-
| 배포버전 | 내용
|
|
129
|
-
|
|
130
|
-
| 2.7.
|
|
131
|
-
| 2.7.
|
|
132
|
-
| 2.7.
|
|
133
|
-
| 2.7.
|
|
134
|
-
| 2.7.
|
|
135
|
-
| 2.7.
|
|
136
|
-
| 2.7.
|
|
137
|
-
| 2.7.
|
|
138
|
-
|
|
|
139
|
-
|
|
|
130
|
+
| 배포버전 | 내용 | 배포날짜 |
|
|
131
|
+
|---------|------------------------------------------------------------------|------------|
|
|
132
|
+
| 2.7.400 | 보상형 SSV 추가, 애드웨일 Android 2.7.4 업데이트 및 ios 1.0.7 추가 | 2026.04.11 |
|
|
133
|
+
| 2.7.300 | 애드웨일 Android 2.7.3 업데이트 및 ios 1.0.4 추가 | 2026.04.11 |
|
|
134
|
+
| 2.7.204 | 버그 및 샘플 수정 | 2026.01.22 |
|
|
135
|
+
| 2.7.203 | 버그 및 샘플 수정 | 2026.01.19 |
|
|
136
|
+
| 2.7.202 | 버그 및 샘플 수정 | 2026.01.19 |
|
|
137
|
+
| 2.7.201 | 버그 및 샘플 수정 | 2026.01.12 |
|
|
138
|
+
| 2.7.200 | 앱오프닝 광고 추가 (ADwhale Android SDK v2.7.2에서 추가됨) | 2026.01.09 |
|
|
139
|
+
| 2.7.102 | gcoder 및 placement name 추가 | 2025.12.29 |
|
|
140
|
+
| 2.7.101 | 버그 및 샘플 수정 | 2025.12.23 |
|
|
141
|
+
| 2.7.100 | 네이티브 광고 추가 (ADwhale Android SDK v2.7.0) | 2025.12.15 |
|
|
142
|
+
| | GDPR 기능 추가 (ADwhale Android SDK v2.7.0) | |
|
|
143
|
+
| | 적응형 배너 추가 (ADwhale Android SDK v2.7.1) | |
|
|
140
144
|
|
|
141
145
|
## Learn More
|
|
142
146
|
- [ADwhale ReactNative 가이드](https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk)
|
package/android/build.gradle
CHANGED
|
@@ -18,6 +18,36 @@ ext.sdkVersionPatch = (properties["sdkVersionPatch"] ?: "0")
|
|
|
18
18
|
ext.sdkVersionCode = Integer.valueOf((Integer.parseInt(sdkVersionMajor)*10000) + (Integer.parseInt(sdkVersionMinor)*100) + Integer.parseInt(sdkVersionPatch))
|
|
19
19
|
ext.sdkVersion = "${sdkVersionMajor}.${sdkVersionMinor}.${sdkVersionPatch}"
|
|
20
20
|
|
|
21
|
+
ext.adfitAdapterSdkVersionMajor = properties["adfitVersionMajor"]
|
|
22
|
+
ext.adfitAdapterSdkVersionMinor = properties["adfitVersionMinor"]
|
|
23
|
+
ext.adfitAdapterSdkVersionPatch = properties["adfitVersionPatch"]
|
|
24
|
+
ext.adfitAdapterSdkVersionTrivial = properties["adfitVersionTrivial"]
|
|
25
|
+
ext.adfitAdapterSdkVersion = "${adfitAdapterSdkVersionMajor}.${adfitAdapterSdkVersionMinor}.${adfitAdapterSdkVersionPatch}.${adfitAdapterSdkVersionTrivial}"
|
|
26
|
+
|
|
27
|
+
ext.admizeAdapterSdkVersionMajor = properties["admizeVersionMajor"]
|
|
28
|
+
ext.admizeAdapterSdkVersionMinor = properties["admizeVersionMinor"]
|
|
29
|
+
ext.admizeAdapterSdkVersionPatch = properties["admizeVersionPatch"]
|
|
30
|
+
ext.admizeAdapterSdkVersionTrivial = properties["admizeVersionTrivial"]
|
|
31
|
+
ext.admizeAdapterSdkVersion = "${admizeAdapterSdkVersionMajor}.${admizeAdapterSdkVersionMinor}.${admizeAdapterSdkVersionPatch}.${admizeAdapterSdkVersionTrivial}"
|
|
32
|
+
|
|
33
|
+
ext.admobAdapterSdkVersionMajor = properties["admobVersionMajor"]
|
|
34
|
+
ext.admobAdapterSdkVersionMinor = properties["admobVersionMinor"]
|
|
35
|
+
ext.admobAdapterSdkVersionPatch = properties["admobVersionPatch"]
|
|
36
|
+
ext.admobAdapterSdkVersionTrivial = properties["admobVersionTrivial"]
|
|
37
|
+
ext.admobAdapterSdkVersion = "${admobAdapterSdkVersionMajor}.${admobAdapterSdkVersionMinor}.${admobAdapterSdkVersionPatch}.${admobAdapterSdkVersionTrivial}"
|
|
38
|
+
|
|
39
|
+
ext.caulyAdapterSdkVersionMajor = properties["caulyVersionMajor"]
|
|
40
|
+
ext.caulyAdapterSdkVersionMinor = properties["caulyVersionMinor"]
|
|
41
|
+
ext.caulyAdapterSdkVersionPatch = properties["caulyVersionPatch"]
|
|
42
|
+
ext.caulyAdapterSdkVersionTrivial = properties["caulyVersionTrivial"]
|
|
43
|
+
ext.caulyAdapterSdkVersion = "${caulyAdapterSdkVersionMajor}.${caulyAdapterSdkVersionMinor}.${caulyAdapterSdkVersionPatch}.${caulyAdapterSdkVersionTrivial}"
|
|
44
|
+
|
|
45
|
+
ext.levelplayAdapterSdkVersionMajor = properties["levelplayVersionMajor"]
|
|
46
|
+
ext.levelplayAdapterSdkVersionMinor = properties["levelplayVersionMinor"]
|
|
47
|
+
ext.levelplayAdapterSdkVersionPatch = properties["levelplayVersionPatch"]
|
|
48
|
+
ext.levelplayAdapterSdkVersionTrivial = properties["levelplayVersionTrivial"]
|
|
49
|
+
ext.levelplayAdapterSdkVersion = "${levelplayAdapterSdkVersionMajor}.${levelplayAdapterSdkVersionMinor}.${levelplayAdapterSdkVersionPatch}.${levelplayAdapterSdkVersionTrivial}"
|
|
50
|
+
|
|
21
51
|
def resolveNodeBinary() {
|
|
22
52
|
def candidateSources = [
|
|
23
53
|
System.getenv("NODE_BINARY"),
|
|
@@ -133,6 +163,10 @@ dependencies {
|
|
|
133
163
|
implementation 'androidx.lifecycle:lifecycle-runtime:2.6.2'
|
|
134
164
|
|
|
135
165
|
// 기본 디펜던시: ADwhale Mediation SDK Repository
|
|
136
|
-
|
|
166
|
+
// ⚠️ local.properties 의 sdkVersion(2.7.4) 과 반드시 일치시킬 것.
|
|
167
|
+
// (RN 래퍼 2.7.400 은 네이티브 Android SDK 2.7.4 API 에 의존)
|
|
168
|
+
// 미디에이션 어댑터(cauly/admize/adfit/admob/levelplay + AdMob 네트워크 어댑터)는
|
|
169
|
+
// SDK 패키지가 아니라, 연동 가이드에 따라 "앱" build.gradle 에서 직접 추가한다.
|
|
170
|
+
implementation "net.adwhale.sdk.mediation:adwhale-mediation-sdk:2.7.4"
|
|
137
171
|
|
|
138
172
|
}
|
|
@@ -22,6 +22,14 @@
|
|
|
22
22
|
#================== AdWhale Mediation SDK Proguard for Release 적용 코드 시작 ==================
|
|
23
23
|
|
|
24
24
|
-keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationAds {
|
|
25
|
+
public static final int TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED;
|
|
26
|
+
public static final int TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE;
|
|
27
|
+
public static final int TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE;
|
|
28
|
+
public static final java.lang.String MAX_AD_CONTENT_RATING_G;
|
|
29
|
+
public static final java.lang.String MAX_AD_CONTENT_RATING_PG;
|
|
30
|
+
public static final java.lang.String MAX_AD_CONTENT_RATING_T;
|
|
31
|
+
public static final java.lang.String MAX_AD_CONTENT_RATING_MA;
|
|
32
|
+
|
|
25
33
|
public static *** init(***);
|
|
26
34
|
public static *** init(***, ***);
|
|
27
35
|
public static *** setCoppa(***);
|
|
@@ -32,24 +40,40 @@
|
|
|
32
40
|
public static *** getGdprConsentStatus(***);
|
|
33
41
|
public static *** resetGdprConsentStatus(***);
|
|
34
42
|
public static *** getAdwhaleGDPR(***);
|
|
43
|
+
public static *** setAppVolume(***);
|
|
44
|
+
public static *** setAppMuted(***);
|
|
45
|
+
public static *** setTagForUnderAgeOfConsent(***);
|
|
46
|
+
public static *** setMaxAdContentRating(***);
|
|
47
|
+
public static *** setTestDeviceIdentifiers(***);
|
|
48
|
+
public static *** openAdInspector(***, ***);
|
|
35
49
|
}
|
|
36
50
|
|
|
51
|
+
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleGdprConsentListener {*;}
|
|
52
|
+
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationAdInspectorCloseListener {*;}
|
|
37
53
|
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationOnInitCompleteListener {*;}
|
|
38
54
|
|
|
39
55
|
-keepclasseswithmembers class net.adwhale.sdk.utils.AdWhaleLog {
|
|
40
56
|
public static *** setLogLevel(***);
|
|
41
57
|
public static *** getLogLevel();
|
|
58
|
+
public static *** d(***);
|
|
59
|
+
public static *** i(***);
|
|
60
|
+
public static *** w(***);
|
|
61
|
+
public static *** e(java.lang.String);
|
|
62
|
+
public static *** e(java.lang.String, java.lang.Exception);
|
|
63
|
+
public static *** e(java.lang.String, java.lang.Throwable);
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
-keep class net.adwhale.sdk.mediation.ads.ADWHALE_AD_SIZE {*;}
|
|
45
67
|
-keep class net.adwhale.sdk.mediation.ads.ADWHALE_RESULT_CODE {*;}
|
|
46
68
|
-keep class net.adwhale.sdk.mediation.ads.ADWHALE_NATIVE_TEMPLATE {*;}
|
|
69
|
+
-keep class net.adwhale.sdk.mediation.ads.ADWHALE_POPUP_AD_CLOSE_REASON {*;}
|
|
47
70
|
-keep class net.adwhale.sdk.mediation.ads.GdprConsentStatus {*;}
|
|
48
71
|
|
|
49
72
|
-keep class net.adwhale.sdk.utils.AdWhaleLog$LogLevel{*;}
|
|
50
73
|
-keep class net.adwhale.sdk.impl.mediation.ReqMediationAdConfig {*;}
|
|
51
74
|
-keep class net.adwhale.sdk.impl.mediation.ResMediationAdConfig {*;}
|
|
52
75
|
-keep class net.adwhale.sdk.impl.mediation.ResMediation {*;}
|
|
76
|
+
-keep class net.adwhale.sdk.impl.mediation.ResExtension {*;}
|
|
53
77
|
|
|
54
78
|
-keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationInterstitialAd {
|
|
55
79
|
public <init>(...);
|
|
@@ -73,6 +97,8 @@
|
|
|
73
97
|
public *** setRegion(***);
|
|
74
98
|
public *** setGcoder(***, ***);
|
|
75
99
|
public *** setPlacementName(***);
|
|
100
|
+
public *** setUserId(***);
|
|
101
|
+
public *** setCustomData(***);
|
|
76
102
|
public *** destroy();
|
|
77
103
|
public *** setAdWhaleMediationFullScreenContentCallback(***);
|
|
78
104
|
}
|
|
@@ -150,4 +176,36 @@
|
|
|
150
176
|
|
|
151
177
|
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationAppOpenAdListener {*;}
|
|
152
178
|
|
|
179
|
+
-keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationExitPopupAd {
|
|
180
|
+
public <init>(...);
|
|
181
|
+
public *** loadAd();
|
|
182
|
+
public *** showAd(***, ***);
|
|
183
|
+
public *** setRegion(***);
|
|
184
|
+
public *** setGcoder(***, ***);
|
|
185
|
+
public *** setPlacementUid(***);
|
|
186
|
+
public *** setPlacementName(***);
|
|
187
|
+
public *** setCustomizeButtonText(***, ***);
|
|
188
|
+
public *** setCustomDescription(***);
|
|
189
|
+
public *** destroy();
|
|
190
|
+
public *** resume(***);
|
|
191
|
+
public *** setAdWhaleMediationExitPopupAdListener(***);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationExitPopupAdListener {*;}
|
|
195
|
+
|
|
196
|
+
-keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationTransitionPopupAd {
|
|
197
|
+
public <init>(...);
|
|
198
|
+
public *** loadAd();
|
|
199
|
+
public *** showAd(***, ***);
|
|
200
|
+
public *** setRegion(***);
|
|
201
|
+
public *** setGcoder(***, ***);
|
|
202
|
+
public *** setPlacementUid(***);
|
|
203
|
+
public *** setPlacementName(***);
|
|
204
|
+
public *** destroy();
|
|
205
|
+
public *** resume(***);
|
|
206
|
+
public *** setAdWhaleMediationTransitionPopupAdListener(***);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationTransitionPopupAdListener {*;}
|
|
210
|
+
|
|
153
211
|
#================== AdWhale Mediation SDK Proguard for Release 적용 코드 끝 ==================
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package com.adwhalesdkreactnative;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Flutter Android 편의 클래스명과 동일한 구현.
|
|
5
|
+
* 내부 동작은 기존 SimpleBinderFactory와 동일합니다.
|
|
6
|
+
*/
|
|
7
|
+
public class AdWhaleCustomNativeBinderFactory extends SimpleBinderFactory implements BinderFactory {
|
|
8
|
+
public AdWhaleCustomNativeBinderFactory(
|
|
9
|
+
int layoutId,
|
|
10
|
+
int iconViewId,
|
|
11
|
+
int titleViewId,
|
|
12
|
+
int bodyTextViewId,
|
|
13
|
+
int callToActionViewId,
|
|
14
|
+
int mediaViewGroupId) {
|
|
15
|
+
super(layoutId, iconViewId, titleViewId, bodyTextViewId, callToActionViewId, mediaViewGroupId);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
@@ -43,6 +43,13 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
43
43
|
binderFactoryMap.put(factoryId, factory);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Flutter와 동일 타입명(BinderFactory) 오버로드.
|
|
48
|
+
*/
|
|
49
|
+
public static void registerBinderFactory(@NonNull String factoryId, @NonNull BinderFactory factory) {
|
|
50
|
+
registerBinderFactory(factoryId, (NativeAdBinderFactory) factory);
|
|
51
|
+
}
|
|
52
|
+
|
|
46
53
|
/**
|
|
47
54
|
* 등록된 BinderFactory를 가져옵니다.
|
|
48
55
|
*
|
|
@@ -79,11 +86,21 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
79
86
|
return new RNAdWhaleMediationRewardAd(reactContext);
|
|
80
87
|
}
|
|
81
88
|
|
|
82
|
-
//
|
|
89
|
+
// 앱오프닝 Old Architecture를 따르지만 등록은 TurboModule로 등록
|
|
83
90
|
if(RNAdWhaleMediationAppOpenAd.REACT_CLASS_NAME.equals(name)) {
|
|
84
91
|
return new RNAdWhaleMediationAppOpenAd(reactContext);
|
|
85
92
|
}
|
|
86
93
|
|
|
94
|
+
// 앱종료 Old Architecture를 따르지만 등록은 TurboModule로 등록
|
|
95
|
+
if (RNAdWhaleMediationExitPopupAd.REACT_CLASS_NAME.equals(name)) {
|
|
96
|
+
return new RNAdWhaleMediationExitPopupAd(reactContext);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// 앱전환 Old Architecture를 따르지만 등록은 TurboModule로 등록
|
|
100
|
+
if (RNAdWhaleMediationTransitionPopupAd.REACT_CLASS_NAME.equals(name)) {
|
|
101
|
+
return new RNAdWhaleMediationTransitionPopupAd(reactContext);
|
|
102
|
+
}
|
|
103
|
+
|
|
87
104
|
return null;
|
|
88
105
|
}
|
|
89
106
|
|
|
@@ -96,7 +113,9 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
96
113
|
new RNAdWhaleMediationLoggerModule(reactContext),
|
|
97
114
|
new RNAdWhaleMediationInterstitialAd(reactContext),
|
|
98
115
|
new RNAdWhaleMediationRewardAd(reactContext),
|
|
99
|
-
new RNAdWhaleMediationAppOpenAd(reactContext)
|
|
116
|
+
new RNAdWhaleMediationAppOpenAd(reactContext),
|
|
117
|
+
new RNAdWhaleMediationExitPopupAd(reactContext),
|
|
118
|
+
new RNAdWhaleMediationTransitionPopupAd(reactContext)
|
|
100
119
|
// RNAdWhaleMediationAdSettingModule는 TurboModule로 등록되므로 여기서 굳이 추가 안 해도 됨
|
|
101
120
|
);
|
|
102
121
|
}
|
|
@@ -129,7 +148,7 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
129
148
|
)
|
|
130
149
|
);
|
|
131
150
|
|
|
132
|
-
//
|
|
151
|
+
// 로거/전면/보상형/앱오프닝/앱종료/앱전환은 legacy 모듈로 사용 (isTurboModule = false)
|
|
133
152
|
moduleInfos.put(
|
|
134
153
|
RNAdWhaleMediationLoggerModule.REACT_CLASS_NAME,
|
|
135
154
|
new ReactModuleInfo(
|
|
@@ -142,7 +161,7 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
142
161
|
)
|
|
143
162
|
);
|
|
144
163
|
|
|
145
|
-
//
|
|
164
|
+
// 로거/전면/보상형/앱오프닝/앱종료/앱전환은 legacy 모듈로 사용 (isTurboModule = false)
|
|
146
165
|
moduleInfos.put(
|
|
147
166
|
RNAdWhaleMediationInterstitialAd.REACT_CLASS_NAME,
|
|
148
167
|
new ReactModuleInfo(
|
|
@@ -155,7 +174,7 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
155
174
|
)
|
|
156
175
|
);
|
|
157
176
|
|
|
158
|
-
//
|
|
177
|
+
// 로거/전면/보상형/앱오프닝/앱종료/앱전환은 legacy 모듈로 사용 (isTurboModule = false)
|
|
159
178
|
moduleInfos.put(
|
|
160
179
|
RNAdWhaleMediationRewardAd.REACT_CLASS_NAME,
|
|
161
180
|
new ReactModuleInfo(
|
|
@@ -168,7 +187,7 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
168
187
|
)
|
|
169
188
|
);
|
|
170
189
|
|
|
171
|
-
//
|
|
190
|
+
// 로거/전면/보상형/앱오프닝/앱종료/앱전환은 legacy 모듈로 사용 (isTurboModule = false)
|
|
172
191
|
moduleInfos.put(
|
|
173
192
|
RNAdWhaleMediationAppOpenAd.REACT_CLASS_NAME,
|
|
174
193
|
new ReactModuleInfo(
|
|
@@ -181,6 +200,32 @@ public class AdwhaleSdkReactNativePackage extends BaseReactPackage {
|
|
|
181
200
|
)
|
|
182
201
|
);
|
|
183
202
|
|
|
203
|
+
// 로거/전면/보상형/앱오프닝/앱종료/앱전환은 legacy 모듈로 사용 (isTurboModule = false)
|
|
204
|
+
moduleInfos.put(
|
|
205
|
+
RNAdWhaleMediationExitPopupAd.REACT_CLASS_NAME,
|
|
206
|
+
new ReactModuleInfo(
|
|
207
|
+
RNAdWhaleMediationExitPopupAd.REACT_CLASS_NAME,
|
|
208
|
+
RNAdWhaleMediationExitPopupAd.REACT_CLASS_NAME,
|
|
209
|
+
false,
|
|
210
|
+
false,
|
|
211
|
+
false,
|
|
212
|
+
false
|
|
213
|
+
)
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
// 로거/전면/보상형/앱오프닝/앱종료/앱전환은 legacy 모듈로 사용 (isTurboModule = false)
|
|
217
|
+
moduleInfos.put(
|
|
218
|
+
RNAdWhaleMediationTransitionPopupAd.REACT_CLASS_NAME,
|
|
219
|
+
new ReactModuleInfo(
|
|
220
|
+
RNAdWhaleMediationTransitionPopupAd.REACT_CLASS_NAME,
|
|
221
|
+
RNAdWhaleMediationTransitionPopupAd.REACT_CLASS_NAME,
|
|
222
|
+
false,
|
|
223
|
+
false,
|
|
224
|
+
false,
|
|
225
|
+
false
|
|
226
|
+
)
|
|
227
|
+
);
|
|
228
|
+
|
|
184
229
|
return moduleInfos;
|
|
185
230
|
};
|
|
186
231
|
}
|