我正在使用Cordova开发移动应用程序。该应用程序允许用户在一种文件管理器中导航并允许他们下载文件。我使用插件“FileTransfer”在用户的设备上下载文件,然后调用InAppBrowser(版本0.5.2)插件以打开它。
虽然它在Android下运行得非常好,但我不能在iOS下说同样的内容(在版本7和8下测试)。
这是我用来打开下载文件的代码行:
window.open(entry.toURL(), "_system");
在Android下,它建议用户启动哪个应用程序来打开文件,或者根据文件扩展名自动启动默认应用程序。在iOS下,文件被下载,然后没有任何反应。我发现当用户在iOS下时我可以使用InAppBrowser插件的集成查看器。我这样做:
if (navigator.userAgent.match(/iPhone|iPod|iPad/))
window.open(entry.toURL(), "_blank");
else
window.open(entry.toURL(), "_system");
使用这些代码行,如果用户在iOS下,则会启动集成查看器并显示该文件。问题是ZIP文件或无法在查看器中呈现的其他文件。这个说“加载错误”。
我认为如果“_system”有效,Safari将会启动并向用户提出他想要打开文件的方式。
有没有人知道如何让“_system”在iOS上运行?这最终是一个已知问题(我找不到与我的问题有关的任何内容)?
如果这与我的问题有关,我使用Phonegap Build来生成.ipa文件。
答案 0 :(得分:3)
在iOS上使用_system时,它会尝试打开你通过safari传递的网址。 由于iOS具有沙盒访问限制,因此Safari无法打开网址,因为它位于您的应用沙箱中。
你可以尝试这个插件,它提供一个"打开"该对话框将显示支持您要打开的文件类型的应用程序。