it-swarm.com.ru

iOS Сохраняя старый экран запуска и значок приложения после обновления

У меня есть приложение, в котором я недавно заменил образы запуска и значки приложений, я удалил все старые ресурсы из любого места в проекте. Когда я обновляю приложение со старой версии до новой, просто встроив xcode, все в порядке. Однако, если у меня установлена ​​старая версия моего приложения, затем обновите ее с testflight, каждый раз, когда я убиваю приложение, а затем перезапускаю его, на короткое время появляется старое изображение запуска, прежде чем показывать новое изображение запуска. Точно так же, когда я закрываю приложение, значок старого приложения кратковременно мигает, прежде чем вернуться к моему новому. 

Я открыл приложение с помощью iExplorer и заметил, что в каталоге/Library/Caches/Shapshots есть изображение старого экрана запуска (я не знаю, как и почему оно туда попало). Когда я удаляю его вручную через iExplorer, он перестает появляться. Однако, когда я пытаюсь удалить его с помощью кода, используя методы NSFileManager, я получаю сообщение об ошибке, в котором говорится, что мне запрещено удалять файлы в этом каталоге. 

Кто-нибудь сталкивался с этим раньше и есть какие-либо советы?

99
lramirez135

Я смог надежно очистить кеш трамплина для тестирования изменений образа запуска, выполнив это:

  1. Удалить ваше приложение с устройства
  2. Выключите устройство
  3. Включите устройство, установите и запустите приложение.

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

205
Brian Trzupek

Эти кеши используются Springboard для быстрого переключения приложений. Это не проблема, которая повлияет на ваших производственных пользователей и теоретически должна исчезнуть в следующий раз, когда Springboard решит сделать снимок вашего приложения.

При этом, это не проблема, которую вы можете решить. Это ошибка в коде Apple, а не ваша.

30
InkGolem

Для симулятора просто Reset Contents and Settings...

22
Murray Sagal

@InkGolem  

Это не проблема, которая повлияет на ваших производственных пользователей

правда.  

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

12
chinnawatp

Я нашел обходное решение: если вы действительно хотите решить эту проблему ... У Apple есть несколько механизмов для кэширования изображений экрана запуска, которые индексируются по имени файла изображения.

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

Запустите снова, вы увидите новые изменения.

10
Yu-Sen Han

Удалите приложение, перезагрузите телефон и снова установите приложение ... Это на самом деле исправлено в моем случае.

8
Ankit Pundhir

Я также столкнулся с той же проблемой. Это происходит потому, что симулятор/iOS-устройство кэширует образ запуска, когда мы впервые запускаем приложение. Я добавляю некоторую модификацию в ответ Брайана Тшупека.

  1. Удалить набор изображений из ресурсов Xcode (например, launch_image)
  2. Добавьте новый набор изображений и добавьте изображения к нему.
  3. Выключите и включите устройство iOS. (Сброс содержимого и настроек для симулятора).
  4. Очистите папку сборки Xcode (нажмите Command + Option + Shift + K).
  5. Удалить приложение с устройства/симулятора (если доступно).
  6. Беги снова.
4
A.G

Это сработало для меня: http://arsenkin.com/launch_screen_image_cache.html

Опять же, благодаря теме, на которую я ссылался выше, я нашел способ Решите эту проблему - назовите ваше новое изображение иначе, чем там было раньше, если ваш новый имеет то же имя, что и старый, и поместите его из папки * .xcassets в каталог проекта и ссылаться на него в вашем UIImageView. И это все. Звучит глупо легко, но о боже, сколько ярости у меня было.

3
JERC

Просто подключите ваше устройство, перейдите в Xcode> Window> Devices> Your device, Теперь в установленных приложениях, выберите ваше приложение, щелкните правой кнопкой мыши и загрузите контейнер, перейдите к созданному файлу, щелкните правой кнопкой мыши, Показать содержимое пакета, AppData, Library , Кэширует и удаляет файлы . Теперь перейдите в Xcode> Window> Devices> Your device> ваше приложение и щелкните правой кнопкой мыши, чтобы заменить контейнеры.

