Сервисы Laugh Radiant
8 051

Разбор приложения «Рокетбанк ИКС» от «Рокетбанка»

Новое приложение тяжелее примерно в два раза, 130 МБ ушло на графику и картинки, часть картинок подгружается из облака, но есть и плюсы.

В закладки
Аудио

На моём телефоне остались последние два гигабайта свободного места, и экономить приходится на каждом мегабайте.

Учитывая, что старое приложение «Рокетбанка» неоптимизированно и изобилует лишними файлами, я, как только узнал, что он выкатил новое приложение, сразу же побежал смотреть, что там с размерами и оптимизацией.

Ну и было любопытно, перекочевали ли фотки Саши Грей из старого приложения или нет.

Качаю и не верю глазам

Размер .ipa-архива почти полгигабайта.


Хм. Карточка приложения в iPhone заявляет о 270 МБ.

Старое приложение занимает гораздо меньше места.

Несмотря на наличие всех изображений в самой программе и мусор, но об этом чуть ниже

Итак, открываю .ipa-архив «Рокетбанка ИКС» и лезу в папку приложения, разработчики назвали её Serenity.

Обнаруживаю, что внутри отсутствуют изображения и графические элементы (PNG, JPG, SVG, PDF), за исключением нескольких вариаций иконки программы, выбрать которую можно в самой программе.

Туплю, поэтому ещё раз проверяю размеры приложения.

Натыкаюсь на списки банкоматов.

Иконки банков подгружаются из облака

Попутно нахожу ещё несколько других отсылок к облаку.

Например, вот такая картинка весит 670 КБ и льётся в телефон из облака.

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

Но где же остальная графика и куда делось место

Всё ещё туплю, начинаю измерять пространство.

Основной массив пришёлся на плагины — 177 МБ, их там пять:

  • Notification_Content.appex — 33,9 МБ;
  • Notification_Service.appex — 40,4 МБ;
  • Siri_UI.appex — 39 МБ;
  • Siri.appex — 37,3 МБ;
  • Widget.appex — 36,8 МБ.

Вся «пропавшая» графика нашлась в Assets.car и занимает 130 МБ, большая часть из которых — это растровые PNG-дубликаты системных эмодзи.

¯\_(ツ)_/¯

130 мегабайт картинок, Карл

В самом приложении некоторые текстовые элементы дополнены эмодзи, но зачем все остальные — годзиллы, автобусы, скрипки, лошадки, паровозики, барабаны… Где бы я мог их там применить, осталось загадкой, не знаю, зачем они в таком количестве. Возможно, это нужно в «Зовите друзей», но я не давал доступ к контактам, поэтому проверить не смогу.

Немного о дизайне

В целом остаётся приятное впечатление, а вот по мелочам ко многому есть претензии.

Персональные данные скрыты

На личной странице, секция рекламы мерча от «Рокетбанка» расположена в начале, а вот до наиболее значимых секций аналитики, карты банкоматов и курса валют придётся скролить до самого конца.

Причём «карта банкоматов» без доступа к геолокации не открывается, но можно обойти это ограничение через: третий экран → «Пополнить» → «Наличными». Откроется чёрно-белая карта Google.

Я долго не мог понять, зачем на каждой странице внизу справа висит иконка «Избранное» (сердечко) и что мне в это «Избранное» помещать.

Хотел спросить назначение у поддержки, изучил всё приложение, но так и не нашёл кнопки для связи, поржал, что они забыли добавить чат.

Минут через 15 ещё раз полез в приложение, случайно нажал на «Избранное» (сердечко), и там обнаружился чат с поддержкой, лол.

Из плюсов

Секция «Оплатить» здесь разбита на категории (телефон, интернет, ЖКХ, и так далее). В старом приложении всё находится в одной общей простыне и даже не по алфавиту, поиск глючит, скролить не айс. Тут лучше.

Секция «Аналитика» здесь более информативна.

Комментарии в AppStore.

Да, свой фон поставить нельзя, выжигайте глаза белым

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

Послесловие.

Я ни разу не программист и даже не технарь, ничего в программостроении не понимаю. Поэтому я ничего не понимаю.

Моё мнение может не совпадать.

#рокетбанк

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Laugh Radiant", "author_type": "self", "tags": ["\u0440\u043e\u043a\u0435\u0442\u0431\u0430\u043d\u043a"], "comments": 58, "likes": 36, "favorites": 13, "is_advertisement": false, "subsite_label": "services", "id": 61068, "is_wide": false, "is_ugc": true, "date": "Thu, 14 Mar 2019 04:08:10 +0300" }
{ "id": 61068, "author_id": 257598, "diff_limit": 1000, "urls": {"diff":"\/comments\/61068\/get","add":"\/comments\/61068\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/61068"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 200396 }

58 комментариев 58 комм.

Популярные

По порядку

Написать комментарий...
8

Старое приложение занимает на порядок меньше места

Порядок - это 10 раз.

Вес старого приложения явно не в 10 раз меньше нового

Ответить
2

Даже ии понимает устойчивые выражения..

Ответить
5

К счастью, я не ии

Ответить
–2

Зависит от системы исчисления )
У программистов порядок зачастую - это 2 раза.

Ответить
4

Я программист. Для меня порядок - это 10 раз

Ответить
0

Глянул ваш Твиттер, я все понял, претензий не имею.

Ответить
0

Тоже хотел про это написать, но автор сказал что он не прогер :D

Ответить
6

в старой приложухе чатик тоже был обозначен сердечком

Ответить
2

