我使用了所有推荐的Safari链接和meta标签创建了一个webapp,例如。

<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的较新版本中,显示在主屏幕上的Apple Touch图标与网站上的其他任何内容一样都被缓存。通过简单地更改图像名称,它将迫使主屏幕快捷方式在下次启动快捷方式时刷新图标。

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

我为解决此问题(在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 - 将webapp添加到主屏幕后,是否可以强制iphone/ipod更新apple-touch-icon?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4587882/

10-11 14:54