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.
Files changed (109) hide show
  1. package/AdwhaleSdkReactNative.podspec +22 -0
  2. package/README.md +95 -91
  3. package/android/build.gradle +35 -1
  4. package/android/proguard-rules.pro +58 -0
  5. package/android/src/main/java/com/adwhalesdkreactnative/AdWhaleCustomNativeBinderFactory.java +18 -0
  6. package/android/src/main/java/com/adwhalesdkreactnative/AdwhaleSdkReactNativePackage.java +51 -6
  7. package/android/src/main/java/com/adwhalesdkreactnative/BinderFactory.java +9 -0
  8. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +148 -49
  9. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +46 -27
  10. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAppOpenAd.java +148 -0
  11. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationCustomNativeAdView.java +37 -46
  12. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationExitPopupAd.java +240 -0
  13. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationInterstitialAd.java +205 -0
  14. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationLoggerModule.java +2 -1
  15. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationNativeAdViewListenerBridge.java +83 -0
  16. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationRewardAd.java +341 -6
  17. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTemplateNativeAdView.java +191 -70
  18. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTransitionPopupAd.java +218 -0
  19. package/android/src/main/java/com/adwhalesdkreactnative/RNWrapperView.java +137 -0
  20. package/android/src/main/java/com/adwhalesdkreactnative/SimpleBinderFactory.java +1 -1
  21. package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodArgConst.java +112 -0
  22. package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodCallConst.java +113 -0
  23. package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodResultConst.java +28 -0
  24. package/build/generated/ios/ReactAppDependencyProvider.podspec +34 -0
  25. package/ios/AdWhaleNativeCustomViewFactoryRegistry.swift +56 -0
  26. package/ios/AdwhaleSdkReactNative.mm +96 -5
  27. package/ios/AdwhaleSdkReactNativeModule.swift +148 -0
  28. package/ios/RNAdWhaleMediationAdViewManager.m +38 -0
  29. package/ios/RNAdWhaleMediationAdViewManager.swift +14 -0
  30. package/ios/RNAdWhaleMediationAppOpenAd.m +18 -0
  31. package/ios/RNAdWhaleMediationAppOpenAd.swift +175 -0
  32. package/ios/RNAdWhaleMediationCustomNativeAdViewManager.m +22 -0
  33. package/ios/RNAdWhaleMediationCustomNativeAdViewManager.swift +239 -0
  34. package/ios/RNAdWhaleMediationInterstitialAd.m +18 -0
  35. package/ios/RNAdWhaleMediationInterstitialAd.swift +161 -0
  36. package/ios/RNAdWhaleMediationRewardAd.m +22 -0
  37. package/ios/RNAdWhaleMediationRewardAd.swift +206 -0
  38. package/ios/WhaleMediationBannerContainer.swift +182 -0
  39. package/lib/module/AdWhaleAdView.js +58 -3
  40. package/lib/module/AdWhaleAdView.js.map +1 -1
  41. package/lib/module/AdWhaleAppOpenAd.js +223 -25
  42. package/lib/module/AdWhaleAppOpenAd.js.map +1 -1
  43. package/lib/module/AdWhaleExitPopupAd.js +93 -0
  44. package/lib/module/AdWhaleExitPopupAd.js.map +1 -0
  45. package/lib/module/AdWhaleInterstitialAd.js +146 -22
  46. package/lib/module/AdWhaleInterstitialAd.js.map +1 -1
  47. package/lib/module/AdWhaleMediationAds.js +75 -4
  48. package/lib/module/AdWhaleMediationAds.js.map +1 -1
  49. package/lib/module/AdWhaleNativeCustomView.js +59 -8
  50. package/lib/module/AdWhaleNativeCustomView.js.map +1 -1
  51. package/lib/module/AdWhaleNativeTemplateView.js +37 -19
  52. package/lib/module/AdWhaleNativeTemplateView.js.map +1 -1
  53. package/lib/module/AdWhaleRewardAd.js +221 -24
  54. package/lib/module/AdWhaleRewardAd.js.map +1 -1
  55. package/lib/module/AdWhaleTransitionPopupAd.js +87 -0
  56. package/lib/module/AdWhaleTransitionPopupAd.js.map +1 -0
  57. package/lib/module/NativeAdwhaleSdkReactNative.js +16 -1
  58. package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -1
  59. package/lib/module/constants/AdWhaleMethodArgConst.js +53 -0
  60. package/lib/module/constants/AdWhaleMethodArgConst.js.map +1 -0
  61. package/lib/module/constants/AdWhaleMethodCallConst.js +56 -0
  62. package/lib/module/constants/AdWhaleMethodCallConst.js.map +1 -0
  63. package/lib/module/constants/AdWhaleMethodResultConst.js +16 -0
  64. package/lib/module/constants/AdWhaleMethodResultConst.js.map +1 -0
  65. package/lib/module/index.js +10 -1
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/typescript/src/AdWhaleAdView.d.ts +20 -2
  68. package/lib/typescript/src/AdWhaleAdView.d.ts.map +1 -1
  69. package/lib/typescript/src/AdWhaleAppOpenAd.d.ts +10 -0
  70. package/lib/typescript/src/AdWhaleAppOpenAd.d.ts.map +1 -1
  71. package/lib/typescript/src/AdWhaleExitPopupAd.d.ts +36 -0
  72. package/lib/typescript/src/AdWhaleExitPopupAd.d.ts.map +1 -0
  73. package/lib/typescript/src/AdWhaleInterstitialAd.d.ts +16 -0
  74. package/lib/typescript/src/AdWhaleInterstitialAd.d.ts.map +1 -1
  75. package/lib/typescript/src/AdWhaleMediationAds.d.ts +13 -5
  76. package/lib/typescript/src/AdWhaleMediationAds.d.ts.map +1 -1
  77. package/lib/typescript/src/AdWhaleNativeCustomView.d.ts +7 -4
  78. package/lib/typescript/src/AdWhaleNativeCustomView.d.ts.map +1 -1
  79. package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts +20 -7
  80. package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts.map +1 -1
  81. package/lib/typescript/src/AdWhaleRewardAd.d.ts +63 -6
  82. package/lib/typescript/src/AdWhaleRewardAd.d.ts.map +1 -1
  83. package/lib/typescript/src/AdWhaleTransitionPopupAd.d.ts +33 -0
  84. package/lib/typescript/src/AdWhaleTransitionPopupAd.d.ts.map +1 -0
  85. package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts +28 -6
  86. package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts.map +1 -1
  87. package/lib/typescript/src/constants/AdWhaleMethodArgConst.d.ts +51 -0
  88. package/lib/typescript/src/constants/AdWhaleMethodArgConst.d.ts.map +1 -0
  89. package/lib/typescript/src/constants/AdWhaleMethodCallConst.d.ts +53 -0
  90. package/lib/typescript/src/constants/AdWhaleMethodCallConst.d.ts.map +1 -0
  91. package/lib/typescript/src/constants/AdWhaleMethodResultConst.d.ts +14 -0
  92. package/lib/typescript/src/constants/AdWhaleMethodResultConst.d.ts.map +1 -0
  93. package/lib/typescript/src/index.d.ts +10 -2
  94. package/lib/typescript/src/index.d.ts.map +1 -1
  95. package/package.json +1 -1
  96. package/src/AdWhaleAdView.tsx +92 -4
  97. package/src/AdWhaleAppOpenAd.ts +293 -38
  98. package/src/AdWhaleExitPopupAd.ts +183 -0
  99. package/src/AdWhaleInterstitialAd.ts +206 -36
  100. package/src/AdWhaleMediationAds.ts +108 -4
  101. package/src/AdWhaleNativeCustomView.tsx +85 -23
  102. package/src/AdWhaleNativeTemplateView.tsx +79 -42
  103. package/src/AdWhaleRewardAd.ts +317 -51
  104. package/src/AdWhaleTransitionPopupAd.ts +171 -0
  105. package/src/NativeAdwhaleSdkReactNative.ts +30 -6
  106. package/src/constants/AdWhaleMethodArgConst.ts +50 -0
  107. package/src/constants/AdWhaleMethodCallConst.ts +60 -0
  108. package/src/constants/AdWhaleMethodResultConst.ts +13 -0
  109. 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
