NSURLErrorDomain Arbitrary scheme not working on ios webview(react-native-webview)

a7qyws3x  于 2023-10-21  发布在  iOS
关注(0)|答案(2)|浏览(103)

这个错误是使用react-native-webview发生的,但我不知道它是否与库或ios webview本身和/或我的配置(Info.plist等)有关。
我有一个自定义方案“swish://”的链接,通常会打开Swish应用程序。然而,在iOS上,我得到NSURLErrorDomain,错误代码-1002“不支持的URL”
Ive将URL添加到Info.plist下

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

我已经将originWhitelist={wui 'swish://wui','https://wui']}添加到WebView
奇怪的事情是从网络视图日志中的导航状态更改

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"}

所以它在抱怨'about:blank'.我不知道该怎么办。在safari中输入“swish://”将按预期打开应用程序。
HTML基本上是
<a href='swish://asd?b=c'>SWISHhHH</a>(我尝试了对该链接进行各种更改,以测试是否有其他错误)
有人知道我错过了什么吗?

xytpbqjk

xytpbqjk1#

你可以从这个链接在Xcode中添加UrlSchemes,这应该可以解决这个问题

gk7wooem

gk7wooem2#

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

<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
  }}
/>

相关问题