Почему не написали про React Native как технологию? Клиенты должны знать, что мобильные разработчики втянули сырую библиотеку. Самое простое, что получии злоумышленик имея девайс и сделав jailbreak, это персональные данные из приложения в незашифрованном виде(погуглите сколько RN вываливает во временные файлы), также они скорей все упростили обход экрана пароля, даже на нативных аппах у всех банков с этим проблемы, ссылка на тайм код https://youtu.be/xZzhsucwaso?t=360

Ответить
1

Как обойдешь экран входа или сможешь запустить с jailbreak, напиши ;)

Ответить
4

Запустил. Проверка на jailbreak с первой строчки гугла обходится в два клика :)

Ответить
1

И да, в чем смысл проверки? Псевдобезопасность?

Ответить
2

Наивно думать, что джейл победим. Палитесь что вы разработчик уровня Junior)) На изи запускается, можно еще обход пароля порисерчить, но дырявость и так очевидна

Ответить
0

Вот это да! Какой вы мамкин хакер. А если еще накатить Charles с сертификатом, то можно достать любой запрос из любого приложения! Рокет, Тинькофф, Яндекс.Такси, Uber Russia и тд и тп.

Ответить
3

На моём телефоне остались последние 2 гигабайта свободного места и экономить приходится на каждом мегабайте

Перенесите приложения на карту памяти

=)

Ответить
0

Да я стебусь просто ;)
Над ограничениями

Ответить
3

По безопасности тоже все весело. Кэш сетевых запросов лежит в открытом виде, можно достать как минимум баланс карты:

Ответить
0

А еще там какой-то токен, привязанный к карте, по всей видимости (закрашен красным), выглядит как sensitive data

Ответить
3

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

Ответить
0

а вот и дампы RN

Ответить
3

Лента лагает как скотина, ощущение что даже 30 фпс не всегда держит. И какой смысл было тащить React Native в приложение, если все равно большая его часть написана нативно, разработка у вас заняла довольно долго и до сих пор нет андроид версии?

Ответить
0

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

Ответить
–9

А не проще ли купить новый телефон, чем тратить столько времени на такой вот анализ?

Ответить
5

о вы гуманитарий

Ответить
1

Дешевле сменить банк)

Ответить
0

Почистить память так-то и, если айфон с недостатком нужного количества памяти, арендовать место на айклауде

Ответить
2

С графикой на айосе всегда была жопа. Писали приложение на 3 оси - айос порядка 50мбайт, винфон меньше 10, андроид 20 с чем-то.

Ответить
0

XCode кстати оптимайзит PNG-ехи, ну на андроид наверное у вас SVG был

Ответить
0

Вот так вот херово оптимайзит, значит. Вообще растровые контролы - это каменный век. Они до сих пор такие?

Ответить
0

Растр быстрее рендерится) скорость за счет места на диске

Ответить
0

Даже на винфонах 2011 года хватало скорости на вектор.

Ответить
0

Там скорее всего меньше слоев было

Ответить
1

Картинки всех эмодзи нужны, чтобы ставить их на заставку счёта
Там можно выбрать любое

Ответить
3

Для чего это нужно?

Ответить
0

Такой стиль у приложения

Ответить
2

Ради вот этой вот рюшечки в углу? Серьезно?
Ну допустим.
А использовать кодовые юникод обозначения типа U+1F618, не судьба? Тем более что они встроены в систему. Я не понимаю.

Ответить
0

думаю проблема в том, что на дурацком андроиде они убогие

Ответить
0

Но ведь приложение айосное

Ответить
2

так они одни и те же сорсы пихнут везде, че ты думаешь)

Ответить
0

Так я намекнул, что можно разделять)

Ответить
0

Попробуй увеличить размер встроенного эмодзи до аналогичного в приложении и посмотреть на разницу в качестве

Ответить
0

Попробовал.
размер оригинальных эмодзи 160x160 px
размер эмодзи в приложении 200х200 px
думаете -20px с каждой стороны сильно бы всех расстроило?

Ответить
3

Использование Емодзи запрещено Яблоком. См. Apple HIG

Ответить
0

На ретина экране размер надо умножать на 3.
То есть чтобы 200х200 эмодзи отображался хорошо, нужен ассет размера 600х600

Ответить
0

А точно встроенные в систему эмодзи не векторные?

Ответить
0

они уже ретина умножены до 200

Ответить
1

Для этого как раз используются системные, а вы бы обратили внимание на анимации при переводах и других операциях ;)

Ответить
1

Спасибо за разъяснение, я как раз только что сделал покупку и человек в костюме мне станцевал.
Это всё ради вот этого?
Скажите, а была возможность использовать скажем спрайты или .apng? чисто технически возможно? помогло бы это сократить "вес" приложения?
Я же правильно понял что вы имеет отношение к этому приложению?

Ответить
1

Скажу что будем ещё оптимизировать. Спрайты уже юзаем в вебе 😉

Ответить
1

Я сейчас подумал, вместо генерации анимации из всех этих png-х, сделали бы видосики, как на приветствии, и вес у них был бы 1-2 МБ каждый (они же секундные), и маштабируемость на любые экраны. похудели бы на ~ сотню-другую.

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

Ответить
1

Telegram X, SpaceX, Яндекс Икс(тиц).
В рокете следят за трендами

Ответить
0

Может теперь кодят в Киви сами?

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Нейронная сеть научилась читать стихи
голосом Пастернака и смотреть в окно на осень
Подписаться на push-уведомления
{ "page_type": "default" }