我正在开发一个 PhoneGap
应用程序
,用户可以在其中浏览服务器提供的某些页面。当用户导航到这些页面时,应用会下载所有文件(HTML
、CSS
、JS
等)并将它们存储在iPad
。这样,如果用户尝试访问那些处于离线状态
的页面,则会提供本地文件。
此应用程序在 iOS
7 中运行良好。昨天我决定将我的 iPad
更新到 iOS
8,起初它似乎运行良好:我可以下载文件,离线并仍然使用本地文件浏览页面。我在 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" >
我尝试同时使用 Library
和 Compatibility
作为 iosPersistentFileLocation
,但结果是一样的。我将所有下载的文件标记为“不备份”以防止它们包含在 iCloud
中:
fileEntry.setMetadata(function(){}, function(){}, {"com.apple.MobileBackup": 1});
起初我以为这是由 iOS
8 中加载本地文件的已知错误引起的,但我的应用程序正在加载它们,它只是在我更新应用程序后停止工作。
我已将 PhoneGap
和所有 plugins
更新到最新版本。我还尝试使用 Cordova
,结果也是如此。
任何人都知道我该如何解决这个问题或者我应该在哪里报告这个错误?
谢谢!
最佳答案
我设法解决了!我使用 fileEntry.toURL 获取要在我的 HTML 中使用的文件 URL。如果我使用
fileEntry.toInternalURL()
相反,它工作正常。
对于内部 URL,URL 是这样的:
cdvfile://localhost/persistent/pages/7/0b0cc746c5e90ee7fc94b2c15d37d43e.png
关于ipad - PhoneGap 和 iOS 8 : Failed to load local files ONLY after updating my app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25929620/