- ## Version Policy
25
- 본 SDK는 Android 네이티브 SDK 버전과의 대응 관계를 명확히 유지하기 위해
26
- 다음과 같은 버전 규칙을 사용합니다.
27
- - 세 자릿수(Major.Minor.Patch) 는 Android SDK 버전과 동일
28
- - React Native 전용 수정 사항은 Patch 값을 확장하여 관리
29
-
30
- ### Version Mapping Example
31
- | Android SDK | React Native SDK | Description |
32
- |------------|------------------|-------------|
33
- | 2.7.1 | 2.7.100 | Android 2.7.1 기반 RN SDK 최초 릴리스 |
34
- | 2.7.1 | 2.7.101 | RN 레이어 핫픽스 |
35
- | 2.7.1 | 2.7.102 | RN 버그 수정 |
36
- | 2.7.2 | 2.7.200 | Android SDK 2.7.2 반영 |
37
-
38
-
39
- ## Version Usage Guide
40
- 프로젝트 상황에 따라 아래 방식을 권장합니다.
41
-
42
- ### Android SDK 버전에 고정하여 사용하는 경우 (권장)
43
- 운영 안정성을 중시하는 경우
44
- ```json
45
- {
46
- "adwhale-sdk-react-native": "~2.7.204"
47
- }
48
- ```
49
- - Android SDK 2.7.2 기반 유지
50
- - RN 핫픽스만 자동 반영
51
-
52
- ### 동일한 Android SDK 기반의 최신 RN 수정만 사용
53
- ```json
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.204"
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": "latest"
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
- cd example
96
- npm run android
89
+
90
+ # 4. iOS 의존성 설치 (iOS 빌드 시에만 필요)
91
+ cd ios
92
+ pod install
93
+ cd ..
97
94
  ```
