react-native-webview-bootpay 13.8.41 → 13.13.4-4.alpha.1

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 (101) hide show
  1. package/README.md +53 -69
  2. package/android/build.gradle +1 -11
  3. package/android/gradle.properties +5 -47
  4. package/android/src/main/AndroidManifest.xml +9 -5
  5. package/android/src/main/AndroidManifestNew.xml +97 -0
  6. package/android/src/main/java/kr/co/bootpay/webview/BPCWebChromeClient.java +57 -11
  7. package/android/src/main/java/kr/co/bootpay/webview/BPCWebView.java +101 -68
  8. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewClient.java +70 -56
  9. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManagerImpl.kt +119 -65
  10. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewMessagingModule.kt +9 -0
  11. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewModuleImpl.java +1 -1
  12. package/android/src/main/java/kr/co/bootpay/webview/BootpayUrlHelper.java +91 -75
  13. package/android/src/newarch/{com/reactnativecommunity → kr/co/bootpay}/webview/BPCWebViewManager.java +118 -109
  14. package/android/src/newarch/{com/reactnativecommunity → kr/co/bootpay}/webview/BPCWebViewModule.java +1 -1
  15. package/android/src/{main/java → oldarch}/kr/co/bootpay/webview/BPCWebViewManager.java +63 -58
  16. package/android/src/{main/java → oldarch}/kr/co/bootpay/webview/BPCWebViewModule.java +1 -1
  17. package/apple/BPCWebView.mm +21 -12
  18. package/apple/BPCWebViewImpl.h +10 -0
  19. package/apple/BPCWebViewImpl.m +267 -205
  20. package/apple/BPCWebViewManager.mm +5 -24
  21. package/apple/BPCWebViewModule.h +23 -0
  22. package/apple/BPCWebViewModule.mm +34 -0
  23. package/apple/RCTConvert+WKDataDetectorTypes.h +11 -0
  24. package/apple/RCTConvert+WKDataDetectorTypes.m +27 -0
  25. package/index.d.ts +54 -48
  26. package/ios/RNCWebView.xcodeproj/project.pbxproj +24 -24
  27. package/ios/RNCWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  28. package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcuserdata/taesupyoon.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  29. package/ios/RNCWebView.xcodeproj/xcuserdata/taesupyoon.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  30. package/lib/BPCWebViewNativeComponent.d.ts +24 -25
  31. package/lib/BPCWebViewNativeComponent.js +1 -1
  32. package/lib/{NativeBPCWebView.d.ts → NativeBPCWebViewModule.d.ts} +2 -5
  33. package/lib/{NativeBPCWebView.js → NativeBPCWebViewModule.js} +1 -1
  34. package/lib/WebView.android.d.ts +0 -1
  35. package/lib/WebView.android.js +1 -1
  36. package/lib/WebView.d.ts +0 -1
  37. package/lib/WebView.ios.d.ts +0 -1
  38. package/lib/WebView.ios.js +1 -1
  39. package/lib/WebView.js +1 -1
  40. package/lib/WebView.macos.d.ts +0 -1
  41. package/lib/WebView.macos.js +1 -1
  42. package/lib/WebView.styles.d.ts +37 -11
  43. package/lib/WebView.styles.js +1 -1
  44. package/lib/WebView.windows.d.ts +0 -1
  45. package/lib/WebView.windows.js +1 -1
  46. package/lib/WebViewNativeComponent.macos.d.ts +1 -2
  47. package/lib/WebViewNativeComponent.windows.d.ts +1 -2
  48. package/lib/WebViewShared.d.ts +0 -1
  49. package/lib/WebViewShared.js +1 -1
  50. package/lib/WebViewTypes.d.ts +51 -3
  51. package/lib/WebViewTypes.js +1 -1
  52. package/lib/index.d.ts +0 -1
  53. package/macos/RNCWebView.xcodeproj/project.pbxproj +36 -36
  54. package/package.json +12 -11
  55. package/react-native-webview-bootpay.podspec +2 -2
  56. package/react-native.config.js +1 -5
  57. package/src/BPCWebViewNativeComponent.ts +143 -79
  58. package/src/NativeBPCWebViewModule.ts +13 -0
  59. package/src/WebView.android.tsx +295 -190
  60. package/src/WebView.ios.tsx +253 -186
  61. package/src/WebView.macos.tsx +220 -152
  62. package/src/WebView.styles.ts +9 -12
  63. package/src/WebView.tsx +14 -7
  64. package/src/WebView.windows.tsx +180 -126
  65. package/src/WebViewNativeComponent.macos.ts +4 -5
  66. package/src/WebViewNativeComponent.windows.ts +6 -8
  67. package/src/WebViewShared.tsx +139 -91
  68. package/src/WebViewTypes.ts +80 -35
  69. package/src/__tests__/WebViewShared-test.js +170 -55
  70. package/windows/ReactNativeWebView/ReactNativeWebView.vcxproj +8 -17
  71. package/windows/ReactNativeWebView/ReactPackageProvider.cpp +5 -1
  72. package/windows/ReactNativeWebView/ReactWebView.cpp +73 -6
  73. package/windows/ReactNativeWebView/ReactWebView.h +11 -1
  74. package/windows/ReactNativeWebView/ReactWebView.idl +12 -3
  75. package/windows/ReactNativeWebView/ReactWebView2.cpp +294 -129
  76. package/windows/ReactNativeWebView/ReactWebView2.h +42 -5
  77. package/windows/ReactNativeWebView/ReactWebView2Manager.cpp +60 -34
  78. package/windows/ReactNativeWebView/ReactWebView2Manager.h +4 -4
  79. package/windows/ReactNativeWebView/ReactWebViewHelpers.cpp +70 -0
  80. package/windows/ReactNativeWebView/ReactWebViewHelpers.h +16 -0
  81. package/windows/ReactNativeWebView/ReactWebViewManager.cpp +22 -3
  82. package/windows/ReactNativeWebView/ReactWebViewManager.h +6 -1
  83. package/windows/ReactNativeWebView/pch.h +11 -7
  84. package/windows/ReactNativeWebView.sln +14 -14
  85. package/ios/main.jsbundle +0 -457
  86. package/lib/BPCWebViewNativeComponent.d.ts.map +0 -1
  87. package/lib/NativeBPCWebView.d.ts.map +0 -1
  88. package/lib/WebView.android.d.ts.map +0 -1
  89. package/lib/WebView.d.ts.map +0 -1
  90. package/lib/WebView.ios.d.ts.map +0 -1
  91. package/lib/WebView.macos.d.ts.map +0 -1
  92. package/lib/WebView.styles.d.ts.map +0 -1
  93. package/lib/WebView.windows.d.ts.map +0 -1
  94. package/lib/WebViewNativeComponent.macos.d.ts.map +0 -1
  95. package/lib/WebViewNativeComponent.windows.d.ts.map +0 -1
  96. package/lib/WebViewShared.d.ts.map +0 -1
  97. package/lib/WebViewTypes.d.ts.map +0 -1
  98. package/lib/index.d.ts.map +0 -1
  99. package/src/NativeBPCWebView.ts +0 -14
  100. package/windows/ReactNativeWebView/packages.config +0 -5
  101. /package/android/src/main/java/kr/co/bootpay/webview/{BPCWebviewWrapper.kt → BPCWebViewWrapper.kt} +0 -0
