【问题标题】:Cordova iOS Can't Open LinksCordova iOS 无法打开链接
【发布时间】:2018-06-06 12:08:27
【问题描述】:

我有一个正在为 Android 和 iOS 编译的 cordova 项目。我有一些在系统浏览器中打开网站的链接,例如:

window.open('https://example.com', '_system');
cordova.InAppBrowser.open('httos://example.com', '_system');

这在 Android 上运行良好,但在 iOS 上没有任何反应,甚至没有“_blank”。

我也尝试像其他人推荐的那样添加 inappbrowser 插件 (https://github.com/apache/cordova-plugin-inappbrowser),但是当我实现它时没有任何改变。

关于如何在 iOS 系统浏览器中打开链接的任何想法? google 上的每个来源都只是说添加 inappbrowser 插件,或者只使用“_system”(但这就是我一直在做的事情!)。

我认为这不是我的白名单的问题,因为它在 android 上运行良好,而且我的应用程序也可以在 iOS 上从互联网上正常加载资源。除了在 iOS 上打开链接外,一切正常。

更新:调用 cordova.InAppBrowser.open() 从 onDeviceReady 事件调用时有效,但在事件之外不起作用。我什至尝试设置 window.open,但没有奏效。

【问题讨论】:

  • 显示您的代码。另外,尝试使用cordova.InAppBrowser.open 而不是`window.open`
  • 我已经尝试过这样做,但没有任何效果。好的,我用那个例子更新了我的问题。
  • 这似乎是cordova的问题,我不知道如何解决它。如果我从 ondeviceready 事件内部调用 cordova.InAppBrowser.open() ,它可以工作,但在此之外,它不会。

标签: ios cordova hyperlink


【解决方案1】:

在一些论坛上无情的挖掘之后,在离子论坛上找到了这个帖子:https://forum.ionicframework.com/t/cordova-inappbrowser-plugin-stopped-working-in-ios-10/64361/9

通过将我的内容安全政策更改为:

<meta http-equiv="Content-Security-Policy" content="img-src * 'self' data:; default-src * 'self' gap: wss: ws: ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';">

成功了!然而,我想更好地理解为什么这个 CSP 工作而不是每个人都说要使用的普遍推荐的“gap://ready”。

【讨论】:

  • gap: 是用于 Cordova iOS 应用程序本地通信的协议。据我所知,gap://ready 是唯一用于通信的 url,所以无论你使用gap://ready 还是gap:,它们都应该可以工作。我更喜欢gap:,这是您在创建新应用时获得的 Cordova 模板应用上使用的那个
【解决方案2】:

最后通过设置 iOS 的偏好来解决这个问题 在 config.xml 中

 preference name="WKPort" value="8080"
 preference name="UseScheme" value="false"

专门为 iOS 设置这些偏好。

UseScheme = false 确实是一个坏主意,但它是当今解决此问题的唯一方法。

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多