adwhale-sdk-react-native 2.7.204 → 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.
Files changed (108) hide show
  1. package/AdwhaleSdkReactNative.podspec +22 -0
  2. package/README.md +80 -37
  3. package/android/proguard-rules.pro +56 -0
  4. package/android/src/main/java/com/adwhalesdkreactnative/AdWhaleCustomNativeBinderFactory.java +18 -0
  5. package/android/src/main/java/com/adwhalesdkreactnative/AdwhaleSdkReactNativePackage.java +51 -6
  6. package/android/src/main/java/com/adwhalesdkreactnative/BinderFactory.java +9 -0
  7. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +148 -49
  8. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +46 -27
  9. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAppOpenAd.java +136 -0
  10. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationCustomNativeAdView.java +37 -46
  11. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationExitPopupAd.java +240 -0
  12. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationInterstitialAd.java +189 -0
  13. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationLoggerModule.java +2 -1
  14. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationNativeAdViewListenerBridge.java +83 -0
  15. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationRewardAd.java +255 -6
  16. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTemplateNativeAdView.java +191 -70
  17. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTransitionPopupAd.java +218 -0
  18. package/android/src/main/java/com/adwhalesdkreactnative/RNWrapperView.java +137 -0
  19. package/android/src/main/java/com/adwhalesdkreactnative/SimpleBinderFactory.java +1 -1
  20. package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodArgConst.java +112 -0
  21. package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodCallConst.java +113 -0
  22. package/android/src/main/java/com/adwhalesdkreactnative/common/RNMethodResultConst.java +28 -0
  23. package/build/generated/ios/ReactAppDependencyProvider.podspec +34 -0
  24. package/ios/AdWhaleNativeCustomViewFactoryRegistry.swift +56 -0
  25. package/ios/AdwhaleSdkReactNative.mm +96 -5
  26. package/ios/AdwhaleSdkReactNativeModule.swift +148 -0
  27. package/ios/RNAdWhaleMediationAdViewManager.m +38 -0
  28. package/ios/RNAdWhaleMediationAdViewManager.swift +14 -0
  29. package/ios/RNAdWhaleMediationAppOpenAd.m +18 -0
  30. package/ios/RNAdWhaleMediationAppOpenAd.swift +175 -0
  31. package/ios/RNAdWhaleMediationCustomNativeAdViewManager.m +22 -0
  32. package/ios/RNAdWhaleMediationCustomNativeAdViewManager.swift +239 -0
  33. package/ios/RNAdWhaleMediationInterstitialAd.m +18 -0
  34. package/ios/RNAdWhaleMediationInterstitialAd.swift +161 -0
  35. package/ios/RNAdWhaleMediationRewardAd.m +18 -0
  36. package/ios/RNAdWhaleMediationRewardAd.swift +172 -0
  37. package/ios/WhaleMediationBannerContainer.swift +182 -0
  38. package/lib/module/AdWhaleAdView.js +58 -3
  39. package/lib/module/AdWhaleAdView.js.map +1 -1
  40. package/lib/module/AdWhaleAppOpenAd.js +223 -25
  41. package/lib/module/AdWhaleAppOpenAd.js.map +1 -1
  42. package/lib/module/AdWhaleExitPopupAd.js +93 -0
  43. package/lib/module/AdWhaleExitPopupAd.js.map +1 -0
  44. package/lib/module/AdWhaleInterstitialAd.js +146 -22
  45. package/lib/module/AdWhaleInterstitialAd.js.map +1 -1
  46. package/lib/module/AdWhaleMediationAds.js +75 -4
  47. package/lib/module/AdWhaleMediationAds.js.map +1 -1
  48. package/lib/module/AdWhaleNativeCustomView.js +59 -8
  49. package/lib/module/AdWhaleNativeCustomView.js.map +1 -1
  50. package/lib/module/AdWhaleNativeTemplateView.js +37 -19
  51. package/lib/module/AdWhaleNativeTemplateView.js.map +1 -1
  52. package/lib/module/AdWhaleRewardAd.js +169 -24
  53. package/lib/module/AdWhaleRewardAd.js.map +1 -1
  54. package/lib/module/AdWhaleTransitionPopupAd.js +87 -0
  55. package/lib/module/AdWhaleTransitionPopupAd.js.map +1 -0
  56. package/lib/module/NativeAdwhaleSdkReactNative.js +16 -1
  57. package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -1
  58. package/lib/module/constants/AdWhaleMethodArgConst.js +53 -0
  59. package/lib/module/constants/AdWhaleMethodArgConst.js.map +1 -0
  60. package/lib/module/constants/AdWhaleMethodCallConst.js +56 -0
  61. package/lib/module/constants/AdWhaleMethodCallConst.js.map +1 -0
  62. package/lib/module/constants/AdWhaleMethodResultConst.js +16 -0
  63. package/lib/module/constants/AdWhaleMethodResultConst.js.map +1 -0
  64. package/lib/module/index.js +10 -1
  65. package/lib/module/index.js.map +1 -1
  66. package/lib/typescript/src/AdWhaleAdView.d.ts +20 -2
  67. package/lib/typescript/src/AdWhaleAdView.d.ts.map +1 -1
  68. package/lib/typescript/src/AdWhaleAppOpenAd.d.ts +10 -0
  69. package/lib/typescript/src/AdWhaleAppOpenAd.d.ts.map +1 -1
  70. package/lib/typescript/src/AdWhaleExitPopupAd.d.ts +36 -0
  71. package/lib/typescript/src/AdWhaleExitPopupAd.d.ts.map +1 -0
  72. package/lib/typescript/src/AdWhaleInterstitialAd.d.ts +16 -0
  73. package/lib/typescript/src/AdWhaleInterstitialAd.d.ts.map +1 -1
  74. package/lib/typescript/src/AdWhaleMediationAds.d.ts +13 -5
  75. package/lib/typescript/src/AdWhaleMediationAds.d.ts.map +1 -1
  76. package/lib/typescript/src/AdWhaleNativeCustomView.d.ts +7 -4
  77. package/lib/typescript/src/AdWhaleNativeCustomView.d.ts.map +1 -1
  78. package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts +20 -7
  79. package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts.map +1 -1
  80. package/lib/typescript/src/AdWhaleRewardAd.d.ts +18 -2
  81. package/lib/typescript/src/AdWhaleRewardAd.d.ts.map +1 -1
  82. package/lib/typescript/src/AdWhaleTransitionPopupAd.d.ts +33 -0
  83. package/lib/typescript/src/AdWhaleTransitionPopupAd.d.ts.map +1 -0
  84. package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts +28 -6
  85. package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts.map +1 -1
  86. package/lib/typescript/src/constants/AdWhaleMethodArgConst.d.ts +51 -0
  87. package/lib/typescript/src/constants/AdWhaleMethodArgConst.d.ts.map +1 -0
  88. package/lib/typescript/src/constants/AdWhaleMethodCallConst.d.ts +53 -0
  89. package/lib/typescript/src/constants/AdWhaleMethodCallConst.d.ts.map +1 -0
  90. package/lib/typescript/src/constants/AdWhaleMethodResultConst.d.ts +14 -0
  91. package/lib/typescript/src/constants/AdWhaleMethodResultConst.d.ts.map +1 -0
  92. package/lib/typescript/src/index.d.ts +9 -1
  93. package/lib/typescript/src/index.d.ts.map +1 -1
  94. package/package.json +1 -1
  95. package/src/AdWhaleAdView.tsx +92 -4
  96. package/src/AdWhaleAppOpenAd.ts +293 -38
  97. package/src/AdWhaleExitPopupAd.ts +183 -0
  98. package/src/AdWhaleInterstitialAd.ts +206 -36
  99. package/src/AdWhaleMediationAds.ts +108 -4
  100. package/src/AdWhaleNativeCustomView.tsx +85 -23
  101. package/src/AdWhaleNativeTemplateView.tsx +79 -42
  102. package/src/AdWhaleRewardAd.ts +245 -43
  103. package/src/AdWhaleTransitionPopupAd.ts +171 -0
  104. package/src/NativeAdwhaleSdkReactNative.ts +30 -6
  105. package/src/constants/AdWhaleMethodArgConst.ts +50 -0
  106. package/src/constants/AdWhaleMethodCallConst.ts +60 -0
  107. package/src/constants/AdWhaleMethodResultConst.ts +13 -0
  108. package/src/index.ts +33 -0
