Приложение падало на старте. Мы теряли 5% пользователей. Разбор кейса FanBattle

После одного из релизов у FanBattle приложение перестало открываться у части пользователей. Проблема затронула около 5% аудитории. Баг исправили быстро, но пользователи не могли даже узнать, что вышла новая версия — приложение падало раньше, чем успевал появиться интерфейс. Разбираем, как команда решила проблему через раннюю инициализацию SDK и force update.

https://habr.com/ru/articles/1009114/

#mobile_development #mobile_apps #force_update #release #product_management #product_management

Приложение падало на старте. Мы теряли 5% пользователей. Разбор кейса FanBattle

Что произошло У команды FanBattle после одного из релизов случился инцидент. У 5% юзеров приложение перестало открываться. Они нажимали на иконку, видели сплэш-скрин и почти сразу получали белый экран...

Хабр

Не Vibe-Coding, а инженерия с AI: как я за полгода сделал Android-приложение: социальный трекер привычек

Не Vibe-Coding, а инженерия с AI: Как за полгода я сделал Android-приложение "Трекер привычек" с социальными функциями, синхронизацией, офлайн-режимом и виджетом

https://habr.com/ru/articles/1005684/

#android #kotlin #jetpack_compose #room #firebase #offlinefirst #mobile_development #mobile_architecture #ai_in_development #vibecoding

Не Vibe-Coding, а инженерия с AI: как я за полгода сделал Android-приложение: социальный трекер привычек

В какой-то момент мне прилетел баг-репорт, который идеально описывает боль social/mobile приложений: > «Я поставила в групповой привычке “выходной”, потом нажала “возобновить” и выполнила. У меня...

Хабр

Как слить токен авторизации через виджет iOS — и как этого не допустить

Если вы разрабатываете iOS-приложение с виджетом, Watch-компаньоном (это приложение для Apple Watch, которое работает в паре с основным приложением на iPhone) или Share Extension - рано или поздно вам придётся передавать данные между процессами. App Groups - стандартный механизм для этого, и на первый взгляд он прост: добавил capability, написал UserDefaults(suiteName:) , поехали. Но именно эта кажущаяся простота и создаёт проблемы. Данные лежат в незашифрованном контейнере, любое приложение из вашей команды может их прочитать, а валидация входящих данных почти никогда не делается. Давайте же рассмотрим, как правильно настроить App Groups, что реально можно туда класть, какие риски существуют и как организовать безопасный обмен (в том числе с примером передачи токена авторизации между приложением и виджетом). Продолжим

https://habr.com/ru/articles/1002244/

#ios #swift #swiftui #apple #mobile_development #security #data #мобильная_разработка #мобильные_приложения

Как слить токен авторизации через виджет iOS — и как этого не допустить

Если вы разрабатываете iOS-приложение с виджетом, Watch-компаньоном (это приложение для Apple Watch, которое работает в паре с основным приложением на iPhone) или Share Extension - рано или поздно вам...

Хабр

Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0

Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0 Привет, Хабр! Продолжаю серию о разработке Todo Budget — Android-приложения, объединяющего задачи, бюджет, заметки и помодоро-таймер в одном месте.

https://habr.com/ru/articles/1003034/

#android #kotlin #jetpack_compose #room #mobile_development

Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0

Привет, Хабр! Продолжаю серию о разработке Todo Budget — Android-приложения, объединяющего задачи, бюджет, заметки и помодоро-таймер в одном месте. В прошлой статье я рассказывал о создании приложения...

Хабр

Ваше iOS-приложение не закончено, если им не может пользоваться незрячий: Гайд по Accessibility

Как превратить ваше приложение в инклюзивный продукт, который используют ВСЕ - от слабовидящих до людей с когнитивными нарушениями. Плюс секретные фишки, о которых молчит документация Apple. Это руководство создано не для того, чтобы вы просто поставили галочку в Jira. Мы поговорим о том, как код может стать мостом или стеной для миллионов людей. Продолжим

https://habr.com/ru/articles/1002142/

#swift #swiftui #uikit #accessibility #voiceover #mobile_development #mobile_design #доступ #apple

Ваше iOS-приложение не закончено, если им не может пользоваться незрячий: Гайд по Accessibility

Как превратить ваше приложение в инклюзивный продукт, который используют ВСЕ - от слабовидящих до людей с когнитивными нарушениями. Плюс секретные фишки, о которых молчит документация Apple. Почему...

Хабр

Магия вне Хогвартса: как делать «дорогой» UI, не перегружая GPU

Часто можно увидеть такую картину: разработчик влюбляется в концепт из Dribbble, тратит два дня на реализацию сложнейшей цепочки переходов, а потом удивляется, почему его iPhone 15 Pro начинает греться через пять минут использования приложения. Анимация - это всегда сделка с дьяволом (железом). Вопрос лишь в том, насколько выгодный курс обмена вы сможете выторговать. Продолжим

https://habr.com/ru/articles/995538/

#ios #swift #swiftui #mobile_development #apple #uikit #iphone #xcode

