在 iOS 上,allow-navigation 不优先于 allow-intent

Posted

技术标签:

【中文标题】在 iOS 上,allow-navigation 不优先于 allow-intent【英文标题】:allow-navigation isn't taking precedence over allow-intent on iOS 【发布时间】:2018-06-17 21:30:15 【问题描述】:

我使用PWAbuilder 为我的 PWA 应用生成了 iosandroid Pollyfill。它在 Android 上运行良好,但我在 iOS 上遇到了问题。

我想在外部浏览器中打开外部链接,所以我添加了这个allow-intent

<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />

这很好,如果我点击任何外部链接 (not-under-my-domain.com),它会在外部浏览器中打开。

为了在应用中打开 my-domain.com,我添加了

<allow-navigation hap-rule="yes" href="*://my-domain.com/*" />

根据文档,allow-navigation 应该优先于 allow-intent,但它似乎不起作用。

然后,如果我点击我域中的任何链接,例如 /other-page,它会在外部浏览器中打开 - 这是意料之外的,它应该在应用程序中打开。 p>

我想让allow-navigation 中未定义的任何链接在外部浏览器以及应用内的所有其他链接(在 my-domain.com 下)中打开。

有什么想法吗?

【问题讨论】:

你的 cordova-ios 版本是什么?我一直在尝试 4.5.4 并且似乎工作正常。我创建了一个加载谷歌并允许谷歌导航并进行搜索的应用程序,但结果在 safari 中打开。还尝试在允许&lt;allow-navigation hap-rule="yes" href="*://www.example.com/*" /&gt; 后加载不同的www.example.com url,并且它们都在应用程序内打开。 可能需要添加: 不允许插入星号,你需要在星号里面添加 -> * 和 NSAppTransportSecurityNSAllowsArbitraryLoads @jcesarmobile 我使用pwabuilder.com 生成了iOS 版本,但我很难找到版本。根据 Xcode 项目如何判断? @Lito 我试着把它留给“”,但它没有成功。 @PabloCantero I said you need to add inside the asterisk -&gt; *,但网络不允许设置星号 &lt;allow-navigation href="*" /&gt; &lt;allow-intent href="*" /&gt; 【参考方案1】:

所以看来问题出在我过时的科尔多瓦版本上。我按照@jcesarmobile 对 cme​​ts 的建议升级了cordova 版本,现在可以使用了。

npm install cordova -g
cordova plugin save
cordova platform rm ios
cordova platform add ios

【讨论】:

以上是关于在 iOS 上,allow-navigation 不优先于 allow-intent的主要内容,如果未能解决你的问题,请参考以下文章

错误:未找到“www/index.html”处的起始页并且错误内部导航被拒绝 - <allow-navigation> 未设置为 url='about:blank'

无法提交:// 请求,跨源请求仅支持 http://

在科尔多瓦允许通话(以及地图和邮件)

允许导航和允许意图之间的区别

ionic和cordova解决跨域问题

iOS 8:UITableView 在 heightForRowAtIndexPath 上崩溃(在 iOS7 上运行良好)