react-native-webview-bootpay 11.18.1 → 11.18.11

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 (202) hide show
  1. package/android/.DS_Store +0 -0
  2. package/android/.gradle/6.8/executionHistory/executionHistory.bin +0 -0
  3. package/android/.gradle/6.8/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
  5. package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock +0 -0
  7. package/android/.gradle/7.0-rc-1/dependencies-accessors/gc.properties +0 -0
  8. package/android/.gradle/7.0-rc-1/executionHistory/executionHistory.lock +0 -0
  9. package/android/.gradle/7.0-rc-1/fileChanges/last-build.bin +0 -0
  10. package/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/7.0-rc-1/gc.properties +0 -0
  12. package/android/.gradle/7.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  13. package/android/.gradle/7.1.1/executionHistory/executionHistory.lock +0 -0
  14. package/android/.gradle/7.1.1/fileHashes/fileHashes.lock +0 -0
  15. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  16. package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
  17. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  18. package/android/.gradle/checksums/checksums.lock +0 -0
  19. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  20. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  21. package/android/.idea/jarRepositories.xml +8 -3
  22. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +13 -0
  23. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -4
  24. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -3
  25. package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -3
  26. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -4
  27. package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +16 -0
  28. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -3
  29. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -3
  30. package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -3
  31. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -4
  32. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -4
  33. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -3
  34. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -3
  35. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -3
  36. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -3
  37. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -3
  38. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -3
  39. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -3
  40. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -3
  41. package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -3
  42. package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -4
  43. package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -3
  44. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -4
  45. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -3
  46. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -3
  47. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +13 -0
  48. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -3
  49. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +13 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
  51. package/android/.idea/libraries/{Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml → Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml} +7 -7
  52. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
  53. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
  56. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
  57. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
  58. package/android/.idea/libraries/{Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml → Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml} +4 -4
  59. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_62_2_aar.xml +18 -0
  60. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_8_0_aar.xml +15 -0
  61. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_8_0.xml +13 -0
  62. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_8_0_aar.xml +15 -0
  63. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +13 -0
  64. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +13 -0
  65. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +13 -0
  66. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
  67. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_50.xml +13 -0
  68. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_50.xml +13 -0
  69. package/android/.idea/modules/android.iml +33 -42
  70. package/android/.project +34 -0
  71. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  72. package/android/build/.transforms/{cef19407ab645b1b4c01cb89efaec997 → 4e87ba7f47baac309fba5367e008cf44}/results.bin +0 -0
  73. package/android/build/.transforms/4e87ba7f47baac309fba5367e008cf44/transformed/classes/classes.dex +0 -0
  74. package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789/classes/classes.dex +0 -0
  75. package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789.bin +1 -0
  76. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +79 -0
  77. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  78. package/android/build/intermediates/compiled_local_resources/debug/out/xml_file_provider_paths.xml.flat +0 -0
  79. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
  80. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
  81. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
  82. package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +2 -2
  83. package/android/build/intermediates/incremental/packageDebugResources/merger.xml +1 -1
  84. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient$1.class +0 -0
  85. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient.class +0 -0
  86. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$1.class +0 -0
  87. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.class +0 -0
  88. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.class +0 -0
  89. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView.class +0 -0
  90. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewClient.class +0 -0
  91. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$1.class +0 -0
  92. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$2.class +0 -0
  93. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$3.class +0 -0
  94. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$4.class +0 -0
  95. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager.class +0 -0
  96. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule.class +0 -0
  97. package/android/build/intermediates/library_java_res/debug/res.jar +0 -0
  98. package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +102 -0
  99. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +192 -24
  100. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +79 -0
  101. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/build-history.bin +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab_i +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/last-build.bin +0 -0
  125. package/android/build/outputs/logs/manifest-merger-debug-report.txt +205 -27
  126. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  127. package/android/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt +29 -0
  128. package/android/build/tmp/kotlin-classes/debug/META-INF/{react-native-webview_debug.kotlin_module → react-native-webview-bootpay_debug.kotlin_module} +0 -0
  129. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/BPCWebViewPackage.class +0 -0
  130. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.class +0 -0
  131. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.class +0 -0
  132. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.class +0 -0
  133. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.class +0 -0
  134. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.class +0 -0
  135. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.class +0 -0
  136. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.class +0 -0
  137. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.class +0 -0
  138. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.class +0 -0
  139. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.class +0 -0
  140. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.class +0 -0
  141. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent.class +0 -0
  142. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.class +0 -0
  143. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.class +0 -0
  144. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.class +0 -0
  145. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.class +0 -0
  146. package/android/build.gradle +5 -5
  147. package/android/gradle.properties +6 -6
  148. package/android/local.properties +1 -1
  149. package/android/src/.DS_Store +0 -0
  150. package/android/src/main/.DS_Store +0 -0
  151. package/android/src/main/AndroidManifest.xml +75 -0
  152. package/android/src/main/java/.DS_Store +0 -0
  153. package/android/src/main/java/kr/.DS_Store +0 -0
  154. package/android/src/main/java/kr/co/.DS_Store +0 -0
  155. package/android/src/main/java/kr/co/bootpay/.DS_Store +0 -0
  156. package/android/src/main/java/kr/co/bootpay/webview/BPCWebChromeClient.java +120 -2
  157. package/android/src/main/java/kr/co/bootpay/webview/BPCWebView.java +11 -26
  158. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewClient.java +119 -134
  159. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManager.java +49 -95
  160. package/apple/BPCWebView.m +64 -86
  161. package/ios/.DS_Store +0 -0
  162. package/ios/RNCWebView.xcodeproj/project.pbxproj +18 -18
  163. package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcuserdata/bootpay.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  164. package/ios/RNCWebView.xcodeproj/xcuserdata/bootpay.xcuserdatad/xcschemes/xcschememanagement.plist +0 -8
  165. package/lib/WebViewNativeComponent.windows.js +2 -2
  166. package/package.json +6 -7
  167. package/react-native.config.js +1 -1
  168. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -13
  169. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +0 -16
  170. package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +0 -16
  171. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -13
  172. package/android/.idea/libraries/Gradle__androidx_webkit_webkit_1_4_0_aar.xml +0 -16
  173. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +0 -13
  174. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +0 -15
  175. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +0 -18
  176. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +0 -18
  177. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +0 -18
  178. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +0 -15
  179. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +0 -15
  180. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +0 -15
  181. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +0 -15
  182. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +0 -15
  183. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +0 -15
  184. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +0 -15
  185. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +0 -15
  186. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_4_aar.xml +0 -14
  187. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +0 -13
  188. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +0 -13
  189. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +0 -15
  190. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +0 -13
  191. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +0 -13
  192. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +0 -13
  193. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +0 -13
  194. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +0 -13
  195. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +0 -13
  196. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +0 -13
  197. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +0 -13
  198. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +0 -13
  199. package/android/build/.transforms/cef19407ab645b1b4c01cb89efaec997/transformed/classes/classes.dex +0 -0
  200. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BasicAuthCredential.class +0 -0
  201. package/android/src/main/java/kr/co/bootpay/webview/BasicAuthCredential.java +0 -12
  202. package/ios/RNCWebView.xcodeproj/xcshareddata/xcschemes/RNCWebView.xcscheme +0 -68
