Как понизить версию приложения из App Store без джейлбрейка
За счёт постоянных багов в новых версиях iOS даже те пользователи, у которых iPhone является «звонилкой», начали интересоваться процессом отката (даунгрейда) прошивок. Для открытых сборок он проходит элементарно, а для закрытых — невозможен. Но это касается исключительно мобильной ОС, с приложениями дела обстоят куда лучше. Без джейлбрейка, энциклопедических знаний и уймы времени можно легко понизить версию объекта App Store до желаемой. Необходимо только скачать правильную программу-помощник и следовать инструкциям, изложенным ниже.
Самые популярные причины для отката — это повышение требуемой версии ОС (как вариант, переход с iOS 6 на iOS 7) и умышленное вырезание разработчикам определённых функций. Как раз второй пункт и вынудил нас написать этот материал. В редакции AppStudio тепло отзываются о доступных и, в то же, время функциональных фитнес-браслетах Xiaomi Mi Band 1s, фирменное приложение которых со второй версии лишилось умного будильника, поднимающего вас с кровати в быструю фазу сна — серьёзная потеря, ведь некоторые покупали гаджет только ради комфортного пробуждения! В подобной ситуации можно либо ждать грядущего обновления, либо сделать даунгрейд, чем, мы, собственно, и займёмся.
Первым делом загружаем приложение Charles. Это отличный HTTP-монитор и прокси, позволяющий отслеживать любые запросы между клиентом и сервером, а также вносить в них собственные корректировки. Программа платная, но пробный период эксплуатации имеется, хоть и с периодическими всплывающими окнами ожидания и прекращением работы через каждые полчаса, поэтому будьте внимательны.
Запускаем iTunes и ставим на загрузку нужное приложение. Мы решили взять в качестве примера Moves (2.7.10).
Возвращаемся к Charles и смотрим на левое окно — там должна появиться строка, в которой есть слово «buy». Кликаем по ней правой кнопкой и нажимаем на «Enable SSL Proxying». Зрительно ничего не произойдёт, мы просто активируем перенаправление SSL-запроса.
Снова идём в iTunes и убиваем загрузку: щёлкаем на значок со стрелочкой в правом верхнем углу, кликаем по качающемуся приложению, а затем с зажатой клавишей FN 2 раза жмём Backspace, пока объект не исчезнет. Заодно не мешает очистить корзину.
Теперь снова вбиваем в поиск Moves (либо нажимаем на большую иконку приложения) и снова начинаем загрузку.
Опять залезаем в Charles и видим, что появилась вторая строчка с надписью «buy». Поэтому убиваем загрузку в iTunes тем же самым способом.
В Charles, в списке слева, разворачиваем вторую строку, где написано «buy», включая папку WebObjects. Там найдём файл buyProduct. Жмём на него правой кнопкой, из контекстного меню выбираем Export и указываем место сохранения (проще всего поставить Рабочий стол). Формат лучше выбрать XML Summary File, название — какое угодно.
Открываем сохранённый файл любым текстовым редактором (у нас Coda 2), листаем вниз и ищем строки, аналогичные этим:
<integer>6940998</integer>
<integer>10969069</integer>
<integer>11758907</integer>
<integer>12262840</integer>
<integer>12679839</integer>
Здесь содержатся маркировки всех версий приложения: вверху находится самая старая, а ниже идут более свежие. Вам нужно выбрать ту, до которой собираетесь откатиться: в iTunes зайдите на страничку приложения, нажмите «Показать все версии» и банально отсчитайте её. Скопируйте нужную версию, находящуюся между тегами <integer>.
Возвращаемся к Charles. Жмём на buyProduct и выбираем Edit.
Щёлкаем по кнопке Text в правом поле. На четвёртой строке располагаются теги <key>:
<key>appExtVrsId</key>
А под ними теги <string> и ключевое значение текущей версии приложения.
<string>816441851</string>
Замените число между этими тегами <string> тем, что скопировали в шаге выше, когда отсчитывали правильную версию. Нажмите Execute внизу.
Чтобы убедиться в правильности загружаемой версии, кликните по вкладке Response и пролистайте текст до тегов с обозначением <key>bundleShortVersionString</key>, под которыми и будет находиться текущая версия. Как видите, маркировка «0.9» говорит об успешности эксперимента. Но это ещё не всё.
Кликаем правой кнопкой по buyProduct и выбираем Breakpoints.
Заходим в iTunes, вбиваем в поиск приложение и загружаем его. Практически сразу загрузка приостановится, а на экране появится вот такое окошко.
Жмём на Edit Request, чуть ниже выбрав XML Text.
В пятую строку, между тегами <string>, нужно вставить версию, которую вы уже копировали и на которую желаете откатиться. Теперь давим на Execute.
Появится ещё одно окошко — опять жмём Execute.
Загрузка в iTunes должна продолжиться. В итоге в медиатеке появится старенькая версия приложения. Чтобы проверить её, перейдите в Мои программы, найдите там желаемый объект, кликните по нему правой кнопкой мыши и выберите Сведения. Там как раз и отобразятся текущие цифры, которые должны вас порадовать ;)
Обязательно удалите свежую версию с iPhone/iPad перед синхронизацией, а также неплохо было бы отключить автоматическое обновление программ в настройках iOS. Без лишней надобности можно и с Charles расстаться. На этом, пожалуй, всё. Удачных вам даунгрейдов ;)