3

我正在开发一个PhoneGap application用户能够浏览服务器提供的一些页面的地方。当用户导航到这些页面时,应用程序会下载所有文件(HTMLCSSJS等)并将它们存储在iPad. 这样,如果用户尝试访问这些页面offline,则会提供本地文件。

这个应用程序在iOS7 中运行良好。昨天我决定将我的更新iPadiOS8,起初它似乎工作:我可以下载文件,离线并仍然使用本地文件导航页面。我遇到的唯一错误Console是:

[Error] Deprecated attempt to access property 'userAgent' on a non-Navigator object.

当我更新我的应用程序或在安装应用程序的情况下使用“phonegap local run ios”时出现问题。每当我这样做时,应用程序将无法加载本地文件:

Failed to load resource: The requested URL was not found on this server. 
file:///var/mobile/Containers/Data/Application/7A3590E8-C78A-4F45-B5B9-51FD0BAFE524/Library/files/pages/7/7a56ab3cfa56fbd1b9c4becbf5dca4a2.jpg

文件在那里,我可以使用File插件读取它们,但 WebView 无法加载它们。我这样引用它们:

<img src="file://localhost/var/mobile/Containers/Data/Application/7A3590E8-C78A-4F45-B5B9-51FD0BAFE524/Library/files/pages/7/7a56ab3cfa56fbd1b9c4becbf5dca4a2.jpg" >

我尝试同时使用LibraryCompatibilityas iosPersistentFileLocation,但结果是一样的。我将所有下载的文件标记为“不备份”,以防止它们被包含在iCloud

fileEntry.setMetadata(function(){}, function(){}, {"com.apple.MobileBackup": 1});

起初我认为这是由于在iOS8 中加载本地文件的已知错误引起的,但我的应用程序正在加载它们,它在我更新应用程序后停止工作。

我已经PhoneGap和所有plugins更新到最后一个版本。我也尝试过使用Cordova,同样的情况发生了。

任何人都知道我该如何解决这个问题或者我应该在哪里报告这个错误?

谢谢!

4

2 回答 2

2

我设法解决了!我正在使用 fileEntry.toURL 来获取要在我的 HTML 中使用的文件 URL。如果我使用

fileEntry.toInternalURL()

相反,它工作正常。

使用内部 URL,URL 如下所示:

cdvfile://localhost/persistent/pages/7/0b0cc746c5e90ee7fc94b2c15d37d43e.png
于 2014-09-23T13:33:11.163 回答
0

我遇到了同样的问题,我设法解决了。就我而言,我的问题是每次更新应用程序时,新应用程序的 id 都与上一个不同。例如,旧应用程序的路径是:

file:///var/mobile/Containers/Data/Application/7A3590E8-C78A-4F45-B5B9-51FD0BAFE524/Library/files/file.pdf

还有一个新的:

file:///var/mobile/Containers/Data/Application/1BC5FS-7B3B-90E8-C7C8-1B7C1984C2A71/Library/files/file.pdf

因此,即使我的 pdf 文件仍在应用程序数据存储中,但由于应用程序创建了一个新的应用程序 ID,我使用了错误的路径。我通过创建一个新函数来解决这个问题,该函数每次有更新时都会更新我的路径。我使用以下方法找到应用程序 ID:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);

function onFileSystemSuccess(fileSystem) {
    //Do what you need here
  }

文件系统是一个在根目录中包含 nativeURL 的对象。

希望能帮助到你!

于 2015-10-30T07:31:56.920 回答