@@ -1,5 +1,6 @@
1
1
  package kr.co.bootpay.webview;
2
2
 
3
+ import android.annotation.SuppressLint;
3
4
  import android.annotation.TargetApi;
4
5
  import android.app.Activity;
5
6
  import android.app.DownloadManager;
@@ -9,10 +10,13 @@ import android.content.pm.PackageManager;
9
10
  import android.graphics.Bitmap;
10
11
  import android.graphics.Color;
11
12
  import android.Manifest;
13
+ import android.net.http.SslError;
12
14
  import android.net.Uri;
13
15
  import android.os.Build;
14
16
  import android.os.Environment;
15
17
  import android.os.Message;
18
+ import android.os.SystemClock;
19
+ import android.text.TextUtils;
16
20
  import android.util.Log;
17
21
  import android.view.Gravity;
18
22
  import android.view.View;
@@ -23,36 +27,51 @@ import android.webkit.ConsoleMessage;
23
27
  import android.webkit.CookieManager;
24
28
  import android.webkit.DownloadListener;
25
29
  import android.webkit.GeolocationPermissions;
30
+ import android.webkit.JavascriptInterface;
31
+ import android.webkit.RenderProcessGoneDetail;
32
+ import android.webkit.SslErrorHandler;
26
33
  import android.webkit.PermissionRequest;
27
34
  import android.webkit.URLUtil;
28
35
  import android.webkit.ValueCallback;
29
36
  import android.webkit.WebChromeClient;
37
+ import android.webkit.WebResourceRequest;
38
+ import android.webkit.WebResourceResponse;
30
39
  import android.webkit.WebSettings;
31
40
  import android.webkit.WebView;
41
+ import android.webkit.WebViewClient;
32
42
  import android.widget.FrameLayout;
33
43
 
34
44
  import androidx.annotation.Nullable;
35
45
  import androidx.annotation.RequiresApi;
36
46
  import androidx.core.content.ContextCompat;
37
- import androidx.webkit.WebSettingsCompat;
38
- import androidx.webkit.WebViewFeature;
47
+ import androidx.core.util.Pair;
39
48
 
49
+ import com.facebook.common.logging.FLog;
40
50
  import com.facebook.react.modules.core.PermissionAwareActivity;
41
51
  import com.facebook.react.modules.core.PermissionListener;
52
+ import com.facebook.react.views.scroll.ScrollEvent;
42
53
  import com.facebook.react.views.scroll.ScrollEventType;
54
+ import com.facebook.react.views.scroll.OnScrollDispatchHelper;
43
55
  import com.facebook.react.bridge.Arguments;
56
+ import com.facebook.react.bridge.CatalystInstance;
44
57
  import com.facebook.react.bridge.LifecycleEventListener;
45
58
  import com.facebook.react.bridge.ReactContext;
46
59
  import com.facebook.react.bridge.ReadableArray;
47
60
  import com.facebook.react.bridge.ReadableMap;
48
61
  import com.facebook.react.bridge.ReadableMapKeySetIterator;
49
62
  import com.facebook.react.bridge.WritableMap;
63
+ import com.facebook.react.bridge.WritableNativeArray;
64
+ import com.facebook.react.bridge.WritableNativeMap;
50
65
  import com.facebook.react.common.MapBuilder;
51
66
  import com.facebook.react.common.build.ReactBuildConfig;
52
67
  import com.facebook.react.module.annotations.ReactModule;
53
68
  import com.facebook.react.uimanager.SimpleViewManager;
54
69
  import com.facebook.react.uimanager.ThemedReactContext;
70
+ import com.facebook.react.uimanager.UIManagerModule;
55
71
  import com.facebook.react.uimanager.annotations.ReactProp;
72
+ import com.facebook.react.uimanager.events.ContentSizeChangeEvent;
73
+ import com.facebook.react.uimanager.events.Event;
74
+ import com.facebook.react.uimanager.events.EventDispatcher;
56
75
  import kr.co.bootpay.webview.BPCWebViewModule.ShouldOverrideUrlLoadingLock.ShouldOverrideCallbackState;
57
76
  import kr.co.bootpay.webview.events.TopLoadingErrorEvent;
