Как откатить обновление приложения на iOS

Случается так, что после обновления приложения для iPhone или iPad необходимо совершить «откат» и возникает вопрос как вернуться к предыдущей версии. Пользователь AndreyYu на geektimes.com решил вопрос.

Раньше достать ipa—файл приложения было делом 2 минут, достаточно было зайти на apptrackr и скачать, но он перестал работать и других подобных ресурсов дающих честно скачать ipa файл обнаружено не было (но вдруг вы такие знаете?).

Остались следующие способы получения старой версии приложения:

  1. У вас в iTunes лежит старый бэкап приложений с телефона и тогда можно просто скопировать приложение обратно (но у меня такого не было).
  2. Воспользоваться способом, описанным на скорую руку кем-то в интернете с помощью софта под названием Charles. Данный способ описан на ресурсах вроде 4dpa и пере-копирован множествами лиц без понимания что там вообще написано, однако, без дополнительных >100 грамм разобраться с этой писаниной сложно.

Возможно, я это сделаю более полно, с картинками и в более простой понятной форме. В общем, чтобы скачать софт старой версии из AppStore потребуется минут 5 времени и в моём случае Mac OS X. Способ явно будет работать и на Windows, т.к. приложение Charles есть и для этой системы.

Все ваши мучения начнутся ещё до того, как вы скачаете Charles. Дело в том, что если вы обновляете iTunes на Mac, то у вас будет отсутствовать возможность устанавливать приложения, начиная с версии 12.7. Чтобы её вернуть, нужно установить обратно версию 12.6.4.

Что делать дальше чтобы откатить обновление приложения на iOS

Коротко: загрузить приложение через AppStore в iTunes, затем включить прокси, затем загрузить ещё раз, отредактировать запрос, отправить запрос, получить старую версию, установить.

Подробно: после запуска Charles нужно установить сертификаты приложения в Mac. Это делается через меню Help → SSL Proxying → Install Charles Root Cetrificate. Сертификат затем нужно в Keychain Access перевести в статус Always Trust. Если не установить, то будут ошибки и метод не сработает.

В iTunes ищем приложение Inoreader (это для любого приложения подойдёт, но меня интересовало в тот момент только оно), запускаем Charles и нажимаем в окне установки приложения Download:

В окне Charles у вас появляется подобная строчка со слово «buy» в адресе, связанная с сервером apple:

Для информации можно обратить внимание на то, что размер скачиваемого файла равен 20,4 мб:

После чего нужно включить SSL Proxying для осуществления перехвата и редактирования запросов:

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

Ещё раз проверяем, что SSL Proxying включен и переходим к повторной загрузке приложения из AppStore при этом нужно поставить загрузку на паузу, чтобы у вас было время на следующие действия. После нажатия на Download в окне Charles появится ещё одна строка в сервером apple, содержащая слово «buy». Развернув эту строку нужно найти buyProduct:

Справа в окне нажимаем на Contents и внизу выбираем XML Text. Листаем вниз пока не найдем softwareVersionExternalIdentifiers со списком не понятным цифр.

Эти цифры и выступают в роли версий приложений. Соответственно, чем меньше число, тем старее версия приложения. Как узнать какая версия приложения будет загружена? Например, я наугад брал с конца списка значение 823964615:

Теперь нам нужно проверить версию приложения. Для этого мы делаем встаем на «buyProduct» и в меню выбираем Compose и справа в окне представление Text.

В самом верху поля будет знакомый вам набор цифр после параметра <key>appExtVrsId</key>. Этот набор цифр — актуальная версия приложения.

Вместо этих цифр подставляем скопированные выше 823964615 и должно получиться вот так:

и делаем Execute. Программа выдаст вам окно и выбрав режим отображения XML Text мы сможем внизу найти параметр bundleShortVersionString и увидим, что выбранное нами значение соответствует версии 5.4.4, что в моём случае то что нужно, т.к. эти версия практически последней перед обновлением до 6.0

Остаётся один шаг. Нужно скачать всё это дело. Для этого нужно в нашем последнем отредактированном запросе buyProduct с полученной версией 5.4.4 в меню выбрать Breakpoints.

По новой перейти в AppStore для загрузки приложения Inoreader (если приложение успело загрузиться в библиотеку и вы не успели его остановить, то просто удалите, чтобы была возможность загрузить заново).

Как только вы в iTunes нажмете скачать, то выскочит окно Charles, где нужно будет нажать на Edit Request и в уже знакомом параметре appExtVrsId исправить версию на 823964615, нажать Execute, а затем ещё раз на Execute.

В итоге у вас начнётся загрузка приложения и можно будет увидеть, что размер приложения изменился в меньшую сторону:

В библиотеке приложений itunes появится значок программы с ярлыком Update. Это и будет означать, что вы сделали всё верно. Можно сделать Get Info приложения и будет написано:

Дальше у приложения смотрим где оно находится в файловой системе и сохраняем на будущее если вдруг решите обновить приложение 🙂

По завершение работы следует в Charles сделать Disable SSL Proxying кликом на сервере p30-buy.itunes.apple.com.

Надо сказать, что получилось проделать у меня данную процедуру с 2 раза.
Надеюсь, это будет кому-то так же полезно как оказалось мне.

Источник geektimes.com | Автор

Комментариев: 3
  1. После включения SSL Proxying Айтюнс отказывается скачивать приложение, и выдает ошибку невозможно установить безопасное соединение. Сиситема Mac os H Sierra
    Как быть?

    • Судя по всему, проблемы на этапе запуска Charles. Возможно, вы не установили или не полностью установили сертификаты приложения в Mac.
      Попробуйте еще раз через меню Help → SSL Proxying → Install Charles Root Cetrificate. После чего сертификат Keychain Access перевести в статус Always Trust.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован.