我使用 safari 的所有推荐链接和元标记创建了一个网络应用程序,例如。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="apple-touch-startup-image" href="/startup.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-ipad.png" /> 
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-iphone4.png" />

然而,我的问题是,如果startup.png或任何apple-touch-icon图像文件在网络服务器上更新,用户的iphone或ipod似乎不会在将其保存到他们的设备后检索更新的文件。主屏幕(我猜它以某种方式被缓存了)。它可以从主屏幕中删除 Web 应用程序并重新添加它。但是有没有办法让应用程序知道它需要刷新这些图像而不需要用户删除并重新添加它们?

有帮助吗?

解决方案

自从问/回答这个问题以来已经有几年了,我在这里报告这是可能的!

在iOS的较新迭代中,在HomeScreen上显示的Apple Touch图标就像网站上的任何其他内容一样被缓存。通过简单地更改图像的名称,它将迫使房屋屏幕快捷方式在下一次启动快捷方式时刷新图标。

但是,要与Apple的命名约定保持一致,只要您希望将图标重新下载并继续调用图像,就可以将URL变量附加到参考 apple-touch-icon.png.

我为自动化此问题(在PHP中)所做的工作是将最后一个修改的日期/时间添加到图像。例如:

<link rel="apple-touch-icon" href="apple-touch-icon.png?m=<?php echo filemtime('apple-touch-icon.png'); ?>" />

这输出:

<link rel="apple-touch-icon" href="apple-touch-icon.png?m=1415832495" />

现在,您不必做任何事情,而是从字面上覆盖图像,其他一切都会自动发生。当您更改图像时,修改时间会更改,并且不再匹配用户在缓存中的内容,因此它会迫使新的下载。简单的!


旧答案: 我已经对此进行了大量研究,以找到一种方法。不幸的是,这是不可能的。需要将其删除并重新添加到主屏幕上,以便使用新图标。

其他提示

我刚刚在 Iphone 5 和 Ipad 2 上测试了一个理论,它对两者都有效。与 favicon 类似,您可以通过更改 href 来强制拉取新的 favicon。代替 href="/apple-touch-icon.png" 我用了 href="/apple-touch-icon.png?ver=1.1" 当访问该网站时,它会拉出新图标(无需删除并重新添加到主屏幕)。

只需添加我的小“工作”。已经尝试了各种校正到我的网站,以使图标在我自己的iPad上正确显示在我的书签中。后来发现,在那里的Apple产品上,较新的访问了我的网站,图标表现良好。我所有访问我的网站都是 http:// mysiteName(ref).dk 但是当我添加 http://www.mysitename(ref).dk iPad终于发现了这个新网站,并且在我的书签中找到并正确显示了Apple图标。 :-)雅各布

我已经看到图标已更新,但是我认为不可能以任何方式影响此更新。我注意到手机重新启动后更新的图标,但是我看不到任何结论性。

将网页/WebApp删除并重新添加到房屋屏幕上可能还不够。我只是试图

  1. 从HomeScreen删除书签
  2. 在Safari中重新加载页面
  3. 将书签添加到HomeScreen

==>它仍然显示了旧图标,它似乎已在某个地方缓存:(

在我的WebApp中,如果我只需更改启动文件。关闭和重新打开该应用程序显示新的startup.png映像。 iOS 4.2.1。顺便说一句,图标的相同apllies。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top