NSURLErrorDomain 任意方案不适用于 ios webview (react-native-webview)

问题描述 投票:0回答:2

此错误是使用react-native-webview发生的,但我不知道它是否与该库或ios webview本身和/或我的配置(Info.plist等)相关

我有一个带有自定义方案“swish://”的链接,通常会打开 Swish 应用程序。但是在 iOS 上我收到 NSURLErrorDomain,错误代码 -1002“不支持的 URL”

我已将 url 添加到 Info.plist 下

<key>LSApplicationQueriesSchemes</key>
<array>
<string>swish</string>
</array>

我已将 originWhiteList={['swish://', 'https://']} 添加到 WebView

Webview 日志中的 onNavigationStateChange 很奇怪

LOG  {"canGoBack": false, "canGoForward": false, "loading": true, "navigationType": "other", "target": 1909, "title": "", "url": "about:blank"}
LOG  {"canGoBack": false, "canGoForward": false, "loading": false, "target": 1909, "title": "", "url": "about:blank"}
LOG  {"canGoBack": false, "canGoForward": false, "loading": false, "navigationType": "click", "target": 1909, "title": "", "url": "swish://asd?b=c"}

然后失败了

Encountered an error loading page {"canGoBack": false, "canGoForward": false, "code": -1002, "description": "unsupported URL", "didFailProvisionalNavigation": true, "domain": "NSURLErrorDomain", "loading": false, "target": 1909, "title": "", "url": "about:blank"}

所以它在抱怨“关于:空白”......我不知道如何解决这个问题。在 safari 中输入“swish://”即可按预期打开应用程序。

html 基本上是

<a href='swish://asd?b=c'>SWISHhHH</a>
(我尝试对该链接进行各种更改以测试是否有其他问题)

有人知道我错过了什么吗?

ios react-native webview react-native-webview
2个回答
0
投票

您可以通过此链接在 Xcode 中添加 UrlSchemes,这应该可以解决问题


0
投票

我在打开 BankID 的 WebView 中遇到了类似的问题。您可以使用 prop 来拦截所有请求并自行处理您的特定 uri 方案

onShouldStartLoadWithRequest

看我的例子:

<WebView
  source={{
    uri: 'https://login.example.com/...',
   }}
   originWhitelist={['https://*', 'bankid://*']}
   onShouldStartLoadWithRequest={(r) => {
   if (r.url.startsWith('bankid:///')) {
     Linking.openURL(r.url)
     return false
   }
   return true
  }}
/>
© www.soinside.com 2019 - 2024. All rights reserved.