在iOS下使用InAppBrowser打开本地文件并不起作用

时间:2014-10-15 08:23:26

标签: ios cordova inappbrowser

我正在使用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文件。

1 个答案:

答案 0 :(得分:3)

在iOS上使用_system时,它会尝试打开你通过safari传递的网址。 由于iOS具有沙盒访问限制,因此Safari无法打开网址,因为它位于您的应用沙箱中。

你可以尝试这个插件,它提供一个"打开"该对话框将显示支持您要打开的文件类型的应用程序。

https://build.phonegap.com/plugins/1076