3
user6312715
  1. Удалить ваше приложение с устройства
  2. Выключите устройство
  3. Включите устройство
  4. Установите и запустите приложение.
2
Jone Ren

Итак, я разобрался с проблемой. В предыдущей версии моего приложения мы использовали Launch Screen XIB. Где-то при разработке этой новой версии xib был удален и заменен только статическими изображениями запуска. 

Решение заключается в использовании XI Launch Screen. Я заметил, что в тот момент, когда я впервые использовал xib стартового экрана, файл, сохраненный в каталоге моментальных снимков, был заменен снимком xib. 

1
lramirez135

Xcode 10/iOS 12

Попробовав все вышеперечисленное, мне пришлось удалить изображение с LaunchScreen и заменить его новым.

0
ahbou

Была и эта проблема. Будучи новичком, я наивно изменил LaunchScreen.storyboard на LaunchScreen.xib. Запуск не удался (да), поэтому я изменил его на .storyboard, перезапустил приложение, просто чтобы проверить, что я больше ничего не испортил - и старый экран не появился первым. Так что, что бы я ни делал, это должно было стереть старый кеш. 

0
richard s. hill

@Chino

@InkGolem

Это не проблема, которая повлияет на ваших производственных пользователей реально.

Я столкнулся с этой проблемой, когда я изменил свой Launch Screen, SplashScreen и App Значок. Я перепробовал каждый метод, но он не работал. Наконец, я только что опубликовал свое приложение и загрузил мое приложение из магазина приложений с устройства, которое я не использовал для развития. SplashScreen и значок приложения работают как обычно !!!

На этом устройстве была установлена ​​предыдущая версия? Я полагаю, что это то же самое, что и приведенные выше ответы о том, чтобы удалить и переустановить или удалить, перезапустить и переустановить. 

У меня та же проблема, и это касается устройств для разработки и производства, с симулятором и из магазина приложений. Я также смог воссоздать проблему с помощью симулятора. Сначала я запускаю симулятор с предыдущей версией своего кода, затем запускаю симулятор с более поздней версией. В обоих случаях старый стартовый экран переносится. В симуляторе удаление снимка не работает, так как он просто воссоздается. Когда вы закрываете приложение, нажимая кнопку «Домой», создается новый снимок с более старым экраном запуска. Теперь ... если я удаляю старую версию приложения с телефона или симулятора, а затем устанавливаю с помощью xcode или магазина приложений, экран запуска обновляется должным образом. Однако это не идеальное решение для конечных пользователей.

Кто-нибудь придумал решение, которое не включает удаление предыдущего приложения с телефона?

Я попытался: Переименование xib-файла LaunchScreen Переименование изображений, используемых LaunchScreen Добавление пустого изображения в screen.window в applicationDidEnterBackground, чтобы скрыть экран перед снимком

Добавляя перерыв [application didFinishLaunchingWithOptions], я вижу, что старый LaunchScreen появляется до вызова didFinishLaunchingWithOptions.

0
dschlabach

Что сделал работал на меня:

  • Удалите контроллер сцены и вида на LaunchScreen и создайте новый (убедитесь, что вы установили его как «Начальный контроллер представления» в Инспекторе атрибутов).

Что сработало нет у меня работает: 

  • Удаление приложения
  • Перезагрузка iPhone, Mac или Xcode
  • Удаление полученных данных
  • Удаление контейнера устройства
  • Очищающий
  • Горящие 3 куклы Стива Джобса Вуду
0
Daniel Springer

Честно говоря, я не рискнул начать жить, не будучи уверенным, будет ли это обновлено или нет.

Итак, если вы используете xcassets, простое решение:

  1. Удалить старый набор изображений 
  2. Создайте заново один с другим именем и добавьте свои изображения заставки
  3. Обновите раскадровку, чтобы использовать эту «новую» ссылку на набор изображений

Это обязательно обновит! (Я даже протестировал с приложением, уже установленным на устройстве). Нет необходимости чистить кэш устройства или около того.

0
hico

Попробуйте открыть симулятор, зайдя в Оборудование -> Стереть все содержимое и настройки.

0
Tigran Iskandaryan