58
77
  import kr.co.bootpay.webview.events.TopHttpErrorEvent;
@@ -67,15 +86,16 @@ import org.json.JSONException;
67
86
  import org.json.JSONObject;
68
87
 
69
88
  import java.io.UnsupportedEncodingException;
70
- import java.lang.IllegalArgumentException;
71
89
  import java.net.MalformedURLException;
72
90
  import java.net.URL;
91
+ import java.net.URLEncoder;
73
92
  import java.util.ArrayList;
74
93
  import java.util.Collections;
75
94
  import java.util.HashMap;
76
95
  import java.util.List;
77
96
  import java.util.Locale;
78
97
  import java.util.Map;
98
+ import java.util.concurrent.atomic.AtomicReference;
79
99
 
80
100
  /**
81
101
  * Manages instances of {@link WebView}
@@ -103,7 +123,6 @@ import java.util.Map;
103
123
  */
104
124
  @ReactModule(name = BPCWebViewManager.REACT_CLASS)
105
125
  public class BPCWebViewManager extends SimpleViewManager<WebView> {
106
- private static final String TAG = "BPCWebViewManager";
107
126
 
108
127
  public static final int COMMAND_GO_BACK = 1;
109
128
  public static final int COMMAND_GO_FORWARD = 2;
@@ -122,12 +141,11 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
122
141
  protected static final String REACT_CLASS = "BPCWebView";
123
142
  protected static final String HTML_ENCODING = "UTF-8";
124
143
  protected static final String HTML_MIME_TYPE = "text/html";
125
- // protected static final String JAVASCRIPT_INTERFACE = "ReactNativeWebView";
144
+ // protected static final String JAVASCRIPT_INTERFACE = "ReactNativeWebView";
126
145
  protected static final String HTTP_METHOD_POST = "POST";
127
146
  // Use `webView.loadUrl("about:blank")` to reliably reset the view
128
147
  // state and release page resources (including any running JavaScript).
129
148
  protected static final String BLANK_URL = "about:blank";
130
-
131
149
  protected WebViewConfig mWebViewConfig;
132
150
 
133
151
  protected BPCWebChromeClient mWebChromeClient = null;
@@ -191,13 +209,7 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
191
209
 
192
210
  BPCWebViewModule module = getModule(reactContext);
193
211
 
194
- DownloadManager.Request request;
195
- try {
196
- request = new DownloadManager.Request(Uri.parse(url));
197
- } catch (IllegalArgumentException e) {
198
- Log.w(TAG, "Unsupported URI, aborting download", e);
199
- return;
200
- }
212
+ DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
201
213
 
202
214
  String fileName = URLUtil.guessFileName(url, contentDisposition, mimetype);
203
215
  String downloadMessage = "Downloading " + fileName;
@@ -210,7 +222,8 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
210
222
  String cookie = CookieManager.getInstance().getCookie(baseUrl);
211
223
  request.addRequestHeader("Cookie", cookie);
212
224
  } catch (MalformedURLException e) {
213
- Log.w(TAG, "Error getting cookie for DownloadManager", e);
225
+ System.out.println("Error getting cookie for DownloadManager: " + e.toString());
226
+ e.printStackTrace();
214
227
  }
215
228
 
216
229
  //Finish setting up request
@@ -237,16 +250,6 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
237
250
  view.getSettings().setJavaScriptEnabled(enabled);
238
251
  }
239
252
 
240
- @ReactProp(name = "setBuiltInZoomControls")
241
- public void setBuiltInZoomControls(WebView view, boolean enabled) {
242
- view.getSettings().setBuiltInZoomControls(enabled);
243
- }
244
-
245
- @ReactProp(name = "setDisplayZoomControls")
246
- public void setDisplayZoomControls(WebView view, boolean enabled) {
247
- view.getSettings().setDisplayZoomControls(enabled);
248
- }
249
-
250
253
  @ReactProp(name = "setSupportMultipleWindows")
251
254
  public void setSupportMultipleWindows(WebView view, boolean enabled){
252
255
  view.getSettings().setSupportMultipleWindows(enabled);
@@ -338,11 +341,6 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
338
341
  view.setOverScrollMode(overScrollMode);
339
342
  }
340
343
 
341
- @ReactProp(name = "nestedScrollEnabled")
342
- public void setNestedScrollEnabled(WebView view, boolean enabled) {
343
- ((BPCWebView) view).setNestedScrollEnabled(enabled);
344
- }
345
-
346
344
  @ReactProp(name = "thirdPartyCookiesEnabled")
347
345
  public void setThirdPartyCookiesEnabled(WebView view, boolean enabled) {
348
346
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -538,19 +536,6 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
538
536
  view.loadUrl(BLANK_URL);
539
537
  }
540
538
 
541
- @ReactProp(name = "basicAuthCredential")
542
- public void setBasicAuthCredential(WebView view, @Nullable ReadableMap credential) {
543
- @Nullable BasicAuthCredential basicAuthCredential = null;
544
- if (credential != null) {
545
- if (credential.hasKey("username") && credential.hasKey("password")) {
546
- String username = credential.getString("username");
547
- String password = credential.getString("password");
548
- basicAuthCredential = new BasicAuthCredential(username, password);
549
- }
550
- }
551
- ((BPCWebView) view).setBasicAuthCredential(basicAuthCredential);
552
- }
553
-
554
539
  @ReactProp(name = "onContentSizeChange")
555
540
  public void setOnContentSizeChange(WebView view, boolean sendContentSizeChangeEvents) {
556
541
  ((BPCWebView) view).setSendContentSizeChangeEvents(sendContentSizeChangeEvents);
@@ -606,32 +591,6 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
606
591
  ((BPCWebView) view).setHasScrollEvent(hasScrollEvent);
607
592
  }
