Cordova 应用程序外部链接在 iOS 上不起作用

Posted

技术标签:

【中文标题】Cordova 应用程序外部链接在 iOS 上不起作用【英文标题】:Cordova app external links not working on iOS 【发布时间】:2017-12-20 23:04:45 【问题描述】:

我有一个 Cordova 应用程序(使用 PGB 构建),其中外部链接在 ios 上停止工作。这些链接在 android 上和作为 WebApp 上都可以正常工作,而在 iOS 上则不行。我尝试了 UIWebView 和 WkWebView。这曾经在所有平台上都可以正常工作。我不确定它什么时候坏了(Cordova 6 或 iOS 11)。我使用白名单插件:

<access origin="*"/>
<allow-navigation href="*" />
<allow-intent href="*" />

CORS 标头是:

<meta http-equiv="Content-Security-Policy"
    content="default-src 'self' gap://ready file://* *;
    style-src * 'self' 'unsafe-inline' 'unsafe-eval';
    script-src * 'self' 'unsafe-inline' 'unsafe-eval';"
>

链接都是外部的。我不需要或不希望它们出现在应用程序 WebView 中。我更喜欢一个单独的 Safari 实例。我还需要使用 inappbrowser 插件吗?

【问题讨论】:

【参考方案1】:

allow-navigation 优先于 allow-intent,您必须删除 allow-navigation 条目或将其更改为仅允许导航到某些 URL,而不是全部。

【讨论】:

正确,从配置文件中删除allow-navigation 后,iOS 确实会在浏览器中打开链接。但是,如果我想使用 &lt;allow-navigation href="https://*youtube.com/*" /&gt; 嵌入 ToyTube 视频,您知道如何使它工作吗?无论我做什么,我只能制作一个(链接或嵌入的视频)来工作。但我希望两者同时工作。【参考方案2】:

这对我有用!定义allow-navigation 以允许嵌入将破坏外部链接,因此要解决此问题,我必须安装inAppBrowser 插件https://github.com/apache/cordova-plugin-inappbrowser 并使用js 打开带有cordova.InAppBrowser.open(href, '_system'); 的链接

【讨论】:

以上是关于Cordova 应用程序外部链接在 iOS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Cordova katzer 插件后台模式在 iOS-9 上不起作用

带有 Phonegap Build 的 Cordova 插件白名单在 iOS 上不起作用

带有 Cordova 垂直滚动的 Framework7 在 iOS 上不起作用

在 PhoneGap/Cordova 中安排本地通知在 iOS 模拟器上不起作用

cordova-plugin-fcm 在 iOS 上不起作用

为啥外部链接在构建后在 phonegap 应用程序上不起作用