98
95
 
99
- ## Expo Support
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
- ## Supported Features
107
- - SDK 초기화
108
- - 배너 광고
109
- - 전면 광고
110
- - 보상형 광고
111
- - 네이티브 광고 (Template / Custom)
112
- - 광고 이벤트 리스너 제공
113
-
108
+ # npm 사용 시
109
+ npm start
110
+ npm run android
111
+ ```
114
112
 
115
- ## Troubleshooting
116
- Android 빌드 오류 발생 시:
113
+ ### iOS 실행
117
114
  ```sh
118
- cd example/android
119
- ./gradlew clean
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.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 | gcoderplacement 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) | |
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)
@@ -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
- implementation "net.adwhale.sdk.mediation:adwhale-mediation-sdk:2.7.2"
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
- // 엡오프닝 Old Architecture를 따르지만 등록은 TurboModule로 등록
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
- // 로거/전면/보상형/앱오프닝은 legacy 모듈로 사용 (isTurboModule = false)
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
- // 로거/전면/보상형/앱오프닝은 legacy 모듈로 사용 (isTurboModule = false)
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
- // 로거/전면/보상형/앱오프닝은 legacy 모듈로 사용 (isTurboModule = false)
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
- // 로거/전면/보상형/앱오프닝은 legacy 모듈로 사용 (isTurboModule = false)
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
  }
@@ -0,0 +1,9 @@
1
+ package com.adwhalesdkreactnative;
2
+
3
+ /**
4
+ * Flutter Android 인터페이스명과 동일하게 맞춘 alias.
5
+ * 기존 RN 구현의 NativeAdBinderFactory와 동일 역할입니다.
6
+ */
7
+ public interface BinderFactory extends NativeAdBinderFactory {
8
+ }
9
+