奇怪的行为与缓存。清单/离线使用网络应用程序保存到ipad ios6的主屏幕

2024-05-15

我刚刚在装有新 iOS 6 的 iPad 上发现了一些奇怪的行为。我正在测试一个用于离线使用的网络应用程序。 Web 应用程序只不过是一个带有缓存清单的静态网站,因此没有使用像 sencha touch 这样的特殊框架或像 phnoegap 这样的工具。只需 HTML、CSS 和 JavaScript 以及一个 cache.manifest。

该应用程序以前运行良好:我可以将网站保存到主屏幕。当我从那里打开它时,所有数据都会被下载以进行缓存。下载结束时,弹出窗口会询问我是否要将缓存增加到 50MB – 接受 – 一切都很好 – 离线使用有效。

现在更新到 iOS 6 后: 我对应用程序做了一些更改。从主屏幕卸载该应用程序。在 mobile safari 中再次打开它。保存到主屏幕。打开后,下载就会按预期开始。但随后它就冻结在 99% 了。当我在控制台中查找它时,我收到错误消息: “应用程序缓存更新失败,因为超出了大小配额。”

奇怪的事情来了:当我在浏览器中打开它时,下载开始,最后我被问到是否要将缓存大小增加到 50MB。我当然确认。当我现在查看 safari 首选项中的“网站数据”时,我发现该应用程序的所有缓存数据约为 33MB!所以根本不超过50MB!

这是iOS6的bug吗?自从更新到 iOS 6 以来,有人在将网站保存到主屏幕时遇到过缓存数据的问题吗?谢谢您的帮助,因为我真的被困在这里......在网络上找不到任何有用的东西......

(不幸的是,我无法发布任何指向网络应用程序和/或其文件的链接)。

EDIT:

我找到了关于这个问题的更多信息:

http://www.nsbasic.com/blog/?p=928 http://www.nsbasic.com/blog/?p=928

显然,保存到主屏幕的 wep 应用程序现在被视为本机应用程序,这意味着保存到主屏幕的同一 Web 应用程序的每个实例都有自己的“存储沙箱”。因此,该数据独立于移动 Safari 中保存的数据。这意味着,如果您删除所有移动 Safari 的网站数据,这对保存到主屏幕的网络应用程序没有影响(在 ios6 之前,它们共享相同的数据)。

我还发现了这个:

iOS 6 破坏了 web 应用程序中的 GeoLocation(支持 apple-mobile-web-app) https://stackoverflow.com/q/12503815/1254555

虽然不完全相同的主题,但可能相关。显然,网络应用程序保存到主屏幕使用

<meta content="yes" name="apple-mobile-web-app-capable" />

将无法使用地理位置。仅当您从网络应用程序中删除此元标记时,地理位置才起作用。也许这也是缓存问题的解决方法,我还无法测试它。但话又说回来:如果保存到主屏幕的 Web 应用程序更像本机应用程序,也许不再需要 cache.manifest?如果我了解更多信息,我会在这里报告。

EDIT2:

好吧,经过一些测试,网络和苹果都没有提供有用的提示,我至少发现了一些东西:当我删除

<meta content="yes" name="apple-mobile-web-app-capable" />

从网站上来看,一切当然都工作正常,因为就像你打开 Safari 一样,到目前为止我没有遇到任何问题。所以我的兴趣是让它在没有浏览器的情况下工作。如上所述,缓存仅达到 99%,然后我收到缓存大小配额超出错误。然后我关闭了主屏幕应用程序并再次打开它。现在缓存下载再次开始并完成得很好!没有冻结,没有错误!一切似乎都存储在本地。今天我只能在 iPad 模拟器上进行测试,但我希望稍后拿到我们的设备后能够尽快确认这一点。

因此,看起来不是询问您是否要增加缓存大小,而是得到缓存大小配额超出错误。也许因为现在主屏幕应用程序的数据存储处理方式不同,您不必再手动增加缓存大小(这当然纯粹是猜测)。不过,如果是这样的话,应该不会有任何错误。因此,您不必被要求增加缓存大小,而必须打开主屏幕应用程序两次,顺便说一句,这是一个非常蹩脚的解决方法......

EDIT3:

我只能在真实设备上确认此行为:保存到主屏幕 -> 从主屏幕打开 -> 下载要缓存的文件 -> 最后缓存大小配额超出错误 -> 关闭主屏幕应用程序(按主页按钮) - > 再次重新打开它 -> 再次下载缓存文件 -> 这次没有错误 -> 一切都可以离线使用。

我还在装有 iOS 5 的设备上对其进行了测试,它按预期工作,没有错误。所以这绝对是 iOS 6 的问题。

其他人可以确认这种行为或错误吗?

EDIT4:

我偶尔有机会在 iOS 6.1.3 上测试这个 - 不幸的是仍然是相同的行为......


我发现以下链接很有帮助。它解释说,由于主屏幕应用程序现在像本机应用程序一样存储,因此它们有自己的存储/缓存。

地理定位在第一次迭代时有效,但从那时起就无法更新。

iOS 6 地理位置和本地数据存储 http://www.elevatedgis.com/blog/2012/09/21/ios-6-geolocation-and-local-data-storage/

