#Аналитика в мобильных приложениях для разработчика - страшный сон архитектуры вашего проекта. Всё потому, что мы, как разработчики, уважаем #SOLID, инкапсуляцию и всё такое... А потом приходит аналитик, маркетолог и просят всякую дичь. Например поведение пользователя на экране в зависимости от предыдущего экрана. И вот прощай #инкапсуляция.
Статья на тему как встраиваю аналитику обычно я - в черновиках и в работе, а тем временем ребята из La moda рассказывают как это делают они: https://habr.com/ru/company/lamoda/blog/469761/.
Как бонус - пара слов об инструментах для аналитику мобильных приложений. Из того, с чем более-менее плотно сталкивался я, это
#Firebase #analytics (http://bit.ly/2OQwQoe)
Бесплатно и сердито. Можно строить воронки по событиям, но нельзя использовать параметры событий в нем. Атрибуция (понять от куда пришел пользователь) есть, но в Appsflyer проще. Можно выгружать "сырые" данные в #BigQuery. Это круто, удобно и все такое, но надо повозиться. Зато можно настроить любые графики, данные и все что можно себе представить.
#Appsflyer (https://lite.ms/mTmv5y)
Использовался в основном для атрибуций. Причем, говорят (не пробовал), есть атрибуция рекламы по ТВ. В интерфейсе воронки по событиям можно разделять на каналы. У ребят из моей команды были проблемы отправить в AppsFlyer события с сервера, чтобы следить за ЖЦ пользователя в разрезе клиент-серверного единого пространства.
#Amplitude (http://bit.ly/2IPq7Ha)
Воронки - чума, можно строить по событиям, учитывать параметры и порядок ивентов. Посмотреть обезличенную инфу по пользователям на каждом этапе воронки и узнать кто конкретно отвалился. Например недавно прибежал аналитик и "айайай, у нас после релиза почему то >50% после первого экрана онбординга отваливаются". Зашли в amplitude, выгрузили список отвалившихся пользователей. Из условных 50 пользователей за период 30 было из США с одной и той же моделью телефона и из одной подсети. Все бы ничего, но приложение в сторе не доступно оттуда :D Выдвинули гипотезу, что это авто (или не очень) тесты после раскатки и спокойно пошли работать дальше.
Мой выбор - при старте проекта, если там и так используется Firebase - добавить аналитику от него. С ним можно уже запускаться, хоть будет понятно что происходит. Дальше Amplitude для более продвинутых воронок. Appsflyer уже если собираетесь поливать усиленно траффиком.
Статья на тему как встраиваю аналитику обычно я - в черновиках и в работе, а тем временем ребята из La moda рассказывают как это делают они: https://habr.com/ru/company/lamoda/blog/469761/.
Как бонус - пара слов об инструментах для аналитику мобильных приложений. Из того, с чем более-менее плотно сталкивался я, это
#Firebase #analytics (http://bit.ly/2OQwQoe)
Бесплатно и сердито. Можно строить воронки по событиям, но нельзя использовать параметры событий в нем. Атрибуция (понять от куда пришел пользователь) есть, но в Appsflyer проще. Можно выгружать "сырые" данные в #BigQuery. Это круто, удобно и все такое, но надо повозиться. Зато можно настроить любые графики, данные и все что можно себе представить.
#Appsflyer (https://lite.ms/mTmv5y)
Использовался в основном для атрибуций. Причем, говорят (не пробовал), есть атрибуция рекламы по ТВ. В интерфейсе воронки по событиям можно разделять на каналы. У ребят из моей команды были проблемы отправить в AppsFlyer события с сервера, чтобы следить за ЖЦ пользователя в разрезе клиент-серверного единого пространства.
#Amplitude (http://bit.ly/2IPq7Ha)
Воронки - чума, можно строить по событиям, учитывать параметры и порядок ивентов. Посмотреть обезличенную инфу по пользователям на каждом этапе воронки и узнать кто конкретно отвалился. Например недавно прибежал аналитик и "айайай, у нас после релиза почему то >50% после первого экрана онбординга отваливаются". Зашли в amplitude, выгрузили список отвалившихся пользователей. Из условных 50 пользователей за период 30 было из США с одной и той же моделью телефона и из одной подсети. Все бы ничего, но приложение в сторе не доступно оттуда :D Выдвинули гипотезу, что это авто (или не очень) тесты после раскатки и спокойно пошли работать дальше.
Мой выбор - при старте проекта, если там и так используется Firebase - добавить аналитику от него. С ним можно уже запускаться, хоть будет понятно что происходит. Дальше Amplitude для более продвинутых воронок. Appsflyer уже если собираетесь поливать усиленно траффиком.
Хабр
Как внедрить аналитику и не сломать приложение?
Привет! Меня зовут Соснин Илья. Я работаю в Lamoda Android разработчиком. Крашу кнопочки, прогаю списочки и, к сожалению, пишу аналитику… Lamoda — это Data Driv...
Примеры кода под #Android подъехали!
Как выяснилось в ходе опроса, подавляющее большинство хотело бы в том числе увидеть примеры готового, работающего кода рядом со статьями.
В блоге появилась новая рубрика "Обучение Android", в которой будут появляться небольшие статьи на одну конкретную тему "Как сделать <что-то-полезное>". Там же можно найти ссылку на #github и даже на уже готовое приложение в #GooglePlay.
На сегодня рассмотрены темы:
- #BottomSheetBehavior и как его использовать
- Анимированные с помощью #Lottie кнопки
- #Монетизация ваших приложений через рекламу
- Монетизация ваших приложений через внутренние покупки
Кроме того, в исходниках, но пока не в статьях, вы сможете посмотреть как реализовать #DeepLink через #Firebase, как можно работать с #ProductFlavors и еще пара неописанных пасхалочек.
Пссс, у меня к тебе отдельная просьба - поделись этим постом с теми, кто также фанатеет от Андроид разработки как и ты и оставь отзыв в Google play к данным примерам. Это будет подтверждением, что я всё делаю правильно и стимулом для написания новых обучающих примеров! https://dimlix.com/android-tutorials/
Как выяснилось в ходе опроса, подавляющее большинство хотело бы в том числе увидеть примеры готового, работающего кода рядом со статьями.
В блоге появилась новая рубрика "Обучение Android", в которой будут появляться небольшие статьи на одну конкретную тему "Как сделать <что-то-полезное>". Там же можно найти ссылку на #github и даже на уже готовое приложение в #GooglePlay.
На сегодня рассмотрены темы:
- #BottomSheetBehavior и как его использовать
- Анимированные с помощью #Lottie кнопки
- #Монетизация ваших приложений через рекламу
- Монетизация ваших приложений через внутренние покупки
Кроме того, в исходниках, но пока не в статьях, вы сможете посмотреть как реализовать #DeepLink через #Firebase, как можно работать с #ProductFlavors и еще пара неописанных пасхалочек.
Пссс, у меня к тебе отдельная просьба - поделись этим постом с теми, кто также фанатеет от Андроид разработки как и ты и оставь отзыв в Google play к данным примерам. Это будет подтверждением, что я всё делаю правильно и стимулом для написания новых обучающих примеров! https://dimlix.com/android-tutorials/
Блог Android разработчика
Обучающие статьи и примеры по Android
В данном разделе собраны практические примеры реализации частых кейсов в Android. Также можно найти рекомендуемые ресурсы, которые помогут Андроид программисту. Примеры от dimlix.com Для своих читателей и подписчиков я лично создал и поддерживаю репозиторий.…
Сегодня люди используют совершенно разные устройства для потребления контента - смартфоны, компьютеры, планшеты и тд.
Разработчикам важно реализовать корректную навигацию не только в приложении, но и в целом в общей экосистеме продукта. Например, когда пользователь с компьютера поделился ссылкой с другом, а тот открыл его с мобильного устройства, на котором установлено (или нет) приложение, которое может обработать эту ссылку.
Улучшая пользовательский опыт, мы тем самым увеличиваем наши конверсии и лояльность к сервису в целом.
Реализовать корректную навигацию не так просто, как может показаться на первый взгляд, есть целый ряд кейсов:
- пользователь уже установил наше приложение,
- программа уже установлена, но ссылка может быть обработана только после обновления,
- пользователь зашел с компьютера
и т.д. и т.п.
#Firebase #DynamicLinks - простой и бесплатный инструмент, который поможет реализовать вам навигацию между продуктами.
Как его использовать - разобрал в рамках цикла обучающих примеров, приятного изучения! https://dimlix.com/deeplink-android/
Разработчикам важно реализовать корректную навигацию не только в приложении, но и в целом в общей экосистеме продукта. Например, когда пользователь с компьютера поделился ссылкой с другом, а тот открыл его с мобильного устройства, на котором установлено (или нет) приложение, которое может обработать эту ссылку.
Улучшая пользовательский опыт, мы тем самым увеличиваем наши конверсии и лояльность к сервису в целом.
Реализовать корректную навигацию не так просто, как может показаться на первый взгляд, есть целый ряд кейсов:
- пользователь уже установил наше приложение,
- программа уже установлена, но ссылка может быть обработана только после обновления,
- пользователь зашел с компьютера
и т.д. и т.п.
#Firebase #DynamicLinks - простой и бесплатный инструмент, который поможет реализовать вам навигацию между продуктами.
Как его использовать - разобрал в рамках цикла обучающих примеров, приятного изучения! https://dimlix.com/deeplink-android/
Блог Android разработчика
Deeplink в Android приложении
Задача: вести пользователя на определенный контент в приложении. Для этого используем Dynamic links от Firebase. Они позволяют Направить человека в Google play или AppStore если используется...
Раньше в #Firebase было не очень удобно строить воронки, какой-нибудь #Amplitude для этого круче.
Давно не заходил в раздел аналитики в Firebase и тут с удивлением заметил, что теперь данные можно шарить прямиком в Google Analytics и получать наряду с отчетами в Firebase вот такие User Path в GA.
Давно не заходил в раздел аналитики в Firebase и тут с удивлением заметил, что теперь данные можно шарить прямиком в Google Analytics и получать наряду с отчетами в Firebase вот такие User Path в GA.
Push уведомления в мобильных приложениях - отличный способ поднять retention и другие метрики. Конечно если не перебарщивать...
О том, какие уведомления существуют в Android приложениях и как их реализовать читайте в новой статье. Там будет и про #Firebase и про #Airship с #PooshWoosh, в общем много чего интересного. https://dimlix.com/notifications-android/
О том, какие уведомления существуют в Android приложениях и как их реализовать читайте в новой статье. Там будет и про #Firebase и про #Airship с #PooshWoosh, в общем много чего интересного. https://dimlix.com/notifications-android/
Блог Android разработчика
Уведомления в android приложении
Уведомления в мобильном приложении бывают разных видов: Push, In-App. Каждый тип сообщения используется для разных целей и несет внутри себя разную информацию. Пуши, например могут приходить когда...
И снова пару слов про кросплатформенную разработку и #Flutter.
Ожидание:
- Написал код один раз, работает везде
- Нажал кнопочку, проект собрался под все платформы
Реальность:
- #Firebase авторизацию заставил работать только с бубном. На форумах писали про "магическую" комбинацию правильных версий библиотек самого Flutter и #firebase_auth.
- #Push уведомления, необходимые также для авторизации (silent push) на iOS получилось настроить только с N-ого раза, удаляя туда-обратно сертификаты в #appstoreConnect
- Библиотека #url_launcher не хотела запускать email клиент на iOS с русскими символами в интенте 😳
- Для того, чтобы собрать проект под #iOS необходим #xCode
Итого:
Разработка под 2 платформы - удобно для #MVP, когда нужно относительно быстро запустить проект под 2 платформы, но это не так просто как может показаться на первый взгляд.
Бонус:
Само приложение можно найти по ссылке: https://stroycash.page.link/appDynLink
Буду рад обсудить детали реализации, ответить на вопросы и услышать ваши отзывы!
Ожидание:
- Написал код один раз, работает везде
- Нажал кнопочку, проект собрался под все платформы
Реальность:
- #Firebase авторизацию заставил работать только с бубном. На форумах писали про "магическую" комбинацию правильных версий библиотек самого Flutter и #firebase_auth.
- #Push уведомления, необходимые также для авторизации (silent push) на iOS получилось настроить только с N-ого раза, удаляя туда-обратно сертификаты в #appstoreConnect
- Библиотека #url_launcher не хотела запускать email клиент на iOS с русскими символами в интенте 😳
- Для того, чтобы собрать проект под #iOS необходим #xCode
Итого:
Разработка под 2 платформы - удобно для #MVP, когда нужно относительно быстро запустить проект под 2 платформы, но это не так просто как может показаться на первый взгляд.
Бонус:
Само приложение можно найти по ссылке: https://stroycash.page.link/appDynLink
Буду рад обсудить детали реализации, ответить на вопросы и услышать ваши отзывы!
#Firebase от #Google, о котором ранее писал в том числе в блоге содержит прямо пул полезных инструментов для мобильного разработчика. От хостинга до аналитики с искусственным интеллектом и ML Kit. Сейчас хотел бы поговорить отдельно про Database функционал.
Fierbase Databse - по сути NoSql база в облаке. Довольно быстро настраивается, описываются правила доступа и можно работать. Все в целом неплохо… пока речь идет только о хранении данных одного пользователя. Так сказать такой облачный кэш для вашего приложения.
У нас начались с ним проблемы, когда захотели написать бэкофис под БД. Т.е. такую небольшую субдоминанта поверх, чтобы было удобно вести сервис. Так как это NoSql база, то в целом она плохо рассчитана на сильно связанные данные и таблицы, чтобы сделать простые отчеты через несколько таблиц пришлось повозиться. Но на этом самое веселое только началось.
Бесплатный режим Firebase включает 50 тысяч доступов на чтение. Вроде много. Я даже выставил «бюджет» в 5$ на всякий случай, чтобы заметить если вдруг что. Все заработало (не так быстро, как могло бы быть с SQL, но все же). А через неделю внезапно оказалось, что наши скрипты для бэра выжирали примерно 11 миллионов чтений в день 😄, что стоило примерно 100-200$ за эту неделю.
Опты с Firebase DB показал (я могу быть не прав, поправьте, если так), что
* Eдобно использовать, когда вам нужен простой бак, хранящий инфу одного пользователя
* Это может стоить дорого, а ограничить жестко возможности нет (только придет уведомление)
* Если вам нужен более продвинутый бэк, то, вероятно писать его поверх Firebase DB так себе идея. Лучше взять даже старый добрый MySQL и иметь контролируемое решение.
А что вы думаете про Firebase Datastore? (Именно про datastore, а не другие сервисы, о которых можно поговорить отдельно). https://bit.ly/31zSJgn
Fierbase Databse - по сути NoSql база в облаке. Довольно быстро настраивается, описываются правила доступа и можно работать. Все в целом неплохо… пока речь идет только о хранении данных одного пользователя. Так сказать такой облачный кэш для вашего приложения.
У нас начались с ним проблемы, когда захотели написать бэкофис под БД. Т.е. такую небольшую субдоминанта поверх, чтобы было удобно вести сервис. Так как это NoSql база, то в целом она плохо рассчитана на сильно связанные данные и таблицы, чтобы сделать простые отчеты через несколько таблиц пришлось повозиться. Но на этом самое веселое только началось.
Бесплатный режим Firebase включает 50 тысяч доступов на чтение. Вроде много. Я даже выставил «бюджет» в 5$ на всякий случай, чтобы заметить если вдруг что. Все заработало (не так быстро, как могло бы быть с SQL, но все же). А через неделю внезапно оказалось, что наши скрипты для бэра выжирали примерно 11 миллионов чтений в день 😄, что стоило примерно 100-200$ за эту неделю.
Опты с Firebase DB показал (я могу быть не прав, поправьте, если так), что
* Eдобно использовать, когда вам нужен простой бак, хранящий инфу одного пользователя
* Это может стоить дорого, а ограничить жестко возможности нет (только придет уведомление)
* Если вам нужен более продвинутый бэк, то, вероятно писать его поверх Firebase DB так себе идея. Лучше взять даже старый добрый MySQL и иметь контролируемое решение.
А что вы думаете про Firebase Datastore? (Именно про datastore, а не другие сервисы, о которых можно поговорить отдельно). https://bit.ly/31zSJgn
Блог Android разработчика
Популярные Android библиотеки для разработчиков
Накопленный опыт, собранные грабли и оттестированный временем и сотнями разработчиков функционал - как нельзя лучше описывает смысл библиотек, используемых в разработке. В использовании готовых библиотек есть свои плюсы и минусы: + Не надо тратить время на…
"#CI для бедных" или как не страдать при деплое билдов тестировщикам и в маркет.
"Для бедных" в это контексте - важно. Фраза о том, что в больших компаниях зачастую есть #DevOps, инфраструктура и это всё, что позволяет разработчику код писать, а не думать о деплое дальше своей локальной машины. Зачастую в стартапах нет таких привилегий.
Есть и хорошая новость - для этих целей есть ряд бесплатных классных тулзов.
Первая вещь, чем довольно давно пользуюсь - #CircleCI. Позволяет без лишней боли собрать проект. Работает на докерах. Понятное окружение, удобная интеграция. Кстати, про деплой через CircleCI я уже даже как-то писал.
Второе открытие этого год - #Github actions. Позволяет прямо в Github запилить билд. Даже есть интеграции дальше с доставкой во всякие #Firebase app distribution. Работают триггеры на пулреквесты, пуши и всякие разные actions.
Понятное дело у всех есть бесплатные лимиты. Но коли вы из них выйдете - наверное с проектом все отлично и можно и заплатить за четкий #SaaS.
"Для бедных" в это контексте - важно. Фраза о том, что в больших компаниях зачастую есть #DevOps, инфраструктура и это всё, что позволяет разработчику код писать, а не думать о деплое дальше своей локальной машины. Зачастую в стартапах нет таких привилегий.
Есть и хорошая новость - для этих целей есть ряд бесплатных классных тулзов.
Первая вещь, чем довольно давно пользуюсь - #CircleCI. Позволяет без лишней боли собрать проект. Работает на докерах. Понятное окружение, удобная интеграция. Кстати, про деплой через CircleCI я уже даже как-то писал.
Второе открытие этого год - #Github actions. Позволяет прямо в Github запилить билд. Даже есть интеграции дальше с доставкой во всякие #Firebase app distribution. Работают триггеры на пулреквесты, пуши и всякие разные actions.
Понятное дело у всех есть бесплатные лимиты. Но коли вы из них выйдете - наверное с проектом все отлично и можно и заплатить за четкий #SaaS.
Вы же помните, что #Crashlytics от #Fabric теперь не от Fabric, а от #Firebase? И что он deprecated? И что надо до 15 ноября обязательно мигрировать 🙈
#Библиотеки
#Библиотеки