ipad - PhoneGap 和 iOS 8 : Failed to load local files ONLY after updating my app

标签 ipad cordova ios8 local-files

我正在开发一个 PhoneGap 应用程序,用户可以在其中浏览服务器提供的某些页面。当用户导航到这些页面时,应用会下载所有文件(HTMLCSSJS 等)并将它们存储在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" >

我尝试同时使用 LibraryCompatibility 作为 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/

相关文章:

android - Rhomobile 与 MoSync/Phonegap/HTML5

ios7 - 在 iOS 7 中的 Alamofire 中设置自定义 HTTP header 不起作用

iPhone和iPad在设计上的区别

android - 如何设置 Shadow-cljs 以使用 Cordova + Clojurescript 重新加载代码?

ios - 限制 editbuttonitem 影响的行

android - 在 Ionic 4 中将 PDF 保存到设备

ios - 导航到 UIViewController 时,如何将其旋转到其支持的界面方向?

objective-c - 不确认 Swift 中的 UITableViewDataSource 协议(protocol),为什么?

iphone - 在 UINavigationController 中按下后退按钮时如何调用 viewDidLoad 方法? (iPhone/iPad)

iphone - UIView 内的 UiView 过渡