608
593
 
609
- @ReactProp(name = "forceDarkOn")
610
- public void setForceDarkOn(WebView view, boolean enabled) {
611
- // Only Android 10+ support dark mode
612
- if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
613
- // Switch WebView dark mode
614
- if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
615
- int forceDarkMode = enabled ? WebSettingsCompat.FORCE_DARK_ON : WebSettingsCompat.FORCE_DARK_OFF;
616
- WebSettingsCompat.setForceDark(view.getSettings(), forceDarkMode);
617
- }
618
-
619
- // Set how WebView content should be darkened.
620
- // PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING: checks for the "color-scheme" <meta> tag.
621
- // If present, it uses media queries. If absent, it applies user-agent (automatic)
622
- // More information about Force Dark Strategy can be found here:
623
- // https://developer.android.com/reference/androidx/webkit/WebSettingsCompat#setForceDarkStrategy(android.webkit.WebSettings)
624
- if (enabled && WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
625
- WebSettingsCompat.setForceDarkStrategy(view.getSettings(), WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING);
626
- }
627
- }
628
- }
629
-
630
- @ReactProp(name = "minimumFontSize")
631
- public void setMinimumFontSize(WebView view, int fontSize) {
632
- view.getSettings().setMinimumFontSize(fontSize);
633
- }
634
-
635
594
  @Override
636
595
  protected void addEventEmitters(ThemedReactContext reactContext, WebView view) {
637
596
  // Do not register default touch emitter and let WebView implementation handle touches
@@ -745,11 +704,8 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
745
704
  }
746
705
 
747
706
  protected void setupWebChromeClient(ReactContext reactContext, WebView webView) {
748
- Activity activity = reactContext.getCurrentActivity();
749
-
750
- if (mAllowsFullscreenVideo && activity != null) {
751
- int initialRequestedOrientation = activity.getRequestedOrientation();
752
-
707
+ if (mAllowsFullscreenVideo) {
708
+ int initialRequestedOrientation = reactContext.getCurrentActivity().getRequestedOrientation();
753
709
  mWebChromeClient = new BPCWebChromeClient(reactContext, webView) {
754
710
  @Override
755
711
  public Bitmap getDefaultVideoPoster() {
@@ -766,32 +722,31 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
766
722
  mVideoView = view;
767
723
  mCustomViewCallback = callback;
768
724
 
769
- activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
725
+ mReactContext.getCurrentActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
770
726
 
771
727
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
772
728
  mVideoView.setSystemUiVisibility(FULLSCREEN_SYSTEM_UI_VISIBILITY);
773
- activity.getWindow().setFlags(
774
- WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
775
- WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
776
- );
729
+ mReactContext.getCurrentActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
777
730
  }
778
731
 
779
732
  mVideoView.setBackgroundColor(Color.BLACK);
780
733
 
781
- // Since RN's Modals interfere with the View hierarchy
782
- // we will decide which View to hide if the hierarchy
783
- // does not match (i.e., the WebView is within a Modal)
784
- // NOTE: We could use `mWebView.getRootView()` instead of `getRootView()`
734
+ // since RN's Modals interfere with the View hierarchy
735
+ // we will decide which View to Hide if the hierarchy
736
+ // does not match (i.e., the webview is within a Modal)
737
+ // NOTE: We could use mWebView.getRootView() instead of getRootView()
785
738
  // but that breaks the Modal's styles and layout, so we need this to render
786
- // in the main View hierarchy regardless
739
+ // in the main View hierarchy regardless.
787
740
  ViewGroup rootView = getRootView();
788
741
  rootView.addView(mVideoView, FULLSCREEN_LAYOUT_PARAMS);
789
742
 
790
743
  // Different root views, we are in a Modal
791
- if (rootView.getRootView() != mWebView.getRootView()) {
744
+ if(rootView.getRootView() != mWebView.getRootView()){
792
745
  mWebView.getRootView().setVisibility(View.GONE);
793
- } else {
794
- // Same view hierarchy (no Modal), just hide the WebView then
746
+ }
747
+
748
+ // Same view hierarchy (no Modal), just hide the webview then
749
+ else{
795
750
  mWebView.setVisibility(View.GONE);
796
751
  }
797
752
 
@@ -804,18 +759,20 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
804
759
  return;
805
760
  }
806
761
 
807
- // Same logic as above
762
+ // same logic as above
808
763
  ViewGroup rootView = getRootView();
809
764
 
810
- if (rootView.getRootView() != mWebView.getRootView()) {
765
+ if(rootView.getRootView() != mWebView.getRootView()){
811
766
  mWebView.getRootView().setVisibility(View.VISIBLE);
812
- } else {
813
- // Same view hierarchy (no Modal)
767
+ }
768
+
769
+ // Same view hierarchy (no Modal)
770
+ else{
814
771
  mWebView.setVisibility(View.VISIBLE);
815
772
  }
816
773
 
817
774
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
818
- activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
775
+ mReactContext.getCurrentActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
819
776
  }
820
777
 
821
778
  rootView.removeView(mVideoView);
@@ -824,25 +781,22 @@ public class BPCWebViewManager extends SimpleViewManager<WebView> {
824
781
  mVideoView = null;
825
782
  mCustomViewCallback = null;
826
783
 
827
- activity.setRequestedOrientation(initialRequestedOrientation);
784
+ mReactContext.getCurrentActivity().setRequestedOrientation(initialRequestedOrientation);
828
785
 
829
786
  mReactContext.removeLifecycleEventListener(this);
830
787
  }
831
788
  };
832
-
833
789
  webView.setWebChromeClient(mWebChromeClient);
834
790
  } else {
835
791
  if (mWebChromeClient != null) {
836
792
  mWebChromeClient.onHideCustomView();
837
793
  }
838
-
839
794
  mWebChromeClient = new BPCWebChromeClient(reactContext, webView) {
840
795
  @Override
841
796
  public Bitmap getDefaultVideoPoster() {
842
797
  return Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888);
843
798
  }
844
799
  };
845
-
846
800
  webView.setWebChromeClient(mWebChromeClient);
847
801
  }
848
802
  }
@@ -18,8 +18,8 @@
18
18
  #import "objc/runtime.h"
19
19
 
20
20
  static NSTimer *keyboardTimer;
21
- static NSString *const HistoryShimName = @"ReactNativeHistoryShimBootpay";
22
- static NSString *const MessageHandlerName = @"BootpayRNWebView";
21
+ static NSString *const HistoryShimName = @"ReactNativeHistoryShim";
22
+ static NSString *const MessageHandlerName = @"ReactNativeWebView";
23
23
  static NSURLCredential* clientAuthenticationCredential;
24
24
  static NSDictionary* customCertificatesForHost;
25
25
 
@@ -807,7 +807,7 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
807
807
 
808
808
  if(subview == nil) return;
809
809
 
810
- NSString* name = [NSString stringWithFormat:@"%@_SwizzleHelperWK", subview.class.superclass];
810
+ NSString* name = [NSString stringWithFormat:@"%@_BPSwizzleHelperWK", subview.class.superclass];
811
811
  Class newClass = NSClassFromString(name);
812
812
 
813
813
  if(newClass == nil)
@@ -1118,113 +1118,91 @@ NSString *const CUSTOM_SELECTOR = @"_CUSTOM_SELECTOR_";
1118
1118
  - (void) webView:(WKWebView *)webView
1119
1119
  decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
1120
1120
  decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
