我使用的是Cordova 5.1.1,我需要在我的应用程序中打开iTunes上App的网站。
如果我这样做
window.open('https://itunes.apple.com/us/app/angry-birds/id343200656?mt=8&uo=4', "_system","location=no");
我进入Safari" Safari无法打开页面,因为地址无效"。我的地址有效。
如果我尝试
window.open('itms-apps://itunes.apple.com/us/app/angry-birds/id343200656?mt=8&uo=4', "_system","location=no");
我得到"此应用不允许查询方案itms-apps"
我尝试过使用encodeurl功能,但它是一样的。
有什么想法吗?
答案 0 :(得分:4)
我弄清楚问题是什么。进一步使用正确的访问控制标签配置白名单插件,主要问题是我试图在iOS模拟器上测试应用程序。 在iOS模拟器上,App Store无法作为真正的操作系统从浏览器打开,主要是因为模拟器XD中没有应用程序。
在这样的事情上浪费时间真的很令人沮丧...
答案 1 :(得分:1)
如果您使用第二个选项(window.open('itms-apps://itunes.apple.com/us/app/angry-birds/id343200656?mt=8&uo=4', "_system","location=no");
)
然后你必须在info.plist文件中添加它:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>itms-apps</string>
</array>
,这在你的config.xml
中<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
答案 2 :(得分:0)
你在iOS 9上试试吗? requires your app to whitelist其他应用程序检查的隐私权发生了变化。 Cordova似乎通过running a check实现window.open以查看该应用程序URL是否首先存在。
答案 3 :(得分:0)
您没有实施完整的白名单,请添加CSP。 Documentation CSP位于底部。
你可以通过阅读#10来获得更多细节 Top Mistakes by Developers new to Cordova/Phonegap
我引用
这个相对*新*要求意味着 - 要访问网络上的任何网站或资源,您必须使用白名单和白名单插件。如果您使用cordova-android@4.0.0或更高版本,此要求将生效;包括cli-5.1.1和cli-5.2.0。但是,如果您的版本在4.0.0之前,让我们说3.5.0或3.7.0,那么您将不必须添加白名单要求。
要明确,&#34;白名单&#34;已经存在了一段时间,但插件和要求是非常新的。正如您所期望的那样,&#34;白名单&#34;添加了,defacto开放访问功能已被弃用。或者说另一种方式,事实上开放访问功能已被计划并计划被淘汰。此更改标志着删除开放访问功能的一个步骤。
此外,内容安全策略(CSP)已经吸引了众多开发人员 - 因为它的公开性很差。 根据您的使用情况和您使用的Phonegap版本,CSP需要进入您使用的每个HTML页面,就像您必须等待“设备准备”一样。但是,有些情况根本不需要它。文档让一些人感到困惑,请仔细阅读。文档隐藏在许多最新文档页面的底部。
相关链接
Phonegap Build Forum:Notes for upgrading to cli-5.1.1 on PGB,现在需要白名单
- Cordova Whitelist Guide
- Phonegap Whitelist Guide
- Phonegap Build Whitelist Guide
- White-list Plugin - 阅读BOTTOM部分以获取有关CSP的说明