Магия вне Хогвартса: как делать «дорогой» UI, не перегружая GPU

Часто можно увидеть такую картину: разработчик влюбляется в концепт из Dribbble, тратит два дня на реализацию сложнейшей цепочки переходов, а потом удивляется, почему его iPhone 15 Pro начинает...

Хабр

MVVM+Coordinator+Factory: Святая Троица внедрения зависимостей

Эта статья - финальный аккорд в нашей трилогии об архитектуре. Мы уже научились наводить порядок внутри экрана с помощью MVVM и управлять потоками переходов через Coordinator. Но остался один неудобный вопрос: кто создаст все эти зависимости? Если ваш Координатор превратился в свалку из десятка сервисов, которые он просто пробрасывает дальше, значит, пришло время внедрить Factory . Вы узнаете, как разделить создание объектов и управление ими, почему глобальные DI-контейнеры - это яд замедленного действия, и как построить систему, где каждый компонент получает только то, что ему нужно, не зная лишнего. Продолжим

https://habr.com/ru/articles/993738/

#ios #apple #mobile_development #swift #swift__разработка

MVVM+Coordinator+Factory: Святая Троица внедрения зависимостей

Эта статья - финальный аккорд в нашей трилогии об архитектуре. Мы уже научились наводить порядок внутри экрана с помощью MVVM и управлять потоками переходов через Coordinator. Но остался один...

Хабр

Сохранение позиции прокрутки и состояния курсора при переходах по навигации в iOS

Вы когда-нибудь замечали разницу между просто хорошим приложением и тем, которое ощущается «родным», надежным и дорогим? Часто дело не в дизайне или анимациях, а в мелочах, которые мы воспринимаем как должное, пока они не ломаются. Одна из таких критических мелочей - способность приложения помнить, где вы остановились. Вы читаете длинную статью, сворачиваете приложение, чтобы ответить на сообщение, возвращаетесь через минуту, а вас выбрасывает в самое начало текста. Раздражает, правда? Или пишете заметку, переключаетесь на браузер, возвращаетесь, а клавиатура скрыта и курсор потерян. В этой статье мы разберем, как технически грамотно реализовать сохранение позиции скролла и состояния курсора в iOS-приложениях. Мы уйдем дальше банальных советов и рассмотрим реальные сценарии с навигацией, табами и асинхронной загрузкой данных, чтобы ваши пользователи никогда не чувствовали себя потерянными. Продолжим

https://habr.com/ru/articles/991164/

#swift__разработка #uikit #ios #ios_development #mobile_development #мобильная_разработка

Сохранение позиции прокрутки и состояния курсора при переходах по навигации в iOS

Вы когда-нибудь замечали разницу между просто хорошим приложением и тем, которое ощущается «родным», надежным и дорогим? Часто дело не в дизайне или анимациях, а в мелочах, которые мы воспринимаем как...

Хабр

Оптимизация и запуск нейронных сетей на React Native: кейс с травой

Во время длинных новогодних выходных я решил заняться новым пет-проектом. Хотелось попробовать что-то интересное, связанное с нейронными сетями, и мне показалась новой для меня идея сделать приложение для распознавания растений, определения вида, возраста и их болезней прямо на мобильном устройстве без сервера, а потом рекомендация того, как лечить, ухаживать и прочее. В этой статье поговорим о том, что получилось: от выбора моделей до их оптимизации и интеграции в React Native, а также поделюсь своим открытым кодом запуска, обучения и экспортом моделей нейронных сетей в ONNX, и ссылками на датасеты и проекты с нейронными сетями для растений.

https://habr.com/ru/articles/983598/

#ai #mobile_development #plant #classification #растениеводство #open_source #детекция_болезней #мобильная_разработка #нейронные_сети #оптимизация

Оптимизация и запуск нейронных сетей на React Native: кейс с травой

Во время длинных новогодних выходных я решил заняться новым пет-проектом. Хотелось попробовать что-то интересное, связанное с нейронными сетями, и мне показалась новой для меня идея сделать приложение...

Хабр

От ощущений к цифрам: как мы внедрили метрики перформанса в андроид приложение

Всем привет! Меня зовут Тимур, я платформенный Android-разработчик с опытом 5+ лет в ритейле и e-com. В этой статье разберём, почему перформанс на мобильных устройствах это не ощущения, а фактор, который влияет на конверсию и GMV. Покажу, какие метрики имеет смысл собирать на клиенте, как их мониторить, и приведу примеры кода для Android. Присаживайтесь, наливайте чай/кофе — поехали.

https://habr.com/ru/articles/978170/

#performance #performance_optimization #kotlin #android #grafana #mobile_development #mobile_performance

От ощущений к цифрам: как мы внедрили метрики перформанса в андроид приложение

Всем привет, меня зовут Тимур android разработчик в платформенной команде с опытом около 5 лет, в основном в сфере ритейла и e-com. В какой-то момент мы поняли: пока перформанс не выражен в цифрах,...

Хабр