如何在 react-native 中使用 wkwebview 支持其他 Urls?
How to support other Urls with wkwebview in react-native?
我们正在使用
"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 url 之类的消息:
nativeapp://domain/buypayment/success
WKWebView 现在因不受支持而失败 URL。
如何让 WKWebView 也支持 nativeapp://
而不仅仅是 http://
和 https://
?
谢谢!
目前不支持包中的其他协议
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];
}
}
意味着如果方案是 http
和 https
,那么它将加载请求,否则如果它可以打开 url
,它将创建应用程序的共享实例,如果有效则打开它。
我不太了解 swift 但这个问题可以通过添加 WKURLSchemeHandler
来解决
查看此 article,其中说明了如何注册和处理它。
我们正在使用
"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 url 之类的消息:
nativeapp://domain/buypayment/success
WKWebView 现在因不受支持而失败 URL。
如何让 WKWebView 也支持 nativeapp://
而不仅仅是 http://
和 https://
?
谢谢!
目前不支持包中的其他协议
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];
}
}
意味着如果方案是 http
和 https
,那么它将加载请求,否则如果它可以打开 url
,它将创建应用程序的共享实例,如果有效则打开它。
我不太了解 swift 但这个问题可以通过添加 WKURLSchemeHandler
来解决
查看此 article,其中说明了如何注册和处理它。