如何在react-native中使用wkwebview支持其他Url?

时间:2018-04-18 10:07:42

标签: react-native wkwebview

我们正在使用

"react-native": "0.55.3",
"react-native-wkwebview-reborn": "^1.18.0",

我们将像这样加载WKWebView组件

                <WKWebView
                        onLoad={ this.handleWebviewLoad }
                        source={ { uri: payment.redirect_url } }
                        style={ styles.webview }
                    />

付款成功后,我们会获得一个redirect_target网址:

nativeapp://domain/buypayment/success

由于URL不受支持,WKWebView现已失败。

我如何告诉WKWebView支持nativeapp://,而不仅仅是http://https://

谢谢!

1 个答案:

答案 0 :(得分:2)

目前,不支持包中的其他协议 react-native-wkwebview-reborn

RCTWKWebView.m中,它被明确设置为

if ((navigationAction.targetFrame.isMainFrame || _openNewWindowInWebView) && ([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"])) {
    [webView loadRequest:navigationAction.request];
  } else {
    UIApplication *app = [UIApplication sharedApplication];
    NSURL *url = navigationAction.request.URL;
    if ([app canOpenURL:url]) {
      [app openURL:url];
    }
  }

如果方案是httphttps,那么它会加载请求,否则如果它可以打开url,它将创建一个共享实例应用程序,如果有效则打开它。

我对swift不太了解但是这个问题可以通过添加WKURLSchemeHandler来解决 查看此article,其中说明了如何注册和处理它。