@@ -1,18 +1,32 @@
1
1
  import { TurboModuleRegistry, type TurboModule } from 'react-native';
2
2
 
3
+ /**
4
+ * Flutter `AdWhaleInitResult` / 네이티브 초기화 성공 맵과 동일: `statusCode`, `message` 만.
5
+ * 성공 여부는 `statusCode === 100` (Flutter 와 동일).
6
+ * TurboModule codegen 은 메서드명 `initialize` 를 사용합니다 (Flutter MethodChannel 은 `_init`).
7
+ */
3
8
  export interface InitializeResult {
4
9
  statusCode: number;
5
10
  message: string;
6
- isSuccess: boolean;
11
+ }
12
+
13
+ /** Flutter GDPR `requestGdprConsent` 응답 맵: `success`, `message` */
14
+ export interface GdprConsentResult {
15
+ success: boolean;
16
+ message: string;
17
+ }
18
+
19
+ /** Ad Inspector 닫힘 콜백과 동일한 status/message (Flutter 와 키 정렬) */
20
+ export interface AdInspectorResult {
21
+ statusCode: number;
22
+ message: string;
7
23
  }
8
24
 
9
25
  export interface Spec extends TurboModule {
26
+ /** RN codegen Java `initialize(Promise)` — Flutter MethodChannel 은 `_init` */
10
27
  initialize(): Promise<InitializeResult>;
11
28
  setCoppa(isEnabled: boolean): void;
12
- requestGdprConsent(): Promise<{
13
- isSuccess: boolean;
14
- message: string;
15
- }>;
29
+ requestGdprConsent(): Promise<GdprConsentResult>;
16
30
  getConsentStatus(): Promise<{
17
31
  coppa: boolean;
18
32
  gdpr: string;
@@ -20,6 +34,16 @@ export interface Spec extends TurboModule {
20
34
  }>;
21
35
  resetGdprConsentStatus(): void;
22
36
  setGdpr(consent: boolean): void;
37
+ setTagForUnderAgeOfConsent(tag: boolean): void;
38
+ setMaxAdContentRating(rating: string | null): void;
39
+ setTestDeviceIdentifiers(testDeviceIds: string[] | null): void;
40
+ showAdInspector(): Promise<AdInspectorResult>;
41
+ setAppMuted(isMuted: boolean): void;
42
+ setAppVolume(volume: number): void;
23
43
  }
24
44
 
25
- export default TurboModuleRegistry.getEnforcing<Spec>('AdwhaleSdkReactNative');
45
+ /**
46
+ * iOS/Android 네이티브에 모듈이 없거나 링크되지 않은 경우 null.
47
+ * (getEnforcing 는 로드 시점에 앱 전체가 크래시하므로 get 사용)
48
+ */
49
+ export default TurboModuleRegistry.get<Spec>('AdwhaleSdkReactNative');
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Flutter `lib/src/flutter_method_arg_const.dart` / Android `FlutterMethodArgConst` 와
3
+ * 동일한 키 문자열을 유지합니다. RN 전용 키는 주석으로 표시합니다.
4
+ */
5
+ export const AdWhaleMethodArgConst = {
6
+ sendStatusCode: 'statusCode',
7
+ sendMessage: 'message',
8
+ /** Flutter GDPR 등 */
9
+ sendSuccess: 'success',
10
+ /** RN 레거시 — init/showAdInspector 는 `sendStatusCode`(100) 로 성공 판별 */
11
+ sendIsSuccess: 'isSuccess',
12
+ sendCode: 'code',
13
+ sendEventName: 'eventName',
14
+ sendErrorMessage: 'errorMessage',
15
+ sendErrorCode: 'errorCode',
16
+ sendRewardAmount: 'RewardAmount',
17
+ sendRewardType: 'RewardType',
18
+ sendHeightPx: 'heightPx',
19
+ sendReason: 'reason',
20
+ receiveAdId: 'adId',
21
+ receivePlacementUid: 'placementUid',
22
+ receiveRating: 'rating',
23
+ receiveHasConsent: 'hasConsent',
24
+ receiveValue: 'value',
25
+ receiveTfuaMode: 'tfuaMode',
26
+ receiveIds: 'ids',
27
+ receiveRequestId: 'requestId',
28
+ receiveIsChildDirected: 'isChildDirected',
29
+ receiveEnabled: 'enabled',
30
+ receiveIsMuted: 'isMuted',
31
+ receivedVolume: 'volume',
32
+ receiveRegion: 'region',
33
+ receiveGcoder: 'gcoder',
34
+ receiveLt: 'lt',
35
+ receiveLng: 'lng',
36
+ receivePlacementName: 'placementName',
37
+ receivePrimaryButtonText: 'primaryButtonText',
38
+ receiveSecondaryButtonText: 'secondaryButtonText',
39
+ receiveCustomDescription: 'customDescription',
40
+ receiveOptions: 'options',
41
+ receiveAdaptiveAnchorWidth: 'adaptiveAnchorWidth',
42
+ receiveAndroidPlacementUid: 'androidPlacementUid',
43
+ receiveBannerHeight: 'bannerHeight',
44
+ receiveNativeAdOptions: 'nativeAdOptions',
45
+ receiveTemplateStyle: 'templateStyle',
46
+ sendCoppa: 'coppa',
47
+ sendGdpr: 'gdpr',
48
+ sendPersonalizedConsent: 'personalizedConsent',
49
+ sendRegistrationName: 'registrationName',
50
+ } as const;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Flutter `lib/src/flutter_method_call_const.dart` 와 동일한 메서드·이벤트 이름.
3
+ * RN ViewManager 전용 prop 은 주석으로 구분합니다.
4
+ */
5
+ export const AdWhaleMethodCallConst = {
6
+ // 글로벌 (TurboModule)
7
+ /** RN TurboModule codegen — Java {@code initialize(Promise)} */
8
+ initialize: 'initialize',
9
+ /** Flutter MethodChannel 전용 (TurboModule 과 다름) */
10
+ flutterInit: '_init',
11
+ requestGdprConsent: 'requestGdprConsent',
12
+ resetGdprConsentStatus: 'resetGdprConsentStatus',
13
+ setGdpr: 'setGdpr',
14
+ getConsentStatus: 'getConsentStatus',
15
+ setTagForUnderAgeOfConsent: 'setTagForUnderAgeOfConsent',
16
+ setMaxAdContentRating: 'setMaxAdContentRating',
17
+ setTestDeviceIdentifiers: 'setTestDeviceIdentifiers',
18
+ showAdInspector: 'showAdInspector',
19
+ setCoppa: 'setCoppa',
20
+ setLoggerEnabled: 'setLoggerEnabled',
21
+ getLogLevel: 'getLogLevel',
22
+ setAppMuted: 'setAppMuted',
23
+ setAppVolume: 'setAppVolume',
24
+
25
+ // Flutter: adId 기반 배너 (RN 에는 추후 TurboModule 로 대응 가능)
26
+ loadBannerAd: 'loadBannerAd',
27
+ resumeBannerAd: 'resumeBannerAd',
28
+ pauseBannerAd: 'pauseBannerAd',
29
+ destroyBannerAd: 'destroyBannerAd',
30
+
31
+ /** RN Android 에는 아직 네이티브 구현 없음 — 상수만 동기화 */
32
+ loadPreloadBannerAd: 'loadPreloadBannerAd',
33
+ showPreloadBannerAd: 'showPreloadBannerAd',
34
+ resumePreloadBannerAd: 'resumePreloadBannerAd',
35
+ pausePreloadBannerAd: 'pausePreloadBannerAd',
36
+ destroyPreloadBannerAd: 'destroyPreloadBannerAd',
37
+
38
+ /** RN 배너 View — Flutter loadBannerAd 와 역할 유사한 prop */
39
+ loadAd: 'loadAd',
40
+ showAd: 'showAd',
41
+ placementUid: 'placementUid',
42
+ adSize: 'adSize',
43
+ factoryId: 'factoryId',
44
+
45
+ onAdInspectorClosed: 'onAdInspectorClosed',
46
+ onInitComplete: 'onInitComplete',
47
+ onAdLoaded: 'onAdLoaded',
48
+ onAdLoadFailed: 'onAdLoadFailed',
49
+ onAdFailedToLoad: 'onAdFailedToLoad',
50
+ onAdClicked: 'onAdClicked',
51
+
52
+ onNativeAdLoaded: 'onNativeAdLoaded',
53
+ onNativeAdFailedToLoad: 'onNativeAdFailedToLoad',
54
+ onNativeAdShowFailed: 'onNativeAdShowFailed',
55
+ onNativeAdClicked: 'onNativeAdClicked',
56
+ onNativeAdClosed: 'onNativeAdClosed',
57
+ onNativeAdViewHeight: 'onNativeAdViewHeight',
58
+ } as const;
59
+
60
+ export type AdWhaleMethodCallConstKey = keyof typeof AdWhaleMethodCallConst;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Flutter `FlutterMethodResultConst` 와 동일한 Promise.reject / result.error 코드 문자열.
3
+ */
4
+ export const AdWhaleMethodResultConst = {
5
+ noActivity: 'NoActivity',
6
+ invalidArgs: 'InvalidArgs',
7
+ nativeAdError: 'NativeAdError',
8
+ preloadBannerError: 'PreloadBannerError',
9
+ bannerAdError: 'BannerAdError',
10
+ adShowError: 'AdShowError',
11
+ openInspectorFailed: 'OpenInspectorFailed',
12
+ getLogLevelError: 'GetLogLevelError',
13
+ } as const;
package/src/index.ts CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  // ✅ 1) SDK 초기화 / 설정 (TurboModule 래퍼)
4
4
  export { AdWhaleMediationAds } from './AdWhaleMediationAds';
5
+ export type {
6
+ InitializeResult,
7
+ GdprConsentResult,
8
+ AdInspectorResult,
9
+ } from './AdWhaleMediationAds';
5
10
  // 사용 예:
6
11
  // AdWhaleMediationAds.initialize()
7
12
  // AdWhaleMediationAds.setLoggerEnabled(true)
@@ -11,11 +16,20 @@ export { AdWhaleMediationAds } from './AdWhaleMediationAds';
11
16
  // AdWhaleMediationAds.resetGdprConsentStatus()
12
17
  // AdWhaleMediationAds.setGdpr(true)
13
18
 
19
+ // Flutter 브릿지 상수와 동일 문자열 유지 (유지보수 시 Flutter 저장소와 대조)
20
+ export {
21
+ AdWhaleMethodCallConst,
22
+ type AdWhaleMethodCallConstKey,
23
+ } from './constants/AdWhaleMethodCallConst';
24
+ export { AdWhaleMethodArgConst } from './constants/AdWhaleMethodArgConst';
25
+ export { AdWhaleMethodResultConst } from './constants/AdWhaleMethodResultConst';
14
26
 
15
27
  // ✅ 2) 배너 광고 View 컴포넌트
16
28
  export {
17
29
  AdWhaleAdView,
18
30
  AdWhaleAdSize,
31
+ ADWHALE_BANNER_IOS_UNSUPPORTED_STATUS_CODE,
32
+ isAdWhaleBannerAdSizeSupportedOnIos,
19
33
  } from './AdWhaleAdView';
20
34
  export type {
21
35
  AdWhaleBannerError,
@@ -54,6 +68,25 @@ export type {
54
68
  } from './AdWhaleAppOpenAd';
55
69
 
56
70
 
71
+ // ✅ 5.1) 종료 팝업 광고 API (Android)
72
+ export { AdWhaleExitPopupAd } from './AdWhaleExitPopupAd';
73
+ export type {
74
+ AdWhaleExitPopupAdClosedEvent,
75
+ AdWhaleExitPopupAdErrorEvent,
76
+ AdWhaleExitPopupAdEvents,
77
+ AdWhaleExitPopupGcoder,
78
+ } from './AdWhaleExitPopupAd';
79
+
80
+ // ✅ 5.2) 앱 전환 팝업 광고 API (Android)
81
+ export { AdWhaleTransitionPopupAd } from './AdWhaleTransitionPopupAd';
82
+ export type {
83
+ AdWhaleTransitionPopupAdClosedEvent,
84
+ AdWhaleTransitionPopupAdErrorEvent,
85
+ AdWhaleTransitionPopupAdEvents,
86
+ AdWhaleTransitionPopupGcoder,
87
+ } from './AdWhaleTransitionPopupAd';
88
+
89
+
57
90
  // ✅ 6) 네이티브 커스텀 뷰 (네이티브 템플릿/커스텀용)
58
91
  export {
59
92
  AdWhaleNativeCustomView,