“主屏幕应用程序中的数据现在像本机应用程序一样存储。每个本机应用程序都有自己的沙箱,用于存储、备份和恢复数据。在 iOS 6 之前,主屏幕应用程序与浏览器中运行的同一应用程序共享数据. 如果用户清除浏览器中的缓存,应用程序的主屏幕版本也会丢失数据。在 iOS 6 中,主屏幕应用程序的数据会像本机应用程序一样保存到沙箱中。备份和恢复会正确处理数据,并且清除浏览器中的缓存不会影响它们。”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇怪的行为与缓存。清单/离线使用网络应用程序保存到ipad ios6的主屏幕 的相关文章

  • CSS Overflow 属性在 iPad 中不起作用

    我正在为 iPad 设计一些 html 页面 在尝试像 yscroll auto 这样的 css 溢出属性时 iPad 中没有出现滚动条 内容也没有滚动 我在 ipad 模拟器和设备中尝试过 有没有其他方法可以实现这个属性 请帮帮我 提前致
  • 如何在 iOS 上捕获的视频中添加水印[重复]

    这个问题在这里已经有答案了 我想知道是否有人可以告诉我如何实现这一目标 如果一直在考虑几个解决方案 从捕获的视频创建单独的图像 然后将它们合并到每个图像中 然后创建一个新的 AVAsset 听起来有点复杂 您不觉得吗 合并2个视频 一个是透
  • 键盘滑回后 UIPopoverController 未移至原始位置

    我正在 iPad 中显示带有 UINavigation 栏的弹出框 在第二个视图中 我有一个可以显示键盘的 UISearchController 键盘将弹出窗口向上推 这很好 但是如果我现在按下 UINavigation 栏上的 后退 按钮
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie
  • 无法使用 SLComposeViewController 将图像发布到 Facebook?

    我想将图像发布到 Facebook 和 Twitter 我对 twitter 很满意 但对使用 SLComposeViewController 类的 facebook 不太满意 无需添加图像 我就可以将文本和网址发布到 Facebook 中
  • 如何从 lift webapp 读取文件

    我想在我的 lift 应用程序中读取 xml 文件 val data XML load new java io InputStreamReader new java io FileInputStream 文件名 编码 然而 我得到java
  • 强制隐藏详细视图后未调用 UISplitViewController willHideViewController/willShowViewController

    我有一个 iPad 应用程序 它使用 UISplitViewController 作为根控制器 我已经设置了委托 并且我正在使用 UINavigationController 作为 DetailView 它似乎工作正常 当特定视图控制器显示
  • Azure Web 角色中的网站项目

    我正在研究一个新的 ASP Net 项目 我们希望将其托管在 Windows Azure Web 角色中 该项目的技术要求之一是利用 ASP Net 的完整预编译选项 不可更新 单页程序集 Web Site项目模型 与 ASP Net 相反
  • 可接受的滚动 FPS 是多少?提高性能的技巧有哪些?

    我在许多 WWDC 视频中看到 您希望尽可能达到 60 0 FPS 以获得更好的平滑滚动体验 我有一个 UIScrollLView 它可以立即加载图像和几个表格视图 目前我的帧速率为 30 FPS 这是推荐 FPS 的一半 只是想知道对于加
  • Eclipse 中的 Java 简单电子邮件程序

    我想制作一个简单的程序 您可以从其中发送电子邮件命令行 我找到了这个教程 http www tutorialspoint com java java sending email htm http www tutorialspoint com
  • 如何在HTTP post中向PHP服务器发送多个参数

    我正在将 base64 字符串发送到 php 服务器 并且运行良好 现在我想以字符串形式发送另一个参数 谁能告诉我下面的代码中需要添加什么代码 下面的代码适用于单个参数 我们如何修改它的多个参数 NSData data UIImageJPE
  • bin 文件夹内任何文件的任何更改是否会导致 ASP.NET Web 应用程序中的应用程序回收?

    我知道在 ASP NET Web 应用程序中 更改位于bin文件夹会导致应用程序回收 但我想知道 正如主题所暗示的那样 是否any文件更改会导致这种行为吗 此场景中是否包含简单的文本文件 那么子文件夹呢 bin文件夹 它们的内容呢 我知道我
  • Flipboard 动画

    有谁知道如何构建像 Flipboard 应用程序一样的翻转动画 谢谢 如果你指的是翻页过渡 请查看我编写的 OpenGL 过渡类 https github com epatel EPGLTransitionView https github
  • iOS 7 NS 单线程安全合并冲突

    重新排序两行后 在单线程应用程序上保存简单的数据时遇到问题 我已经成功地简化了编码以重现错误 并且希望其他人尝试这一点时得到第二个意见 这是一次健全性检查 因为我怀疑 iOS 7 引入的核心数据问题 而这在 iOS 6 中工作正常 首先 启
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS
  • iPad 何时清除库/缓存?

    为了响应 Apple 对 iOS 数据存储指南的更改 我最近重新配置了一个 iPad 应用程序 将其文档 50MB 存储在库 缓存文件夹中 在 iOS 模拟器中进行测试期间 当我模拟更新时 遵循 Brad Larsson 的建议 https
  • Cloud Foundry 解释

    所以我一直在阅读 Cloud Foundry 但我仍然对它是什么感到困惑 无论如何 这是我对 CF 上的 PaaS 的看法 希望你们能告诉我我是否错了 并更好地解释一下 Microsoft Azure 或 Google AppEngine
  • 为什么使用 UIImageJPEGRepresentation 方法通过 writetofile 保存的 .jpeg 文件大小比 ios 中的 UIImageWriteToSavedPhotosAlbum 大

    我正在尝试拯救一个UIImage设备中 jpeg 文件的对象 我正在使用这段代码 void saveImageToDocumentsDirectory UIImage mimage withFileName NSString fileNam
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • 如何将 Cocoa 应用程序移植到 iPhone-OS?

    我即将创建一个 Cocoa 应用程序 我想确保有一天我可以轻松地将它移植到 iPad 甚至 iPhone 我该如何提前计划 我知道我将不得不重做所有 NIB 并可能设计一个不同的工作流程 但是代码呢 仅仅用 UIsomething 替换每个

随机推荐