adwhale-sdk-react-native 2.7.203 → 2.7.300
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 +105 -39
- package/android/build.gradle +15 -15
- package/android/proguard-rules.pro +52 -107
- 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 +149 -42
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +60 -30
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAppOpenAd.java +136 -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 +189 -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 +255 -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 +18 -0
- package/ios/RNAdWhaleMediationRewardAd.swift +172 -0
- package/ios/WhaleMediationBannerContainer.swift +182 -0
- package/lib/module/AdWhaleAdView.js +80 -1
- 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 +169 -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 +46 -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 +14 -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 +18 -2
- 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 +33 -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 +126 -9
- package/src/AdWhaleAppOpenAd.ts +293 -38
- package/src/AdWhaleExitPopupAd.ts +183 -0
- package/src/AdWhaleInterstitialAd.ts +206 -36
- package/src/AdWhaleMediationAds.ts +109 -5
- package/src/AdWhaleNativeCustomView.tsx +85 -23
- package/src/AdWhaleNativeTemplateView.tsx +79 -42
- package/src/AdWhaleRewardAd.ts +245 -43
- package/src/AdWhaleTransitionPopupAd.ts +171 -0
- package/src/NativeAdwhaleSdkReactNative.ts +36 -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 +34 -1
|
@@ -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.4"
|
|
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,14 +1,18 @@
|
|
|
1
|
+
# 최신 버전: 2.7.300
|
|
2
|
+
|
|
1
3
|
# adwhale-sdk-react-native
|
|
2
|
-
|
|
4
|
+
ADwhale Android/iOS 네이티브 광고 미디에이션 SDK를
|
|
3
5
|
React Native 환경에서 사용할 수 있도록 제공하는 공식 SDK입니다.
|
|
4
6
|
|
|
5
7
|
- Android 네이티브 SDK 기반
|
|
6
8
|
- React Native Bridge / TurboModule 지원
|
|
7
|
-
- 배너, 전면, 보상형, 네이티브 광고 지원
|
|
9
|
+
- SDK 초기화, 배너, 전면, 보상형, 네이티브 광고(템플릿, 커스텀), 앱오프닝 광고, 앱 종료 팝업 광고, Android 전용 전환 팝업 광고 지원
|
|
10
|
+
- 광고 이벤트 콜백 리스너 제공
|
|
8
11
|
- Expo Bare Workflow / Custom Dev Client 지원
|
|
9
12
|
|
|
10
13
|
> ⚠️ Expo Go (Managed Workflow)에서는 네이티브 모듈 특성상 사용할 수 없습니다.
|
|
11
14
|
|
|
15
|
+
자세한 가이드는 https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk 를 참고하세요.
|
|
12
16
|
---
|
|
13
17
|
|
|
14
18
|
## Installation
|
|
@@ -22,18 +26,19 @@ npm install adwhale-sdk-react-native
|
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
## Version Policy
|
|
25
|
-
본 SDK는 Android 네이티브 SDK 버전과의 대응 관계를 명확히 유지하기 위해
|
|
29
|
+
본 SDK는 Android 네이티브 및 iOS 네이티브 SDK 버전과의 대응 관계를 명확히 유지하기 위해
|
|
26
30
|
다음과 같은 버전 규칙을 사용합니다.
|
|
27
31
|
- 앞 세 자릿수(Major.Minor.Patch) 는 Android SDK 버전과 동일
|
|
28
32
|
- React Native 전용 수정 사항은 Patch 값을 확장하여 관리
|
|
29
33
|
|
|
30
34
|
### Version Mapping Example
|
|
31
|
-
| Android SDK | React Native SDK | Description
|
|
32
|
-
|
|
33
|
-
| 2.7.1
|
|
34
|
-
| 2.7.1
|
|
35
|
-
| 2.7.1
|
|
36
|
-
| 2.7.2
|
|
35
|
+
| Android SDK | React Native SDK | Description |
|
|
36
|
+
|-------------|------------------|--------------------------------|
|
|
37
|
+
| 2.7.1 | 2.7.100 | Android 2.7.1 기반 RN SDK 최초 릴리스 |
|
|
38
|
+
| 2.7.1 | 2.7.101 | RN 레이어 핫픽스 |
|
|
39
|
+
| 2.7.1 | 2.7.102 | RN 버그 수정 |
|
|
40
|
+
| 2.7.2 | 2.7.200 | Android SDK 2.7.2 반영 |
|
|
41
|
+
| 2.7.3 | 2.7.300 | Android SDK 2.7.3 반영 |
|
|
37
42
|
|
|
38
43
|
|
|
39
44
|
## Version Usage Guide
|
|
@@ -43,42 +48,29 @@ npm install adwhale-sdk-react-native
|
|
|
43
48
|
운영 안정성을 중시하는 경우
|
|
44
49
|
```json
|
|
45
50
|
{
|
|
46
|
-
"adwhale-sdk-react-native": "~2.7.
|
|
51
|
+
"adwhale-sdk-react-native": "~2.7.300"
|
|
47
52
|
}
|
|
48
53
|
```
|
|
49
|
-
- Android SDK 2.7.
|
|
54
|
+
- Android SDK 2.7.3 기반 유지
|
|
50
55
|
- RN 핫픽스만 자동 반영
|
|
51
|
-
|
|
52
|
-
### 동일한 Android SDK 기반의 최신 RN 수정만 사용
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"adwhale-sdk-react-native": "^2.7.203"
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
- Android SDK 2.7.x 범위 내 최신 RN 수정 자동 반영
|
|
59
|
-
- Android SDK 상위 메이저/마이너 버전은 반영되지 않음
|
|
60
|
-
|
|
56
|
+
- >=2.7.3+0 <2.8.0 범위
|
|
61
57
|
|
|
62
58
|
### 특정 버전을 완전히 고정하여 사용하는 경우
|
|
63
59
|
```json
|
|
64
60
|
{
|
|
65
|
-
"adwhale-sdk-react-native": "2.7.
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
### 항상 최신 버전을 사용하는 경우
|
|
71
|
-
```json
|
|
72
|
-
{
|
|
73
|
-
"adwhale-sdk-react-native": "latest"
|
|
61
|
+
"adwhale-sdk-react-native": "2.7.300"
|
|
74
62
|
}
|
|
75
63
|
```
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
64
|
+
- 버전 변경 없음
|
|
65
|
+
- 재현성, 장애 분석에 최적
|
|
66
|
+
- QA / 장애 재현 환경
|
|
67
|
+
- 장기 유지 브랜치
|
|
79
68
|
|
|
80
69
|
## Example Project
|
|
81
|
-
SDK 동작을 바로 확인할 수 있는 example
|
|
70
|
+
SDK 동작을 바로 확인할 수 있는 example 프로젝트를 제공합니다.
|
|
71
|
+
- [React Native 샘플](https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative/tree/main/ReactNativeSample)
|
|
72
|
+
- [Expo 샘플](https://github.com/dev-adwhale/ADwhaleMediationSDK-ReactNative/tree/main/ExpoSample)
|
|
73
|
+
yarn 사용시
|
|
82
74
|
```sh
|
|
83
75
|
yarn install
|
|
84
76
|
yarn prepare
|
|
@@ -86,6 +78,13 @@ cd example
|
|
|
86
78
|
yarn android
|
|
87
79
|
```
|
|
88
80
|
|
|
81
|
+
npm 사용시
|
|
82
|
+
```sh
|
|
83
|
+
npm install
|
|
84
|
+
cd example
|
|
85
|
+
npm run android
|
|
86
|
+
```
|
|
87
|
+
|
|
89
88
|
## Expo Support
|
|
90
89
|
다음 환경에서 사용 가능합니다.
|
|
91
90
|
- Expo Bare Workflow
|
|
@@ -98,24 +97,91 @@ Expo Go 환경에서는 사용할 수 없습니다.
|
|
|
98
97
|
- 배너 광고
|
|
99
98
|
- 전면 광고
|
|
100
99
|
- 보상형 광고
|
|
101
|
-
- 네이티브 광고
|
|
102
|
-
-
|
|
100
|
+
- 네이티브 템플릿 광고
|
|
101
|
+
- 네이티브 커스텀 광고
|
|
102
|
+
- 앱 오프닝 광고
|
|
103
|
+
- 앱 종료 팝업 광고
|
|
104
|
+
- Android 전용 전환 팝업 광고
|
|
105
|
+
- 광고 이벤트 콜백 리스너 제공
|
|
103
106
|
|
|
107
|
+
---
|
|
104
108
|
|
|
105
109
|
## Troubleshooting
|
|
106
|
-
|
|
110
|
+
|
|
111
|
+
### Android 빌드 오류
|
|
107
112
|
```sh
|
|
108
113
|
cd example/android
|
|
109
114
|
./gradlew clean
|
|
110
115
|
```
|
|
111
116
|
|
|
112
|
-
|
|
117
|
+
### iOS: "PhaseScriptExecution failed with a nonzero exit code"
|
|
118
|
+
Xcode 빌드 시 **Run Script** 단계 중 하나가 실패할 때 나옵니다. 어떤 스크립트에서 실패했는지부터 확인하세요.
|
|
119
|
+
|
|
120
|
+
**1) 실패한 스크립트 확인**
|
|
121
|
+
- Xcode에서 **Product → Build** 후 왼쪽 **Report navigator** (⌘9) → 최근 빌드 선택
|
|
122
|
+
- 빌드 로그에서 **PhaseScriptExecution** 또는 **Run Script** 근처의 **빨간 에러 메시지** 확인
|
|
123
|
+
- 실패한 스크립트 이름(예: "Bundle React Native code and images", "Embed Pods Frameworks")과 그 아래 출력 내용 확인
|
|
124
|
+
|
|
125
|
+
**2) 자주 쓰는 해결 방법**
|
|
126
|
+
```sh
|
|
127
|
+
# example 기준 (저장소 루트에서)
|
|
128
|
+
cd example
|
|
129
|
+
yarn install # 또는 npm install
|
|
130
|
+
cd ios
|
|
131
|
+
rm -rf build Pods Podfile.lock
|
|
132
|
+
pod install
|
|
133
|
+
cd ..
|
|
134
|
+
yarn ios # 또는 npx react-native run-ios
|
|
135
|
+
# CLI로만 빌드해 볼 때:
|
|
136
|
+
# yarn build:ios # example/package.json의 react-native build-ios
|
|
137
|
+
```
|
|
138
|
+
- **Podfile.lock 불일치**라면: `example/ios`에서 `pod install`을 다시 실행합니다.
|
|
139
|
+
- **"Bundle React Native code and images"** 등 Node를 쓰는 스크립트 실패: Xcode가 터미널과 다른 `PATH`로 `node`를 못 찾는 경우가 많습니다. 터미널에서 `which node`로 경로를 확인한 뒤, `example/ios/.xcode.env` 또는 `example/ios/.xcode.env.local`에 `export NODE_BINARY=...`로 지정하거나, Xcode **Build Phases**의 해당 Run Script 상단에 동일하게 넣어 보세요.
|
|
140
|
+
- **Hermes / 번들 관련 스크립트** 실패: 위 정리 후 터미널에서 `yarn build:ios`(또는 `npx react-native build-ios`)로 한 번 빌드해 로그를 확인합니다.
|
|
141
|
+
- **실기기/서명** 관련이라면: Development team·신뢰 설정을 확인합니다.
|
|
142
|
+
|
|
143
|
+
### iOS 실기기에서 "Development team" 오류가 나는 이유
|
|
144
|
+
- **시뮬레이터**: 코드 서명이 필요 없어 Development team 없이 실행됩니다.
|
|
145
|
+
- **실제 기기(USB)**: iOS는 기기 설치 시 **Apple 개발자 팀(Development team)** 서명을 요구합니다.
|
|
146
|
+
|
|
147
|
+
**해결**: Xcode에서 `example/ios/AdwhaleSdkReactNativeExample.xcworkspace` 열기 → **AdwhaleSdkReactNativeExample** 타깃 → **Signing & Capabilities** → **Team**에서 본인 Apple ID(팀) 선택. (무료 Apple ID로도 실기기 테스트 가능)
|
|
148
|
+
자신의 앱이라면 해당 앱의 `.xcworkspace`와 앱 타깃 이름에 맞춰 동일하게 설정하면 됩니다.
|
|
149
|
+
|
|
150
|
+
### iOS 실기기에서 "신뢰하지 않는 개발자" / 앱이 실행되지 않을 때
|
|
151
|
+
무료 Apple ID로 서명한 앱을 **처음** 실기기에 설치한 경우, iOS가 개발자를 "신뢰하지 않음"으로 두어 앱 실행을 막습니다.
|
|
152
|
+
이때 Xcode에서는 *"failed to launch"*, *"exited before the debugger could attach"* 같은 메시지가 나올 수 있습니다.
|
|
153
|
+
|
|
154
|
+
**해결 (iPhone에서 한 번만 하면 됨)**
|
|
155
|
+
1. iPhone **설정** → **일반** → **VPN 및 기기 관리** (또는 **기기 관리** / **프로필 및 기기 관리**)
|
|
156
|
+
2. **개발자 앱** 아래에서 본인 Apple ID(예: `xxxxx@gmail.com`) 항목 선택
|
|
157
|
+
3. **"[Apple ID]을(를) 신뢰"** 탭 → **신뢰** 확인
|
|
158
|
+
4. 이후부터는 해당 기기에서 같은 Apple ID로 서명한 앱이 정상 실행됩니다.
|
|
159
|
+
|
|
160
|
+
### iOS App Store 배포
|
|
161
|
+
이 SDK를 사용한 앱을 App Store에 제출·배포하는 데 문제 없습니다.
|
|
162
|
+
실기기 테스트·스토어 제출 시에는 위와 같이 서명(Development team, 프로비저닝 프로필)을 설정하고, [ADwhale React Native 가이드](https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk)에 안내된 iOS 설정(Info.plist, App Transport Security, AdMob(Google) App ID 등)을 준수하면 됩니다.
|
|
163
|
+
|
|
164
|
+
### 환경 점검:
|
|
113
165
|
```sh
|
|
114
166
|
npx react-native doctor
|
|
115
167
|
```
|
|
116
168
|
|
|
169
|
+
## Changelog
|
|
170
|
+
| 배포버전 | 내용 | 배포날짜 |
|
|
171
|
+
|---------|-----------------------------------------------------------------------------------------------------------------------------------------------|------------|
|
|
172
|
+
| 2.7.300 | 애드웨일 Android 2.7.3 업데이트 및 ios 1.0.4 추가 | 2026.04.11 |
|
|
173
|
+
| 2.7.204 | 버그 및 샘플 수정 | 2026.01.22 |
|
|
174
|
+
| 2.7.203 | 버그 및 샘플 수정 | 2026.01.19 |
|
|
175
|
+
| 2.7.202 | 버그 및 샘플 수정 | 2026.01.19 |
|
|
176
|
+
| 2.7.201 | 버그 및 샘플 수정 | 2026.01.12 |
|
|
177
|
+
| 2.7.200 | 앱오프닝 광고 추가 (ADwhale Android SDK v2.7.2에서 추가됨) | 2026.01.09 |
|
|
178
|
+
| 2.7.102 | gcoder 및 placement name 추가 | 2025.12.29 |
|
|
179
|
+
| 2.7.101 | 버그 및 샘플 수정 | 2025.12.23 |
|
|
180
|
+
| 2.7.100 | 네이티브 광고 추가 (ADwhale Android SDK v2.7.0) | 2025.12.15 |
|
|
181
|
+
| | GDPR 기능 추가 (ADwhale Android SDK v2.7.0) | |
|
|
182
|
+
| | 적응형 배너 추가 (ADwhale Android SDK v2.7.1) | |
|
|
117
183
|
|
|
118
184
|
## Learn More
|
|
185
|
+
- [ADwhale ReactNative 가이드](https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk)
|
|
119
186
|
- [React Native Documentation](https://reactnative.dev/docs/getting-started)
|
|
120
187
|
- [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
|
}
|
|
@@ -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>(...);
|
|
@@ -150,115 +174,36 @@
|
|
|
150
174
|
|
|
151
175
|
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationAppOpenAdListener {*;}
|
|
152
176
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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();
|
|
177
|
+
-keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationExitPopupAd {
|
|
178
|
+
public <init>(...);
|
|
179
|
+
public *** loadAd();
|
|
180
|
+
public *** showAd(***, ***);
|
|
181
|
+
public *** setRegion(***);
|
|
182
|
+
public *** setGcoder(***, ***);
|
|
183
|
+
public *** setPlacementUid(***);
|
|
184
|
+
public *** setPlacementName(***);
|
|
185
|
+
public *** setCustomizeButtonText(***, ***);
|
|
186
|
+
public *** setCustomDescription(***);
|
|
187
|
+
public *** destroy();
|
|
188
|
+
public *** resume(***);
|
|
189
|
+
public *** setAdWhaleMediationExitPopupAdListener(***);
|
|
241
190
|
}
|
|
242
191
|
|
|
243
|
-
|
|
192
|
+
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationExitPopupAdListener {*;}
|
|
244
193
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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();
|
|
194
|
+
-keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationTransitionPopupAd {
|
|
195
|
+
public <init>(...);
|
|
196
|
+
public *** loadAd();
|
|
197
|
+
public *** showAd(***, ***);
|
|
198
|
+
public *** setRegion(***);
|
|
199
|
+
public *** setGcoder(***, ***);
|
|
200
|
+
public *** setPlacementUid(***);
|
|
201
|
+
public *** setPlacementName(***);
|
|
202
|
+
public *** destroy();
|
|
203
|
+
public *** resume(***);
|
|
204
|
+
public *** setAdWhaleMediationTransitionPopupAdListener(***);
|
|
262
205
|
}
|
|
263
206
|
|
|
264
|
-
|
|
207
|
+
-keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationTransitionPopupAdListener {*;}
|
|
208
|
+
|
|
209
|
+
#================== 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
|
}
|