package/README.md CHANGED
@@ -1,73 +1,56 @@
1
- # react-native-webview-bootpay 라이브러리
1
+ # React Native WebView
2
2
 
3
- react-native-webview를 부트페이가 Fork 떠서 만든 웹뷰입니다. 이미 결제모듈이 동작하는 웹사이트에 webview로 링크만 연결하여 사용하실 웹앱 flutter 개발자분께서는 해당 모듈의 웹뷰를 사용하시면 쉽게 결제 진행이 가능하십니다.
3
+ ![star this repo](https://img.shields.io/github/stars/react-native-webview/react-native-webview?style=flat-square)
4
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
5
+ [![NPM Version](https://img.shields.io/npm/v/react-native-webview.svg?style=flat-square)](https://www.npmjs.com/package/react-native-webview)
6
+ ![Npm Downloads](https://img.shields.io/npm/dm/react-native-webview.svg)
4
7
 
5
- ## 1-1. 설치하기
8
+ **React Native WebView** is a community-maintained WebView component for React Native. It is intended to be a replacement for the built-in WebView (which was [removed from core](https://github.com/react-native-community/discussions-and-proposals/pull/3)).
6
9
 
7
- ### npm으로 설치하기
8
- ```sh
9
- npm install react-native-webview-bootpay
10
- ```
10
+ ### Maintainers
11
11
 
12
- ### yarn으로 설치하기
13
- ```sh
14
- yarn add react-native-webview-bootpay
15
- ```
12
+ **Many thanks to these companies** for providing us with time to work on open source.
13
+ Please note that maintainers spend a lot of free time working on this too so feel free to sponsor them, **it really makes a difference.**
16
14
 
17
- 또는 package.json 파일의 dependencies에 추가 후 yarn install을 합니다.
15
+ - [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://www.brigad.co/en-gb/about-us)
16
+ [*Sponsor me* ❤️ !](https://github.com/sponsors/Titozzz)
18
17
 
19
- ```sh
20
- "dependencies": {
21
- "react-native-webview-bootpay": last_version
22
- }
23
18
 
24
- ```
19
+ Windows and macOS are managed by Microsoft, notably:
20
+ - [Alexander Sklar](https://github.com/asklar) ([Twitter @alexsklar](https://twitter.com/alexsklar)) from [React Native for Windows](https://microsoft.github.io/react-native-windows/)
21
+ - [Chiara Mooney](https://github.com/chiaramooney) from [React Native for Windows @ Microsoft](https://microsoft.github.io/react-native-windows/)
25
22
 
26
- ## 설정하기
27
-
28
- ### Android
29
- 따로 설정하실 것이 없습니다.
30
-
31
- ### iOS
32
- ** {your project root}/ios/Runner/Info.plist **
33
- ``CFBundleURLName``과 ``CFBundleURLSchemes``의 값은 개발사에서 고유값으로 지정해주셔야 합니다. 외부앱(카드사앱)에서 다시 기존 앱으로 앱투앱 호출시 필요한 스키마 값입니다.
34
- ```xml
35
- <?xml version="1.0" encoding="UTF-8"?>
36
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
37
- <plist version="1.0">
38
- <dict>
39
- ...
40
-
41
- <key>NSAppTransportSecurity</key>
42
- <dict>
43
- <key>NSAllowsArbitraryLoads</key>
44
- <true/>
45
- </dict>
46
- <key>CFBundleURLTypes</key>
47
- <array>
48
- <dict>
49
- <key>CFBundleTypeRole</key>
50
- <string>Editor</string>
51
- <key>CFBundleURLName</key>
52
- <string>kr.co.bootpaySample</string>
53
- <key>CFBundleURLSchemes</key>
54
- <array>
55
- <string>bootpaySample</string>
56
- </array>
57
- </dict>
58
- </array>
59
-
60
- ...
61
- </dict>
62
- </plist>
63
- ```
23
+ Shout-out to [Jamon Holmgren](https://github.com/jamonholmgren) from [Infinite Red](https://infinite.red) for helping a lot with the repo when he had more available time.
24
+
25
+ ### Disclaimer
26
+
27
+ Maintaining WebView is very complex because it is often used for many different use cases (rendering SVGs, PDFs, login flows, and much more). We also support many platforms and both architectures of react-native.
28
+
29
+ Since WebView was extracted from the React Native core, nearly 500 pull requests have been merged.
30
+ Considering that we have limited time, issues will mostly serve as a discussion place for the community, while **we will prioritize reviewing and merging pull requests.**
31
+
32
+ ### Platform compatibility
33
+
34
+ This project is compatible with **iOS**, **Android**, **Windows** and **macOS**.
35
+ This project supports both **the old** (paper) **and the new architecture** (fabric).
36
+ This project is compatible with [expo](https://docs.expo.dev/versions/latest/sdk/webview/).
64
37
 
65
- ## 사용예제
38
+ ### Getting Started
39
+
40
+ Read our [Getting Started Guide](docs/Getting-Started.md). If any step seems unclear, please create a pull request.
41
+
42
+ ### Versioning
43
+
44
+ This project follows [semantic versioning](https://semver.org/). We do not hesitate to release breaking changes but they will be in a major version.
45
+
46
+ ### Usage
47
+
48
+ Import the `WebView` component from `react-native-webview` and use it like so:
66
49
 
67
50
  ```tsx
68
51
  import React, { Component } from 'react';
69
52
  import { StyleSheet, Text, View } from 'react-native';
70
- import { WebView } from 'react-native-webview-bootpay';
53
+ import { WebView } from 'react-native-webview';
71
54
 
72
55
  // ...
73
56
  const MyWebComponent = () => {
@@ -75,24 +58,25 @@ const MyWebComponent = () => {
75
58
  }
76
59
  ```
77
60
 
78
- ## onMessage 사용시
79
- ```
80
- window.BootpayRNWebView.postMessage("test data"); //부트페이 웹뷰
81
- ```
82
- 사용 방법은 react-native-webview와 동일하며 javascript interface 이름이 ReactNativeWebView 가 아닌 BootpayRNWebView 값으로 보내주시면 되겠습니다.
83
-
84
- ## Documentation
61
+ For more, read the [API Reference](./docs/Reference.md) and [Guide](./docs/Guide.md). If you're interested in contributing, check out the [Contributing Guide](./docs/Contributing.md).
85
62
 
86
- [부트페이 개발매뉴얼](https://bootpay.gitbook.io/docs/)을 참조해주세요
63
+ ### Common issues
87
64
 
88
- ## 기술문의
65
+ - If you're getting `Invariant Violation: Native component for "RNCWebView does not exist"` it likely means you forgot to run `react-native link` or there was some error with the linking process
66
+ - If you encounter a build error during the task `:app:mergeDexRelease`, you need to enable multidex support in `android/app/build.gradle` as discussed in [this issue](https://github.com/react-native-webview/react-native-webview/issues/1344#issuecomment-650544648)
89
67
 
90
- [채팅](https://bootpay.channel.io/)으로 문의
68
+ #### Contributing
91
69
 
92
- ## License
70
+ Contributions are welcome, see [Contributing.md](https://github.com/react-native-webview/react-native-webview/blob/master/docs/Contributing.md)
93
71
 
94
- [MIT License](https://opensource.org/licenses/MIT).
72
+ ### License
95
73
 
74
+ MIT
96
75
 
76
+ ### Translations
97
77
 
78
+ This readme is available in:
98
79
 
80
+ - [Brazilian portuguese](docs/README.portuguese.md)
81
+ - [French](docs/README.french.md)
82
+ - [Italian](docs/README.italian.md)
@@ -2,7 +2,7 @@ import java.nio.file.Paths
2
2
 
3
3
  buildscript {
4
4
  ext.safeExtGet = {prop ->
5
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : project.properties['ReactNativeWebView_' + prop]
5
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : project.properties['ReactNativeWebViewBootpay_' + prop]
6
6
  }
7
7
  repositories {
8
8
  google()
@@ -108,13 +108,3 @@ dependencies {
108
108
  implementation "org.jetbrains.kotlin:kotlin-stdlib:${safeExtGet('kotlinVersion')}"
109
109
  implementation "androidx.webkit:webkit:${safeExtGet('webkitVersion')}"
110
110
  }
111
-
112
- // if (isNewArchitectureEnabled()) {
113
- // react {
114
- // jsRootDir = file("../src/")
115
- // libraryName = "BPCWebView"
116
- // codegenJavaPackageName = "kr.co.bootpay.webview"
117
- // codegenDir = new File(codegenPath)
118
- // reactNativeDir = new File(reactNativePath)
119
- // }
120
- // }
@@ -1,47 +1,5 @@
1
- ReactNativeWebView_kotlinVersion=1.6.0
2
- ReactNativeWebView_webkitVersion=1.4.0
3
- ReactNativeWebView_compileSdkVersion=31
4
- ReactNativeWebView_targetSdkVersion=31
5
- ReactNativeWebView_minSdkVersion=21
6
-
7
- # Project-wide Gradle settings.
8
-
9
- # IDE (e.g. Android Studio) users:
10
- # Gradle settings configured through the IDE *will override*
11
- # any settings specified in this file.
12
-
13
- # For more details on how to configure your build environment visit
14
- # http://www.gradle.org/docs/current/userguide/build_environment.html
15
-
16
- # Specifies the JVM arguments used for the daemon process.
17
- # The setting is particularly useful for tweaking memory settings.
18
- # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
19
- org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
20
-
21
- # When configured, Gradle will run in incubating parallel mode.
22
- # This option should only be used with decoupled projects. More details, visit
23
- # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
24
- # org.gradle.parallel=true
25
-
26
- # AndroidX package structure to make it clearer which packages are bundled with the
27
- # Android operating system, and which are packaged with your app's APK
28
- # https://developer.android.com/topic/libraries/support-library/androidx-rn
29
- android.useAndroidX=true
30
- # Automatically convert third-party libraries to use AndroidX
31
- android.enableJetifier=true
32
-
33
- # Use this property to specify which architecture you want to build.
34
- # You can also override it from the CLI using
35
- # ./gradlew <task> -PreactNativeArchitectures=x86_64
36
- reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
37
-
38
- # Use this property to enable support to the new architecture.
39
- # This will allow you to use TurboModules and the Fabric render in
40
- # your application. You should enable this flag either if you want
41
- # to write custom TurboModules/Fabric components OR use libraries that
42
- # are providing them.
43
- newArchEnabled=false
44
-
45
- # Use this property to enable or disable the Hermes JS engine.
46
- # If set to false, you will be using JSC instead.
47
- hermesEnabled=true
1
+ ReactNativeWebViewBootpay_kotlinVersion=1.6.0
2
+ ReactNativeWebViewBootpay_webkitVersion=1.4.0
3
+ ReactNativeWebViewBootpay_compileSdkVersion=31
4
+ ReactNativeWebViewBootpay_targetSdkVersion=31
5
+ ReactNativeWebViewBootpay_minSdkVersion=21
@@ -26,7 +26,7 @@
26
26
  <!-- 이지페이 [현대, 하나, 국민, 롯데, 삼성, BC(페이북) 신한, 하나, 농협, 씨티, 우리, 페이코] -->
27
27
  <!-- 티페이 [BC(페이북), 국민, 하나, 삼성, 신한, 현대, 롯데, 농협, 씨티, 우리] -->
28
28
  <!-- 페이레터 [BC(페이북), 국민, 하나, 삼성, 신한, 현대. 롯데, 농협, 씨티, ] -->
29
- <!-- 월컴페이먼츠 [카카오, 엘페이, 현대, BC(페이북), 국민, 삼성, 신한, 롯데, 농협, 하나, 씨티, 하나, 우리] -->
29
+ <!-- 월컴페이먼츠 [카카오스, 엘페이, 현대, BC(페이북), 국민, 삼성, 신한, 롯데, 농협, 하나, 씨티, 하나, 우리] -->
30
30
 
31
31
  <!-- 간편결제 -->
32
32
  <package android:name="com.nhnent.payapp" /> <!-- 페이코 -->
@@ -47,8 +47,7 @@
47
47
  <package android:name="com.kbcard.cxh.appcard" /> <!-- 국민카드 -->
48
48
  <package android:name="com.kbstar.liivbank" /> <!-- 국민 리브 -->
49
49
  <package android:name="com.kbstar.reboot" /> <!-- 국민 new 리브 -->
50
- <package android:name="com.kbstar.kbbank" /> <!-- KB 스타 뱅킹 -->
51
-
50
+ <package android:name="com.kbstar.kbbank" /> <!-- KB 스타뱅킹 -->
52
51
 
53
52
  <package android:name="com.samsung.android.spay" /> <!-- 삼성페이 -->
54
53
  <package android:name="com.samsung.android.spaylite" /> <!-- 삼성페이 미니 -->
@@ -58,6 +57,7 @@
58
57
  <package android:name="com.lcacApp" /> <!-- 롯데카드 -->
59
58
  <package android:name="kr.co.samsungcard.mpocket" /> <!-- 삼성카드 -->
60
59
  <package android:name="com.shcard.smartpay" /> <!-- 신한카드-->
60
+ <package android:name="com.shinhan.smartcaremgr" /> <!-- 신한 쏠-->
61
61
  <package android:name="com.shinhancard.smartshinhan" /> <!-- 신한카드 (ARS/일반결제/Smart결제) -->
62
62
  <package android:name="com.hyundaicard.appcard" /> <!-- 현대카드 -->
63
63
  <package android:name="nh.smart.nhallonepay" /> <!-- 농협카드 -->
@@ -65,6 +65,8 @@
65
65
  <package android:name="com.wooricard.smartapp" /> <!-- 우리 WON 카드 -->
66
66
  <package android:name="com.wooribank.smart.npib" /> <!-- 우리 WON 뱅킹 -->
67
67
  <package android:name="kr.co.citibank.citimobile" /> <!-- 씨티카드 -->
68
+ <package android:name="com.mobiletoong.travelwallet" /> <!-- 트레블월렛 -->
69
+
68
70
 
69
71
 
70
72
  <!-- 계좌이체 -->
@@ -88,8 +90,10 @@
88
90
  <package android:name="com.kt.ktauth" /> <!-- KT 본인인증 -->
89
91
  <package android:name="kr.danal.app.damoum" /> <!-- 다모음 -->
90
92
  <package android:name="uplus.membership" /> <!-- U+ 멤버스 -->
93
+ <package android:name="com.sktelecom.tauth" /> <!--PASS-->
94
+ <package android:name="com.lguplus.smartotp" /> <!--PASS-->
91
95
 
92
- <!-- 해외결제 -->
93
- <package android:name="com.eg.android.AlipayGphone" /> <!-- 알리페이 -->
96
+ <!--해외결제-->
97
+ <package android:name="com.eg.android.AlipayGphone" />
94
98
  </queries>
95
99
  </manifest>
@@ -0,0 +1,97 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ <application>
3
+ <provider
4
+ android:name=".BPCWebViewFileProvider"
5
+ android:authorities="${applicationId}.fileprovider"
6
+ android:exported="false"
7
+ android:grantUriPermissions="true">
8
+ <meta-data
9
+ android:name="android.support.FILE_PROVIDER_PATHS"
10
+ android:resource="@xml/file_provider_paths" />
11
+ </provider>
12
+ </application>
13
+
14
+ <!-- android 11 모든 앱 접근 권한 사용 (Google Play 가이드라인 참고 - 2021-02-19 기준 못찾았음) -->
15
+ <!-- <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />-->
16
+ <!-- android 11 Package Visibility 설정 (compileSdkVersion, targetSdkVersion 30 이상 설정시 필수) -->
17
+ <!-- 2021-02-19 -->
18
+ <queries>
19
+ <!-- 다날[신한, BC(페이북), 국민, 현대, 삼성, 하나, 롯데, 농협, 우리, 씨티, 페이코, 삼성페이, 카카오페이, 뱅크페이, SSG페이, 스마일페이, 엘페이] -->
20
+ <!-- KCP [페이코, 현대, BC(페이북), 롯데, 국민, 농협, 삼성, 신한, 우리, 하나, 씨티] -->
21
+ <!-- 이니시스 [카카오페이, 네이버페이, 신한, 하나, 현대, 삼성, 국민, BC(페이북), 농협, 롯데, 씨티, 페이코, 엘페이, SSG페이, 차이, 토스, 삼성페이] -->
22
+ <!-- 나이스페이 [신한, 국민, 삼성, BC(페이북), 롯데, 현대, 하나 농협, 씨티, 우리] -->
23
+ <!-- 토스페이먼츠 [현대, 신한, 페이북, 국민, 삼성, 롯데, 농협, 우리] -->
24
+ <!-- 이지페이 [현대, 하나, 국민, 롯데, 삼성, BC(페이북) 신한, 하나, 농협, 씨티, 우리, 페이코] -->
25
+ <!-- 티페이 [BC(페이북), 국민, 하나, 삼성, 신한, 현대, 롯데, 농협, 씨티, 우리] -->
26
+ <!-- 페이레터 [BC(페이북), 국민, 하나, 삼성, 신한, 현대. 롯데, 농협, 씨티, ] -->
27
+ <!-- 월컴페이먼츠 [카카오스, 엘페이, 현대, BC(페이북), 국민, 삼성, 신한, 롯데, 농협, 하나, 씨티, 하나, 우리] -->
28
+
29
+ <!-- 간편결제 -->
30
+ <package android:name="com.nhnent.payapp" /> <!-- 페이코 -->
31
+ <package android:name="com.lottemembers.android" /> <!-- LPAY -->
32
+ <package android:name="com.ssg.serviceapp.android.egiftcertificate" /> <!-- SSG 페이 -->
33
+ <package android:name="com.inicis.kpay" /> <!-- 이니시스 KPAY -->
34
+ <package android:name="com.tmoney.tmpay" /> <!-- 티머니페이 -->
35
+ <package android:name="viva.republica.toss" /> <!-- 토스페이 -->
36
+ <package android:name="com.kakao.talk" /> <!-- 카카오페이 -->
37
+ <package android:name="com.mysmilepay.app" /> <!-- 스마일 페이 -->
38
+ <package android:name="com.lotte.lpay" /> <!-- 엘페이 -->
39
+ <package android:name="finance.chai.app" /> <!-- 차이 -->
40
+ <package android:name="com.nhn.android.search" /> <!-- 네이버 -->
41
+
42
+ <!-- 앱카드 -->
43
+ <package android:name="kvp.jjy.MispAndroid320" /> <!-- BC 페이북 -->
44
+ <package android:name="com.kbcard.kbkookmincard" /> <!-- 국민카드 -->
45
+ <package android:name="com.kbcard.cxh.appcard" /> <!-- 국민카드 -->
46
+ <package android:name="com.kbstar.liivbank" /> <!-- 국민 리브 -->
47
+ <package android:name="com.kbstar.reboot" /> <!-- 국민 new 리브 -->
48
+ <package android:name="com.kbstar.kbbank" /> <!-- KB 스타뱅킹 -->
49
+
50
+ <package android:name="com.samsung.android.spay" /> <!-- 삼성페이 -->
51
+ <package android:name="com.samsung.android.spaylite" /> <!-- 삼성페이 미니 -->
52
+ <package android:name="com.lge.lgpay" /> <!-- 엘지페이 -->
53
+ <package android:name="com.hanaskcard.paycla" /> <!-- 하나카드 -->
54
+ <package android:name="kr.co.hanamembers.hmscustomer" /> <!-- 하나카드(멤버스결제) -->
55
+ <package android:name="com.lcacApp" /> <!-- 롯데카드 -->
56
+ <package android:name="kr.co.samsungcard.mpocket" /> <!-- 삼성카드 -->
57
+ <package android:name="com.shcard.smartpay" /> <!-- 신한카드-->
58
+ <package android:name="com.shinhan.smartcaremgr" /> <!-- 신한 쏠-->
59
+ <package android:name="com.shinhancard.smartshinhan" /> <!-- 신한카드 (ARS/일반결제/Smart결제) -->
60
+ <package android:name="com.hyundaicard.appcard" /> <!-- 현대카드 -->
61
+ <package android:name="nh.smart.nhallonepay" /> <!-- 농협카드 -->
62
+ <package android:name="com.wooricard.wpay" /> <!-- 우리카드 -->
63
+ <package android:name="com.wooricard.smartapp" /> <!-- 우리 WON 카드 -->
64
+ <package android:name="com.wooribank.smart.npib" /> <!-- 우리 WON 뱅킹 -->
65
+ <package android:name="kr.co.citibank.citimobile" /> <!-- 씨티카드 -->
66
+ <package android:name="com.mobiletoong.travelwallet" /> <!-- 트레블월렛 -->
67
+
68
+
69
+
70
+ <!-- 계좌이체 -->
71
+ <package android:name="com.kftc.bankpay.android" /> <!-- 뱅크페이 -->
72
+ <package android:name="com.kbankwith.smartbank" /> <!-- 케이뱅크 -->
73
+ <package android:name="com.knb.psb" /> <!-- BNK 경남은행 모바일뱅킹 -->
74
+ <package android:name="kr.co.kfcc.mobilebank" /> <!-- MG 새마을금고 -->
75
+ <package android:name="com.nh.cashcardapp" /> <!-- NH앱캐시 -->
76
+
77
+ <!-- 공인인증(신용카드) -->
78
+ <package android:name="com.hanaskcard.rocomo.potal" /> <!-- 하나카드 -->
79
+ <package android:name="com.lumensoft.touchenappfree" /> <!-- 현대카드 -->
80
+
81
+
82
+ <!-- 보안앱 -->
83
+ <package android:name="com.TouchEn.mVaccine.webs" /> <!-- 신한, 씨티 -->
84
+ <package android:name="kr.co.shiftworks.vguardweb" /> <!-- 삼성 -->
85
+ <package android:name="com.ahnlab.v3mobileplus" /> <!-- 하나, 농협, 우리, 국민 리브 -->
86
+
87
+ <!-- 휴대폰 결제 -->
88
+ <package android:name="com.kt.ktauth" /> <!-- KT 본인인증 -->
89
+ <package android:name="kr.danal.app.damoum" /> <!-- 다모음 -->
90
+ <package android:name="uplus.membership" /> <!-- U+ 멤버스 -->
91
+ <package android:name="com.sktelecom.tauth" /> <!--PASS-->
92
+ <package android:name="com.lguplus.smartotp" /> <!--PASS-->
93
+
94
+ <!--해외결제-->
95
+ <package android:name="com.eg.android.AlipayGphone" />
96
+ </queries>
97
+ </manifest>
@@ -24,8 +24,7 @@ import android.webkit.WebChromeClient;
24
24
  import android.webkit.WebView;
25
25
  import android.webkit.WebViewClient;
26
26
  import android.widget.FrameLayout;
27
-
28
- import android.app.AlertDialog;
27
+
29
28
  import android.content.Intent;
30
29
  import android.annotation.SuppressLint;
31
30
  import android.net.http.SslError;
@@ -35,12 +34,14 @@ import androidx.core.content.ContextCompat;
35
34
 
36
35
  import com.facebook.react.bridge.Arguments;
37
36
  import com.facebook.react.bridge.LifecycleEventListener;
37
+ import com.facebook.react.bridge.ReactNoCrashSoftException;
38
38
  import com.facebook.react.bridge.WritableMap;
39
39
  import com.facebook.react.common.build.ReactBuildConfig;
40
40
  import com.facebook.react.modules.core.PermissionAwareActivity;
41
41
  import com.facebook.react.modules.core.PermissionListener;
42
42
  import com.facebook.react.uimanager.UIManagerHelper;
43
43
  import com.facebook.react.uimanager.ThemedReactContext;
44
+ import com.facebook.react.uimanager.UIManagerModule;
44
45
 
45
46
 
46
47
  import kr.co.bootpay.webview.events.TopLoadingProgressEvent;
@@ -49,6 +50,7 @@ import kr.co.bootpay.webview.events.TopOpenWindowEvent;
49
50
  import java.util.ArrayList;
50
51
  import java.util.Collections;
51
52
  import java.util.List;
53
+ import android.util.Log;
52
54
 
53
55
  import android.app.Dialog;
54
56
  import android.content.Context;
@@ -57,6 +59,7 @@ import android.widget.Toast;
57
59
 
58
60
  import org.json.JSONException;
59
61
  import org.json.JSONObject;
62
+ import android.content.DialogInterface;
60
63
 
61
64
  public class BPCWebChromeClient extends WebChromeClient implements LifecycleEventListener {
62
65
  protected static final FrameLayout.LayoutParams FULLSCREEN_LAYOUT_PARAMS = new FrameLayout.LayoutParams(
@@ -101,21 +104,27 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
101
104
  protected BPCWebView.ProgressChangedFilter progressChangedFilter = null;
102
105
  protected boolean mAllowsProtectedMedia = false;
103
106
 
104
- protected boolean mHasOnOpenWindowEvent = false;
107
+ protected boolean mHasOnOpenWindowEvent = false;
105
108
 
106
109
  public BPCWebChromeClient(BPCWebView webView) {
107
110
  this.mWebView = webView;
108
111
  }
112
+
109
113
 
114
+ boolean isPopupWebView = false;
110
115
  @Override
111
116
  public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
112
117
 
113
- final BPCWebView newWebView = new BPCWebView((ThemedReactContext) view.getContext());
118
+ ThemedReactContext reactContext = (ThemedReactContext) view.getContext();
119
+ final BPCWebView newWebView = new BPCWebView(reactContext);
114
120
 
115
121
  BPCWebChromeClient client = new BPCWebChromeClient(newWebView);
116
122
  client.setProgressChangedFilter(progressChangedFilter);
117
123
  newWebView.setWebChromeClient(client);
118
124
 
125
+ Log.d("BPCWebChromeClient", "onCreateWindow");
126
+ isPopupWebView = true;
127
+
119
128
  setWebSettingCopy(view, newWebView);
120
129
 
121
130
 
@@ -123,6 +132,7 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
123
132
  @Override
124
133
  public boolean shouldOverrideUrlLoading (WebView subview, String url) {
125
134
 
135
+ Log.d("bootpay url", url);
126
136
 
127
137
  // return true;
128
138
  if(BootpayUrlHelper.shouldOverrideUrlLoading(view, url)) {
@@ -157,6 +167,22 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
157
167
  final WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
158
168
  transport.setWebView(newWebView);
159
169
  resultMsg.sendToTarget();
170
+
171
+ // 🔹 팝업을 위한 FrameLayout을 React Native UI 트리에 추가
172
+ // Activity activity = reactContext.getCurrentActivity();
173
+ // if (activity != null) {
174
+ // activity.runOnUiThread(() -> {
175
+ // FrameLayout popupContainer = new FrameLayout(activity);
176
+ // popupContainer.setLayoutParams(new FrameLayout.LayoutParams(
177
+ // ViewGroup.LayoutParams.MATCH_PARENT,
178
+ // ViewGroup.LayoutParams.MATCH_PARENT
179
+ // ));
180
+ // popupContainer.addView(newWebView);
181
+ // ((ViewGroup) activity.findViewById(android.R.id.content)).addView(popupContainer);
182
+ // });
183
+ // } else {
184
+ // Log.e("BPCWebChromeClient", "Activity is null, cannot add popup WebView.");
185
+ // }
160
186
 
161
187
 
162
188
  return true;
@@ -167,6 +193,10 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
167
193
  public void onCloseWindow(WebView window) {
168
194
  super.onCloseWindow(window);
169
195
  ((BPCWebView) window).dissmissDialog();
196
+
197
+ Log.d("BPCWebChromeClient", "onCloseWindow");
198
+
199
+ isPopupWebView = false;
170
200
  // if(mainView != null) {
171
201
  // mainView.removeView(window);
172
202
  // }
@@ -174,9 +204,11 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
174
204
  }
175
205
 
176
206
 
207
+
208
+
177
209
  void setWebSettingCopy(WebView view, WebView newWebView) {
178
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
179
- newWebView.getSettings().setMediaPlaybackRequiresUserGesture( view.getSettings().getMediaPlaybackRequiresUserGesture() );
210
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
211
+ newWebView.getSettings().setMediaPlaybackRequiresUserGesture( view.getSettings().getMediaPlaybackRequiresUserGesture() );
180
212
  }
181
213
 
182
214
  newWebView.getSettings().setBuiltInZoomControls(view.getSettings().getBuiltInZoomControls());
@@ -214,17 +246,17 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
214
246
  newWebView.getSettings().setCacheMode(view.getSettings().getCacheMode());
215
247
 
216
248
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
217
- newWebView.getSettings().setMixedContentMode(view.getSettings().getMixedContentMode());
249
+ newWebView.getSettings().setMixedContentMode(view.getSettings().getMixedContentMode());
218
250
  }
219
251
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
220
- newWebView.getSettings().setSafeBrowsingEnabled(view.getSettings().getSafeBrowsingEnabled());
252
+ newWebView.getSettings().setSafeBrowsingEnabled(view.getSettings().getSafeBrowsingEnabled());
221
253
  }
222
254
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
223
- newWebView.getSettings().setForceDark(view.getSettings().getForceDark());
255
+ newWebView.getSettings().setForceDark(view.getSettings().getForceDark());
224
256
  }
225
257
 
226
258
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
227
- newWebView.getSettings().setDisabledActionModeMenuItems(view.getSettings().getDisabledActionModeMenuItems());
259
+ newWebView.getSettings().setDisabledActionModeMenuItems(view.getSettings().getDisabledActionModeMenuItems());
228
260
  }
229
261
  }
230
262
 
@@ -244,6 +276,19 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
244
276
  if (progressChangedFilter.isWaitingForCommandLoadUrl()) {
245
277
  return;
246
278
  }
279
+
280
+ if(isPopupWebView) {
281
+ return;
282
+ }
283
+
284
+ Log.e("BPCWebChromeClient", "" + isPopupWebView);
285
+ // if(this.mWebView == null || this.mWebView.getThemedReactContext() == null) return;
286
+ // UIManagerModule uiManager = (this.mWebView.getThemedReactContext()).getNativeModule(UIManagerModule.class);
287
+ // if (uiManager == null) {
288
+ // Log.e("BPCWebChromeClient", "UIManagerModule is null, skipping event dispatch.");
289
+ // return;
290
+ // }
291
+
247
292
  int reactTag = BPCWebViewWrapper.getReactTagFromWebView(webView);
248
293
  WritableMap event = Arguments.createMap();
249
294
  event.putDouble("target", reactTag);
@@ -253,7 +298,8 @@ public class BPCWebChromeClient extends WebChromeClient implements LifecycleEven
253
298
  event.putBoolean("canGoForward", webView.canGoForward());
254
299
  event.putDouble("progress", (float) newProgress / 100);
255
300
 
256
- UIManagerHelper.getEventDispatcherForReactTag(this.mWebView.getThemedReactContext(), reactTag).dispatchEvent(new TopLoadingProgressEvent(reactTag, event));
301
+ UIManagerHelper.getEventDispatcherForReactTag(this.mWebView.getThemedReactContext(), reactTag).dispatchEvent(new TopLoadingProgressEvent(reactTag, event));
302
+
257
303
  }
258
304
 
259
305
  @Override