Обновилось приложение на iOS? — Не беда, откатим

в 12:18, , рубрики: apple, charles, iOS, ipa, itunes, MacOS, proxy, откат программы

Пока интернет бурлит новостями на тему обхода блокировок телеграма и сопутствующих с этим проблем у хостинговых компаний у меня была проблема посерьёзней — компания Innologica обновила до версии 6 приложение Inoreader для iOS.

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

Можно сравнить как было и как стало в двух примерах:

Обновилось приложение на iOS? — Не беда, откатим - 1


Конечно, на вкус и цвет и владельцы iPhone X были явно рады оптимизации под amoled-экраны, но именно этот апдейт побудил искать решения как откатить приложение назад, чего по умолчанию AppStore не позволяет делать.

Раньше достать 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.

Что мы будем делать дальше?

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

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

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

Обновилось приложение на iOS? — Не беда, откатим - 2

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

Обновилось приложение на iOS? — Не беда, откатим - 3

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

Обновилось приложение на iOS? — Не беда, откатим - 4

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

Обновилось приложение на iOS? — Не беда, откатим - 5


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

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

Обновилось приложение на iOS? — Не беда, откатим - 6

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

Обновилось приложение на iOS? — Не беда, откатим - 7


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

Обновилось приложение на iOS? — Не беда, откатим - 8

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

Обновилось приложение на iOS? — Не беда, откатим - 9

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

Обновилось приложение на iOS? — Не беда, откатим - 10

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

Обновилось приложение на iOS? — Не беда, откатим - 11

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

Обновилось приложение на iOS? — Не беда, откатим - 12


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

Обновилось приложение на iOS? — Не беда, откатим - 13

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

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

Обновилось приложение на iOS? — Не беда, откатим - 14


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

Обновилось приложение на iOS? — Не беда, откатим - 15

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

Обновилось приложение на iOS? — Не беда, откатим - 16

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

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

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

Автор: Андрей

Источник

Поделиться

* - обязательные к заполнению поля