1121
- {
1122
-
1123
- NSString *url = navigationAction.request.URL.absoluteString;
1124
-
1125
- if([self isItunesURL:url]) {
1126
- [self startAppToApp:[NSURL URLWithString:url]];
1121
+ {
1122
+ if([self isItunesURL:navigationAction.request.URL.absoluteString]) {
1123
+ [self startAppToApp:navigationAction.request.URL];
1127
1124
  decisionHandler(WKNavigationActionPolicyCancel);
1128
- } else if(![url hasPrefix:@"http"]) {
1129
- [self startAppToApp:[NSURL URLWithString:url]];
1125
+ } else if(![navigationAction.request.URL.scheme isEqualToString:@"http"] && ![navigationAction.request.URL.scheme isEqualToString:@"https"] && ![navigationAction.request.URL.absoluteString isEqualToString:@"about:blank"]) {
1126
+ [self startAppToApp:navigationAction.request.URL];
1130
1127
  decisionHandler(WKNavigationActionPolicyCancel);
1131
- } else {
1128
+ } else {
1132
1129
  [self navigationOriginRN:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler];
1133
1130
  }
1134
1131
  }
1135
1132
 
1136
1133
 
1137
- - (void) startAppToApp:(NSURL*) url {
1138
- UIApplication *application = [UIApplication sharedApplication];
1139
-
1140
- // if (@available(iOS 10.0, *)) {
1141
- // [application openURL:url options:@{} completionHandler:nil];
1142
- // } else {
1143
- // [application openURL:url];
1144
- // }
1145
-
1146
- if (@available(iOS 10.0, *)) {
1147
- [application openURL:url options:@{} completionHandler: ^(BOOL success) {
1148
- if(success == false) {
1149
- [self startItunesToInstall:url];
1150
- }
1151
- }];
1152
- } else {
1153
- [application openURL:url];
1154
- }
1134
+ - (BOOL) isItunesURL:(NSString*) url {
1135
+ NSString *itunesRegexp = @"\\/\\/itunes\\.apple\\.com\\/";
1136
+ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", itunesRegexp];
1137
+ return [predicate evaluateWithObject: url];
1155
1138
  }
1156
1139
 
1157
-
1158
- - (void) startItunesToInstall:(NSURL*) url {
1159
- NSString *sUrl = url.absoluteString;
1160
- NSString *itunesUrl = @"";
1161
-
1162
- if([sUrl hasPrefix: @"kfc-bankpay"]) {
1140
+ - (void) goInstallApp:(WKNavigationAction *)navigationAction {
1141
+ NSString * url = navigationAction.request.URL.absoluteString;
1142
+ NSString * itunesUrl = @"";
1143
+ if([url hasPrefix:@"kftc-bankpay"]) {
1163
1144
  itunesUrl = @"https://apps.apple.com/kr/app/%EB%B1%85%ED%81%AC%ED%8E%98%EC%9D%B4-%EA%B8%88%EC%9C%B5%EA%B8%B0%EA%B4%80-%EA%B3%B5%EB%8F%99-%EA%B3%84%EC%A2%8C%EC%9D%B4%EC%B2%B4-%EA%B2%B0%EC%A0%9C-%EC%A0%9C%EB%A1%9C%ED%8E%98%EC%9D%B4/id398456030";
1164
- } else if([sUrl hasPrefix: @"ispmobile"]) {
1165
- itunesUrl = @"https://apps.apple.com/kr/app/isp/id369125087";
1166
- } else if([sUrl hasPrefix: @"hdcardappcardansimclick"] || [sUrl hasPrefix: @"smhyundaiansimclick"]) {
1145
+ } else if([url hasPrefix:@"ispmobile"]) {
1146
+ itunesUrl = @"https://apps.apple.com/kr/app/isp-%ED%8E%98%EC%9D%B4%EB%B6%81/id369125087";
1147
+ } else if([url hasPrefix:@"hdcardappcardansimclick"]) {
1167
1148
  itunesUrl = @"https://apps.apple.com/kr/app/%ED%98%84%EB%8C%80%EC%B9%B4%EB%93%9C/id702653088";
1168
- } else if([sUrl hasPrefix: @"shinhan-sr-ansimclick"] || [sUrl hasPrefix: @"smshinhanansimclick"]) {
1149
+ } else if([url hasPrefix:@"shinhan-sr-ansimclick"]) {
1169
1150
  itunesUrl = @"https://apps.apple.com/kr/app/%EC%8B%A0%ED%95%9C%ED%8E%98%EC%9D%B4%ED%8C%90/id572462317";
1170
- } else if([sUrl hasPrefix: @"kb-acp"]) {
1151
+ } else if([url hasPrefix:@"kb-acp"]) {
1171
1152
  itunesUrl = @"https://apps.apple.com/kr/app/kb-pay/id695436326";
1172
- } else if([sUrl hasPrefix: @"liivbank"]) {
1173
- itunesUrl = @"https://apps.apple.com/kr/app/%EB%A6%AC%EB%B8%8C/id1126232922";
1174
- } else if([sUrl hasPrefix: @"mpocket.online.ansimclick"] || [sUrl hasPrefix: @"ansimclickscard"] || [sUrl hasPrefix: @"ansimclickipcollect"] || [sUrl hasPrefix: @"samsungpay"] || [sUrl hasPrefix: @"scardcertiapp"]) {
1153
+ } else if([url hasPrefix:@"mpocket.online.ansimclick"]) {
1175
1154
  itunesUrl = @"https://apps.apple.com/kr/app/%EC%82%BC%EC%84%B1%EC%B9%B4%EB%93%9C/id535125356";
1176
- } else if([sUrl hasPrefix: @"lottesmartpay"]) {
1155
+ } else if([url hasPrefix:@"lottesmartpay"]) {
1177
1156
  itunesUrl = @"https://apps.apple.com/us/app/%EB%A1%AF%EB%8D%B0%EC%B9%B4%EB%93%9C-%EC%95%B1%EC%B9%B4%EB%93%9C/id688047200";
1178
- } else if([sUrl hasPrefix: @"lotteappcard"]) {
1179
- itunesUrl = @"https://apps.apple.com/kr/app/%EB%94%94%EC%A7%80%EB%A1%9C%EC%B9%B4-%EB%A1%AF%EB%8D%B0%EC%B9%B4%EB%93%9C/id688047200";
1180
- } else if([sUrl hasPrefix: @"newsmartpib"]) {
1181
- itunesUrl = @"https://apps.apple.com/kr/app/%EC%9A%B0%EB%A6%AC-won-%EB%B1%85%ED%82%B9/id1470181651";
1182
- } else if([sUrl hasPrefix: @"com.wooricard.wcard"]) {
1183
- itunesUrl = @"https://apps.apple.com/kr/app/%EC%9A%B0%EB%A6%ACwon%EC%B9%B4%EB%93%9C/id1499598869";
1184
- } else if([sUrl hasPrefix: @"citispay"] || [sUrl hasPrefix: @"citicardappkr"] || [sUrl hasPrefix: @"citimobileapp"]) {
1185
- itunesUrl = @"https://apps.apple.com/kr/app/%EC%94%A8%ED%8B%B0%EB%AA%A8%EB%B0%94%EC%9D%BC/id1179759666";
1186
- } else if([sUrl hasPrefix: @"shinsegaeeasypayment"]) {
1187
- itunesUrl = @"https://apps.apple.com/kr/app/ssgpay/id666237916";
1188
- } else if([sUrl hasPrefix: @"cloudpay"]) {
1189
- itunesUrl = @"https://apps.apple.com/kr/app/%ED%95%98%EB%82%98%EC%B9%B4%EB%93%9C-%EC%9B%90%ED%81%90%ED%8E%98%EC%9D%B4/id847268987";
1190
- } else if([sUrl hasPrefix: @"hanawalletmembers"]) {
1191
- itunesUrl = @"https://apps.apple.com/kr/app/n-wallet/id492190784";
1192
- } else if([sUrl hasPrefix: @"nhappvardansimclick"]) {
1157
+ } else if([url hasPrefix:@"lotteappcard"]) {
1158
+ itunesUrl = @"https://apps.apple.com/us/app/%EB%A1%AF%EB%8D%B0%EC%B9%B4%EB%93%9C-%EC%95%B1%EC%B9%B4%EB%93%9C/id688047200";
1159
+ } else if([url hasPrefix:@"cloudpay"]) {
1160
+ itunesUrl = @"https://apps.apple.com/kr/app/%ED%95%98%EB%82%98%EC%9B%90%ED%81%90-%EC%B9%B4%EB%93%9C-%ED%95%98%EB%82%98%EC%B9%B4%EB%93%9C/id427543371";
1161
+ } else if([url hasPrefix:@"nhappvardansimclick"]) {
1193
1162
  itunesUrl = @"https://apps.apple.com/kr/app/%EC%98%AC%EC%9B%90%ED%8E%98%EC%9D%B4-nh%EC%95%B1%EC%B9%B4%EB%93%9C/id1177889176";
1194
- } else if([sUrl hasPrefix: @"nhallonepayansimclick"] || [sUrl hasPrefix: @"nhappcardansimclick"] || [sUrl hasPrefix: @"nhallonepayansimclick"] || [sUrl hasPrefix: @"nonghyupcardansimclick"]) {
1163
+ } else if([url hasPrefix:@"nhallonepayansimclick"]) {
1195
1164
  itunesUrl = @"https://apps.apple.com/kr/app/%EC%98%AC%EC%9B%90%ED%8E%98%EC%9D%B4-nh%EC%95%B1%EC%B9%B4%EB%93%9C/id1177889176";
1196
- } else if([sUrl hasPrefix: @"payco"]) {
1197
- itunesUrl = @"https://apps.apple.com/kr/app/payco/id924292102";
1198
- } else if([sUrl hasPrefix: @"lpayapp"] || [sUrl hasPrefix: @"lmslpay"]) {
1199
- itunesUrl = @"https://apps.apple.com/kr/app/l-point-with-l-pay/id473250588";
1200
- } else if([sUrl hasPrefix: @"naversearchapp"]) {
1165
+ } else if([url hasPrefix:@"citispay"]) {
1166
+ itunesUrl = @"https://apps.apple.com/kr/app/%EC%94%A8%ED%8B%B0%EB%AA%A8%EB%B0%94%EC%9D%BC/id1179759666";
1167
+ } else if([url hasPrefix:@"payco"]) {
1168
+ itunesUrl = @"https://apps.apple.com/kr/app/payco-%ED%8E%98%EC%9D%B4%EC%BD%94-%ED%98%9C%ED%83%9D%EA%B9%8C%EC%A7%80-%EB%98%91%EB%98%91%ED%95%9C-%EA%B0%84%ED%8E%B8%EA%B2%B0%EC%A0%9C/id924292102";
1169
+ } else if([url hasPrefix:@"naversearchapp"]) {
1201
1170
  itunesUrl = @"https://apps.apple.com/kr/app/%EB%84%A4%EC%9D%B4%EB%B2%84-naver/id393499958";
1202
- } else if([sUrl hasPrefix: @"tauthlink"]) {
1203
- itunesUrl = @"https://apps.apple.com/kr/app/pass-by-skt/id1141258007";
1204
- } else if([sUrl hasPrefix: @"uplusauth"] || [sUrl hasPrefix: @"upluscorporation"] ) {
1205
- itunesUrl = @"https://apps.apple.com/kr/app/pass-by-u/id1147394645";
1206
- } else if([sUrl hasPrefix: @"ktauthexternalcall"]) {
1207
- itunesUrl = @"https://apps.apple.com/kr/app/pass-by-kt/id1134371550";
1208
- } else if([sUrl hasPrefix: @"supertoss"]) {
1209
- itunesUrl = @"https://apps.apple.com/kr/app/%ED%86%A0%EC%8A%A4/id839333328";
1210
- } else if([sUrl hasPrefix: @"kakaotalk"]) {
1211
- itunesUrl = @"https://apps.apple.com/kr/app/kakaotalk/id362057947";
1212
- } else if([sUrl hasPrefix: @"chaipayment"]) {
1213
- itunesUrl = @"https://apps.apple.com/kr/app/%EC%B0%A8%EC%9D%B4/id1459979272";
1214
1171
  }
1215
-
1216
- if(itunesUrl.length > 0) {
1217
- NSURL *appstore = [NSURL URLWithString: itunesUrl];
1218
- [self startAppToApp: appstore];
1172
+ if([itunesUrl length] > 0) {
1173
+ [self openAppURLString: itunesUrl];
1174
+ }
1175
+ }
1176
+
1177
+
1178
+ - (void) startAppToApp:(NSURL*)url {
1179
+ UIApplication *application = [UIApplication sharedApplication];
1180
+ if (@available(iOS 10.0, *)) {
1181
+ [application openURL:url options:@{} completionHandler:nil];
1182
+ } else {
1183
+ [application openURL:url];
1184
+ }
1185
+ }
1186
+
1187
+ - (void) openAppURL:(WKNavigationAction *)navigationAction {
1188
+ if (@available(iOS 10.0, *)) {
1189
+ [[UIApplication sharedApplication] openURL:navigationAction.request.URL options:@{} completionHandler:^(BOOL success) {}];
1190
+ } else {
1191
+ [[UIApplication sharedApplication] openURL:navigationAction.request.URL];
1219
1192
  }
1220
1193
  }
1221
1194
 
1222
- - (BOOL) isItunesURL:(NSString*) urlString {
1223
- NSRange match = [urlString rangeOfString: @"itunes.apple.com"];
1224
- return match.location != NSNotFound;
1195
+ - (void) openAppURLString:(NSString *)url {
1196
+ if (@available(iOS 10.0, *)) {
1197
+ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:@{} completionHandler:^(BOOL success) {}];
1198
+ } else {
1199
+ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
1200
+ }
1225
1201
  }
1226
1202
 
1227
- - (void) navigationOriginRN:(WKWebView *)webView
1203
+
1204
+
1205
+ - (void) navigationOriginRN:(WKWebView *)webView
1228
1206
  decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
1229
1207
  decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
1230
1208
  {
package/ios/.DS_Store CHANGED
Binary file
@@ -7,9 +7,9 @@
7
7
  objects = {
8
8
 
9
9
  /* Begin PBXBuildFile section */
10
- 3515965E21A3C86000623BFA /* BPCWKProcessPoolManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3515965D21A3C86000623BFA /* BPCWKProcessPoolManager.m */; };
11
- E91B351D21446E6C00F9801F /* BPCWebViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E91B351B21446E6C00F9801F /* BPCWebViewManager.m */; };
12
- E91B351E21446E6C00F9801F /* BPCWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = E91B351C21446E6C00F9801F /* BPCWebView.m */; };
10
+ 873A379E28111A570023EDDE /* BPCWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 873A379928111A570023EDDE /* BPCWebView.m */; };
11
+ 873A379F28111A570023EDDE /* BPCWebViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 873A379A28111A570023EDDE /* BPCWebViewManager.m */; };
12
+ 873A37A028111A570023EDDE /* BPCWKProcessPoolManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 873A379D28111A570023EDDE /* BPCWKProcessPoolManager.m */; };
13
13
  /* End PBXBuildFile section */
14
14
 
15
15
  /* Begin PBXCopyFilesBuildPhase section */
@@ -26,12 +26,12 @@
26
26
 
27
27
  /* Begin PBXFileReference section */
28
28
  134814201AA4EA6300B7C361 /* libRNCWebView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNCWebView.a; sourceTree = BUILT_PRODUCTS_DIR; };
29
- 3515965D21A3C86000623BFA /* BPCWKProcessPoolManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BPCWKProcessPoolManager.m; path = ../apple/BPCWKProcessPoolManager.m; sourceTree = "<group>"; };
30
- 3515965F21A3C87E00623BFA /* BPCWKProcessPoolManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BPCWKProcessPoolManager.h; path = ../apple/BPCWKProcessPoolManager.h; sourceTree = "<group>"; };
31
- E91B351921446E6C00F9801F /* BPCWebViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BPCWebViewManager.h; path = ../apple/BPCWebViewManager.h; sourceTree = "<group>"; };
32
- E91B351A21446E6C00F9801F /* BPCWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BPCWebView.h; path = ../apple/BPCWebView.h; sourceTree = "<group>"; };
33
- E91B351B21446E6C00F9801F /* BPCWebViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BPCWebViewManager.m; path = ../apple/BPCWebViewManager.m; sourceTree = "<group>"; };
34
- E91B351C21446E6C00F9801F /* BPCWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BPCWebView.m; path = ../apple/BPCWebView.m; sourceTree = "<group>"; };
29
+ 873A379828111A570023EDDE /* BPCWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BPCWebView.h; path = ../apple/BPCWebView.h; sourceTree = "<group>"; };
30
+ 873A379928111A570023EDDE /* BPCWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BPCWebView.m; path = ../apple/BPCWebView.m; sourceTree = "<group>"; };
31
+ 873A379A28111A570023EDDE /* BPCWebViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BPCWebViewManager.m; path = ../apple/BPCWebViewManager.m; sourceTree = "<group>"; };
32
+ 873A379B28111A570023EDDE /* BPCWebViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BPCWebViewManager.h; path = ../apple/BPCWebViewManager.h; sourceTree = "<group>"; };
33
+ 873A379C28111A570023EDDE /* BPCWKProcessPoolManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BPCWKProcessPoolManager.h; path = ../apple/BPCWKProcessPoolManager.h; sourceTree = "<group>"; };
34
+ 873A379D28111A570023EDDE /* BPCWKProcessPoolManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BPCWKProcessPoolManager.m; path = ../apple/BPCWKProcessPoolManager.m; sourceTree = "<group>"; };
35
35
  /* End PBXFileReference section */
36
36
 
37
37
  /* Begin PBXFrameworksBuildPhase section */
@@ -56,12 +56,12 @@
56
56
  58B511D21A9E6C8500147676 = {
57
57
  isa = PBXGroup;
58
58
  children = (
59
- E91B351A21446E6C00F9801F /* BPCWebView.h */,
60
- E91B351C21446E6C00F9801F /* BPCWebView.m */,
61
- E91B351921446E6C00F9801F /* BPCWebViewManager.h */,
62
- E91B351B21446E6C00F9801F /* BPCWebViewManager.m */,
63
- 3515965F21A3C87E00623BFA /* BPCWKProcessPoolManager.h */,
64
- 3515965D21A3C86000623BFA /* BPCWKProcessPoolManager.m */,
59
+ 873A379828111A570023EDDE /* BPCWebView.h */,
60
+ 873A379928111A570023EDDE /* BPCWebView.m */,
61
+ 873A379B28111A570023EDDE /* BPCWebViewManager.h */,
62
+ 873A379A28111A570023EDDE /* BPCWebViewManager.m */,
63
+ 873A379C28111A570023EDDE /* BPCWKProcessPoolManager.h */,
64
+ 873A379D28111A570023EDDE /* BPCWKProcessPoolManager.m */,
65
65
  134814211AA4EA7D00B7C361 /* Products */,
66
66
  );
67
67
  sourceTree = "<group>";
@@ -122,9 +122,9 @@
122
122
  isa = PBXSourcesBuildPhase;
123
123
  buildActionMask = 2147483647;
124
124
  files = (
125
- E91B351D21446E6C00F9801F /* BPCWebViewManager.m in Sources */,
126
- E91B351E21446E6C00F9801F /* BPCWebView.m in Sources */,
127
- 3515965E21A3C86000623BFA /* BPCWKProcessPoolManager.m in Sources */,
125
+ 873A37A028111A570023EDDE /* BPCWKProcessPoolManager.m in Sources */,
126
+ 873A379E28111A570023EDDE /* BPCWebView.m in Sources */,
127
+ 873A379F28111A570023EDDE /* BPCWebViewManager.m in Sources */,
128
128
  );
129
129
  runOnlyForDeploymentPostprocessing = 0;
130
130
  };
@@ -10,13 +10,5 @@
10
10
  <integer>0</integer>
11
11
  </dict>
12
12
  </dict>
13
- <key>SuppressBuildableAutocreation</key>
14
- <dict>
15
- <key>58B511DA1A9E6C8500147676</key>
16
- <dict>
17
- <key>primary</key>
18
- <true/>
19
- </dict>
20
- </dict>
21
13
  </dict>
22
14
  </plist>
@@ -1,3 +1,3 @@
1
1
  import { requireNativeComponent } from "react-native";
2
- export var RCTWebView = requireNativeComponent('RCTWebView');
3
- export var RCTWebView2 = requireNativeComponent('RCTWebView2');
2
+ export var RCTWebView = requireNativeComponent('BPCWebView');
3
+ export var RCTWebView2 = requireNativeComponent('BPCWebView2');