Pull to refresh
8
0
Камо Сперцян @sc_pro_ion

Android/React-Native разработчик PROFI.RU

Send message
Да, действительно. Спасибо, поправил! Интересно, как она просочилась, потому что я копировал куски реального кода)
Да, в данном случае пример кода иллюстрирует саму проблему, а не её решение
Статья другой направленности, поэтому я просто вскользь указал про предпосылки.
В нашем случае это был компромисс между скоростью продуктовой разработки и производительностью приложения. Вектор был в сторону первого, и второе до поры до времени не страдало. Причин этому несколько, начиная с того, что новое приложение могло просто оказаться бесполезным, и заканчивая тем, что часть разработчиков вообще не имела опыта разработки на JS и React Native. По мере того, как мы убеждались в востребованности приложения и набирались опыта, вопросы производительности стали выходить на первый план, и теперь мы, разумеется, следим и за этим тоже.

Я не считаю, что мы допустили ошибку в распределении ресурсов. Done is better than perfect.
Можно использовать Profiler, встроенный в React Native, он делает раскадровку по 1/60 сек в проекции на потоки, на которой видно, какой процесс занимает больше отведённого времени. FPS в данном случае это индикатор проблемы. На своём примере могу сказать, что даже просадка до 45 FPS даёт себя почувствовать.
Вы имеете ввиду альфу нашего приложения? Оно шло в параллели с основным (нативным) приложением, как дополнительный вариант, в котором мы тестировали некоторые продуктовые гипотезы. Мы не ставили себе целью сразу сделать полноценное и оптимальное приложение. И трафика в нём тоже было мало. Поэтому, по мере развития закономерно дошли до точки, в которой уже стоило задуматься о производительности, чем мы, собственно, и занялись.

Сейчас мы взяли вектор на качество, поэтому активно занимаемся ускорением. Готовлю статью на эту тему, скоро появится на хабре.

Получились следующие цифры:
  • 75% пользователей, которые оставили заказ в Instant App, нажали на кнопку «Скачать приложение»;
  • из них 84% действительно установило приложение и запустило его.
Да, требуется, чтобы основное приложение поддерживало как минимум все устройства, которым доступен Instant App. Проще говоря, не должно быть ситуации, когда пользователь попадает в Instant App, но потом не может скачать основное приложение. При этом обратное неверно. Instant App может поддерживаться некоторым подмножеством устройств, которым доступно основное приложение.

Вы вполне можете ограничить доступность Instant App версией Android 8.0+ и не задумываться о миграции данных (если в обоих приложениях используются одноимённые файлы Shared Preferneces), а основное приложение выпускать, скажем, под Android 4.4+. Но на самом деле миграция пишется достаточно просто, я бы не стал ограничивать из-за этого аудиторию.
В нашем случае вручную. Это не критично потому, что функциональность, которая вынесена в Instant App, законченная, протестированная и достаточно новая. Уже прошло несколько месяцев с релиза, а необходимости обновлять приложение не появилось. Хотя, конечно, некоторые неудобства в этом есть.

По поводу OpenGL — да, кажется, нет необходимости подключать всю библиотеку. Здесь я задавал свой вопрос по этой проблеме, и в комментарии к ответу предложили вариант устранения без подключения зависимости, но я его не пробовал. С помощью ProGuard приложение уверенно поместилось в 4 МБ со всеми зависимостями.
Спасибо!

Конечно, возможность есть. Мы у себя трекаем в аналитику запуск Instant App, нажатие на кнопку «Скачать приложение» в Instant App и запуск установленного приложения после установки из Instant App (проверяю по наличию Cookie) и по этой воронке смотрим конверсию в скачивание. Конкретные значения смогу завтра узнать у аналитиков, но в целом конверсия очень неплохая.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity