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.
- package/android/.DS_Store +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.0-rc-1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.0-rc-1/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.0-rc-1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.0-rc-1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.0-rc-1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.0-rc-1/gc.properties +0 -0
- package/android/.gradle/7.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.idea/jarRepositories.xml +8 -3
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +4 -4
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +4 -4
- package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +4 -4
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +4 -4
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +4 -4
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +4 -4
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +3 -3
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
- 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
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
- 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
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_62_2_aar.xml +18 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_8_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_8_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_8_0_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_50.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_50.xml +13 -0
- package/android/.idea/modules/android.iml +33 -42
- package/android/.project +34 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/android/build/.transforms/{cef19407ab645b1b4c01cb89efaec997 → 4e87ba7f47baac309fba5367e008cf44}/results.bin +0 -0
- package/android/build/.transforms/4e87ba7f47baac309fba5367e008cf44/transformed/classes/classes.dex +0 -0
- package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789/classes/classes.dex +0 -0
- package/android/build/.transforms/d5207f219c4292752e7af446f7cc2789.bin +1 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +79 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/xml_file_provider_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
- package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +2 -2
- package/android/build/intermediates/incremental/packageDebugResources/merger.xml +1 -1
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewClient.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$3.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$4.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager.class +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule.class +0 -0
- package/android/build/intermediates/library_java_res/debug/res.jar +0 -0
- package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +102 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +192 -24
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +79 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/kotlin/compileDebugKotlin/build-history.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/last-build.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +205 -27
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt +29 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/{react-native-webview_debug.kotlin_module → react-native-webview-bootpay_debug.kotlin_module} +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/BPCWebViewPackage.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.class +0 -0
- package/android/build.gradle +5 -5
- package/android/gradle.properties +6 -6
- package/android/local.properties +1 -1
- package/android/src/.DS_Store +0 -0
- package/android/src/main/.DS_Store +0 -0
- package/android/src/main/AndroidManifest.xml +75 -0
- package/android/src/main/java/.DS_Store +0 -0
- package/android/src/main/java/kr/.DS_Store +0 -0
- package/android/src/main/java/kr/co/.DS_Store +0 -0
- package/android/src/main/java/kr/co/bootpay/.DS_Store +0 -0
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebChromeClient.java +120 -2
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebView.java +11 -26
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewClient.java +119 -134
- package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManager.java +49 -95
- package/apple/BPCWebView.m +64 -86
- package/ios/.DS_Store +0 -0
- package/ios/RNCWebView.xcodeproj/project.pbxproj +18 -18
- package/ios/RNCWebView.xcodeproj/project.xcworkspace/xcuserdata/bootpay.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNCWebView.xcodeproj/xcuserdata/bootpay.xcuserdatad/xcschemes/xcschememanagement.plist +0 -8
- package/lib/WebViewNativeComponent.windows.js +2 -2
- package/package.json +6 -7
- package/react-native.config.js +1 -1
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_1_0.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_core_core_1_1_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_webkit_webkit_1_4_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_66_4_aar.xml +0 -14
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_1_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_1.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml +0 -13
- package/android/build/.transforms/cef19407ab645b1b4c01cb89efaec997/transformed/classes/classes.dex +0 -0
- package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BasicAuthCredential.class +0 -0
- package/android/src/main/java/kr/co/bootpay/webview/BasicAuthCredential.java +0 -12
- 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.
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
782
|
-
// we will decide which View to
|
|
783
|
-
// does not match (i.e., the
|
|
784
|
-
// NOTE: We could use
|
|
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
|
|
744
|
+
if(rootView.getRootView() != mWebView.getRootView()){
|
|
792
745
|
mWebView.getRootView().setVisibility(View.GONE);
|
|
793
|
-
}
|
|
794
|
-
|
|
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
|
-
//
|
|
762
|
+
// same logic as above
|
|
808
763
|
ViewGroup rootView = getRootView();
|
|
809
764
|
|
|
810
|
-
if
|
|
765
|
+
if(rootView.getRootView() != mWebView.getRootView()){
|
|
811
766
|
mWebView.getRootView().setVisibility(View.VISIBLE);
|
|
812
|
-
}
|
|
813
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
}
|
package/apple/BPCWebView.m
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
#import "objc/runtime.h"
|
|
19
19
|
|
|
20
20
|
static NSTimer *keyboardTimer;
|
|
21
|
-
static NSString *const HistoryShimName = @"
|
|
22
|
-
static NSString *const MessageHandlerName = @"
|
|
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:@"%@
|
|
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
|
-
|
|
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(![
|
|
1129
|
-
[self startAppToApp:
|
|
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
|
-
- (
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
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
|
-
|
|
1159
|
-
NSString *
|
|
1160
|
-
|
|
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([
|
|
1165
|
-
itunesUrl = @"https://apps.apple.com/kr/app/isp/id369125087";
|
|
1166
|
-
} else if([
|
|
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
|
-
}
|
|
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([
|
|
1151
|
+
} else if([url hasPrefix:@"kb-acp"]) {
|
|
1171
1152
|
itunesUrl = @"https://apps.apple.com/kr/app/kb-pay/id695436326";
|
|
1172
|
-
} else if([
|
|
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([
|
|
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([
|
|
1179
|
-
itunesUrl = @"https://apps.apple.com/
|
|
1180
|
-
} else if([
|
|
1181
|
-
itunesUrl = @"https://apps.apple.com/kr/app/%
|
|
1182
|
-
} else if([
|
|
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([
|
|
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([
|
|
1197
|
-
itunesUrl = @"https://apps.apple.com/kr/app/
|
|
1198
|
-
} else if([
|
|
1199
|
-
itunesUrl = @"https://apps.apple.com/kr/app/
|
|
1200
|
-
} else if([
|
|
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
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
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
|
-
- (
|
|
1223
|
-
|
|
1224
|
-
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
};
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { requireNativeComponent } from "react-native";
|
|
2
|
-
export var RCTWebView = requireNativeComponent('
|
|
3
|
-
export var RCTWebView2 = requireNativeComponent('
|
|
2
|
+
export var RCTWebView = requireNativeComponent('BPCWebView');
|
|
3
|
+
export var RCTWebView2 = requireNativeComponent('BPCWebView2');
|