Можно ли заставить iphone / ipod обновить значок apple-touch после добавления веб-приложения на домашний экран? - PullRequest
14 голосов
/ 03 января 2011

Я создал веб-приложение, используя все рекомендованные ссылки и метатеги для сафари, например.

<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 пользователя получат обновленный файл после его обновления сохранено на их домашнем экране (я предполагаю, что это кэшировано так или иначе). Он работает, чтобы удалить веб-приложение с главного экрана и повторно добавить его. Но есть ли способ сообщить приложению, что оно должно обновить эти изображения, не требуя от пользователя удаления и повторного добавления?

Ответы [ 5 ]

17 голосов
/ 03 января 2011

Прошло несколько лет с тех пор, как на этот вопрос был задан / дан ответ, и я здесь, чтобы сообщить, что теперь это возможно!

В более новых итерациях iOS значок 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" />

Теперь вам не нужно ничего делать, только буквально перезаписать изображение, и все остальное произойдет автоматически.Когда вы изменяете изображение, измененное время изменяется и больше не соответствует тому, что пользователь имеет в кэше, поэтому оно вызывает новую загрузку.Просто!


СТАРЫЙ ОТВЕТ: Я провел тонну исследований в этой области, пытаясь найти способ.К сожалению, это невозможно.Его необходимо удалить и повторно добавить на домашний экран, чтобы использовать новый значок.

2 голосов
/ 28 октября 2014

Я только что проверил теорию на Iphone 5 и Ipad 2, и она сработала для обоих.Подобно иконке, вы можете заставить новую иконку тянуть, изменив href.Вместо href="/apple-touch-icon.png" я использовал href="/apple-touch-icon.png?ver=1.1", и при посещении сайта он тянул новый значок (без удаления и повторного добавления на домашний экран).

0 голосов
/ 06 марта 2012

В моем веб-приложении, если я просто заменил файл startup.png на новый, при первой перезагрузке приложения с главного экрана оно показывает старое изображение.Закрытие и повторное открытие приложения показывает новое изображение startup.png.iOS 4.2.1.Кстати, то же самое относится и к иконке.

0 голосов
/ 13 августа 2011

Удаление и повторное добавление веб-страницы / веб-приложения на домашний экран может оказаться недостаточным. Я просто пытался

  1. удалить закладку с домашнего экрана
  2. перезагрузить страницу в сафари
  3. добавить закладку на домашний экран

==> он по-прежнему показывает старый значок, который, кажется, где-то кешируется: (

0 голосов
/ 23 апреля 2011

Я видел, как обновляются иконки, но я не думаю, что это может повлиять на это обновление. Я заметил обновленные значки после перезагрузки телефона, но я недостаточно изучил его, чтобы сказать что-то убедительное.

...