Раньше в #Firebase было не очень удобно строить воронки, какой-нибудь #Amplitude для этого круче.
Давно не заходил в раздел аналитики в Firebase и тут с удивлением заметил, что теперь данные можно шарить прямиком в Google Analytics и получать наряду с отчетами в Firebase вот такие User Path в GA.
Давно не заходил в раздел аналитики в Firebase и тут с удивлением заметил, что теперь данные можно шарить прямиком в Google Analytics и получать наряду с отчетами в Firebase вот такие User Path в GA.
#GooglePlay выкатил Play Point в США, а это значит, что вероятно, рано или поздно доберется и до нас.
Play Points - внутренние очки (читай "валюта") в google play store, которая зарабатывается за активность как в маркете, так и в других приложениях. Эти очки, по словам разработчиков, можно тратить в том числе на внутренние покупки внутри других приложений.
По опыту использования Steam могу сказать, что платформенные ачивки затягивают, посмотрим на развитие в Google play. https://android-developers.googleblog.com/
Play Points - внутренние очки (читай "валюта") в google play store, которая зарабатывается за активность как в маркете, так и в других приложениях. Эти очки, по словам разработчиков, можно тратить в том числе на внутренние покупки внутри других приложений.
По опыту использования Steam могу сказать, что платформенные ачивки затягивают, посмотрим на развитие в Google play. https://android-developers.googleblog.com/
Android Developers Blog
News and insights on the Android platform, developer tools, and events.
#GoogleFit собрал уже большую базу пользователей, например в #GooglePlay у приложения 50млн+ скачиваний. Теперь пора и обезопасить собранные данные.
Начиная с Android 10 гугл вводит новый Runtime Permission для доступа к "Фитнес" записям пользователя, а именно android.permission.ACTIVITY_RECOGNITION*
* Если вы не используете API именно google fit, а слушаете сырые данные от сенсоров - разрешения получать не нужно.
С помощью Google Fit Api можно получить доступ к таким данным, как
- Шаги
- Калории
- Активность пользователя https://android-developers.googleblog.com/2019/11/privacy-protections-for-physical.html
Начиная с Android 10 гугл вводит новый Runtime Permission для доступа к "Фитнес" записям пользователя, а именно android.permission.ACTIVITY_RECOGNITION*
* Если вы не используете API именно google fit, а слушаете сырые данные от сенсоров - разрешения получать не нужно.
С помощью Google Fit Api можно получить доступ к таким данным, как
- Шаги
- Калории
- Активность пользователя https://android-developers.googleblog.com/2019/11/privacy-protections-for-physical.html
Android Developers Blog
Privacy protections for physical activity in Android 10
Since Google Fit was released in 2015 , apps with an abundance of features for health and fitness tracking have integrated with the Google ...
Сегодня у нас в "гостях" #AdditiveAnimator.
Данная библиотека под #Android позволяет удобно описывать последовательные и одновременные анимации нескольких элементов на экране.
AdditiveAnimator()
.targets(payment_header, payment_subheader)
.translationY(0f).alpha(1f)
.setDuration(600)
.then()
.target(btnCC).translationX(0f).alpha(1f)
.target(btnBankAccount).translationX(0f).alpha(1f)
.start()
Круто же! Сначала payment_header, payment_subheader приезжают в 0 по Y и меняют alpha до единицы. Далее btnCC и btnBankAccount приезжают в 0 по X и также появляются через Fade.
В общем, если у вас есть зависимые друг от друга анимации, то крайне рекомендую взглянуть. https://github.com/wirecube/android_additive_animations
Данная библиотека под #Android позволяет удобно описывать последовательные и одновременные анимации нескольких элементов на экране.
AdditiveAnimator()
.targets(payment_header, payment_subheader)
.translationY(0f).alpha(1f)
.setDuration(600)
.then()
.target(btnCC).translationX(0f).alpha(1f)
.target(btnBankAccount).translationX(0f).alpha(1f)
.start()
Круто же! Сначала payment_header, payment_subheader приезжают в 0 по Y и меняют alpha до единицы. Далее btnCC и btnBankAccount приезжают в 0 по X и также появляются через Fade.
В общем, если у вас есть зависимые друг от друга анимации, то крайне рекомендую взглянуть. https://github.com/wirecube/android_additive_animations
GitHub
GitHub - wirecube/android_additive_animations: Additive animations for Android!
Additive animations for Android! Contribute to wirecube/android_additive_animations development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
Когда пришел продакт и попросил добавить аналитики в вашу идеально собранную, инкапсулированную и тд архитектуру 😜
Под руку попалась интересная статья про то, с чего начать переезд с #Java на #Kotlin если вы еще не.
По ссылке высокоуровневое сравнение двух языков, например о том в чем разница между '==' и '===', какие префиксы стоит использовать и многое другое.
Даже если вы уже на Котлине, рекомендую заглянуть, чтобы убедиться, что вы ничего не пропустили при переезде. https://medium.com/androiddevelopers/learn-kotlin-through-unit-tests-914106d2d8c5
По ссылке высокоуровневое сравнение двух языков, например о том в чем разница между '==' и '===', какие префиксы стоит использовать и многое другое.
Даже если вы уже на Котлине, рекомендую заглянуть, чтобы убедиться, что вы ничего не пропустили при переезде. https://medium.com/androiddevelopers/learn-kotlin-through-unit-tests-914106d2d8c5
Medium
Learn Kotlin through unit tests
At I/O in 2019, we announced that Android is going Kotlin-first. However, some developers have mentioned they’re still uncertain how to…
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. Каждый тип сообщения используется для разных целей и несет внутри себя разную информацию. Пуши, например могут приходить когда...
Разыгрываем легендарную книгу Effective Java в оригинале 🔥
Джошуа Блох получил Jolt Award за нее в далеком 2001.
Данный вариант относится еще к Java 6 но не теряет актуальности и по сей день.
Все что надо для участия:
- Лайкнуть запись про конкурс 1 балл (обязательное условие)
https://vk.com/dr_dev?w=wall-185690658_208
- За подписку на нашу группу ВК +1 балл
https://vk.com/dr_dev
- За лайк нашей страницы на Facebook +1 балл
https://www.facebook.com/droDev
- За подписку на нашу группу в Телеграмме +2 балла
https://t.me/droDev
- За вступление в чатик группы в Телеграмме +2 балла
12 января 2020 составляется таблица, где каждый участник будет упомянут столько раз, сколько набрал баллов.
Через сервис random.org будет выбран случайный победитель и анонсирован в группах ВК, ФБ, Телеграме.
Удачи и продуктивного обучения!
Джошуа Блох получил Jolt Award за нее в далеком 2001.
Данный вариант относится еще к Java 6 но не теряет актуальности и по сей день.
Все что надо для участия:
- Лайкнуть запись про конкурс 1 балл (обязательное условие)
https://vk.com/dr_dev?w=wall-185690658_208
- За подписку на нашу группу ВК +1 балл
https://vk.com/dr_dev
- За лайк нашей страницы на Facebook +1 балл
https://www.facebook.com/droDev
- За подписку на нашу группу в Телеграмме +2 балла
https://t.me/droDev
- За вступление в чатик группы в Телеграмме +2 балла
12 января 2020 составляется таблица, где каждый участник будет упомянут столько раз, сколько набрал баллов.
Через сервис random.org будет выбран случайный победитель и анонсирован в группах ВК, ФБ, Телеграме.
Удачи и продуктивного обучения!
Шпаргалка по #Kotlin.
Для тех, что еще не привык ко всему синтаксическому сахару, который отсыпали вместе с Котлином 😉
Забирай себе и отправь другу - #Android разработчику, он будет рад! https://koenig-media.raywenderlich.com/uploads/2019/11/RW-Kotlin-Cheatsheet-1.1.pdf
Для тех, что еще не привык ко всему синтаксическому сахару, который отсыпали вместе с Котлином 😉
Забирай себе и отправь другу - #Android разработчику, он будет рад! https://koenig-media.raywenderlich.com/uploads/2019/11/RW-Kotlin-Cheatsheet-1.1.pdf
Дорогой друг, потрать секунду времени, к тебе 1 вопрос.
Контент про разработку можно подавать как минимум тремя способами: готовый код + описание, статья с небольшими примерами, скринкаст.
Что тебе больше по душе?
Контент про разработку можно подавать как минимум тремя способами: готовый код + описание, статья с небольшими примерами, скринкаст.
Что тебе больше по душе?
Мне больше всего интересно
Anonymous Poll
74%
Читать развернутые статьи с примерами
12%
Скачать пример с GitHub с пояснениями
12%
Посмотреть скринкаст на youtube с объяснением
3%
Другое (расскажу в коментах)
Как ранее и говорил, начал реализовывать практические кейсы разработки под #Android. В реализованных примерах уже сейчас есть к слову
- Мониторинг наличия сетевого соединения
- Deeplink в Android приложениях
- Всплывающие BottomSheet панели
Все это можно скачать и пощупать прямо сейчас в Google play
А если у тебя есть вопрос про андроид разработку, то я готов подсказать в обсуждениях канала.
Хочу задать вопрс разработчику »
- Мониторинг наличия сетевого соединения
- Deeplink в Android приложениях
- Всплывающие BottomSheet панели
Все это можно скачать и пощупать прямо сейчас в Google play
А если у тебя есть вопрос про андроид разработку, то я готов подсказать в обсуждениях канала.
Хочу задать вопрс разработчику »
Бесплатный курс по Advanced #Kotlin от #Google и #Udacity 👨🎓
Видео презентация: https://www.youtube.com/watch?v=rGv5pInpSvc
2-х месячная программа рассчитана на людей уже знакомых с Котлином и желающих углубиться в дебри разработки.
Все мы по разному потребляем контент, по-этому гугл и юдасити позаботились о том, чтобы уроки были доступны как видео курс на Udacity, так и серия на #Codelabs.
Перейти к Udacity курсу »
Перейти на Codelabs »
Видео презентация: https://www.youtube.com/watch?v=rGv5pInpSvc
2-х месячная программа рассчитана на людей уже знакомых с Котлином и желающих углубиться в дебри разработки.
Все мы по разному потребляем контент, по-этому гугл и юдасити позаботились о том, чтобы уроки были доступны как видео курс на Udacity, так и серия на #Codelabs.
Перейти к Udacity курсу »
Перейти на Codelabs »
YouTube
Learn Advanced Android Development in Kotlin
Advanced Android development in Kotlin, developed by Google together with Udacity, is a free, self-paced online course that teaches advanced skills for building Android apps using the Kotlin programming language.
Take the course → https://goo.gle/2CzDVCk…
Take the course → https://goo.gle/2CzDVCk…
Собрал ответы на часто встречающиеся вопросы от начинающих программистов в одной статье.
- С чего начать обучение разработке?
- Что нужно знать программисту?
- В чем основные отличия работы в офисе или удаленно?
- Сколько зарабатывает программист?
и т.д.
Есть #Android специфичные детали, но статья в целом про программирование как таковое. https://dimlix.com/programming-for-beginners/
- С чего начать обучение разработке?
- Что нужно знать программисту?
- В чем основные отличия работы в офисе или удаленно?
- Сколько зарабатывает программист?
и т.д.
Есть #Android специфичные детали, но статья в целом про программирование как таковое. https://dimlix.com/programming-for-beginners/
Блог Android разработчика
Программирование для начинающих и не только
Обучение программированию - очевидный тренд. Даже при высоких зарплатах спрос на хороший разработчиков превышает предложение. Все это, в купе с возможностью в IT работать удаленно подталкивает все больше людей научиться программировать. Давайте разберемся…
Копаем #Android до низов, раскрываем все аспекты работы с #Gradle, рассматриваем неочевидные шаги для повышения эффективности кода #Kotlin вместе с Marcin Moskala, RJ Marsan, Ivan Morgillo и с другими Android-инженерами на Mobius 2019 Moscow:
— «Custom Lint Rules», Игорь Таланкин. Как Android-разработчику добавить свою проверку? Как поделиться ею с командой? Как устроены правила Android Lint внутри? Именно об этом поведает Игорь в своем по-настоящему хардкорном докладе, ведь вы узнаете, как студия видит ваш код и научитесь ей подсказывать!
— «Gradle от A до Я». Степан Гончаров раскроет максимально все аспекты работы с Gradle, от плагинов и тасок до внутренних процессов. Доклад будет полезен всем.
— «Efficient Kotlin». Marcin Moskala, автор книги «Effective Kotlin», расскажет про неочевидные шаги для повышения эффективности вашего кода Kotlin.
— «Рендеринг Текста в Android», Павел Новиков. Для подавляющего большинства разработчиков шрифты — это самый низкий уровень взаимодействия с текстами. Доклад Павла позволяет копнуть глубже и понять, как поэтапно происходит отрисовка шрифтов.
— «Design for errors — an introduction to Domain modelling with a bit of Arrow», Ivan Morgillo. Все мы любим тесты, но слышали ли вы, что лучшие тесты - это типы? Котлин со своими type aliases и arrow со своей поддержкой типов помогут вам построить по-настоящему надежный код.
Другие доклады и билеты на конференцию — на сайте:
https://mobiusconf.com/?utm_source=partner&utm_medium=dimlix&utm_campaign=mobius19msc&utm_content=common
— «Custom Lint Rules», Игорь Таланкин. Как Android-разработчику добавить свою проверку? Как поделиться ею с командой? Как устроены правила Android Lint внутри? Именно об этом поведает Игорь в своем по-настоящему хардкорном докладе, ведь вы узнаете, как студия видит ваш код и научитесь ей подсказывать!
— «Gradle от A до Я». Степан Гончаров раскроет максимально все аспекты работы с Gradle, от плагинов и тасок до внутренних процессов. Доклад будет полезен всем.
— «Efficient Kotlin». Marcin Moskala, автор книги «Effective Kotlin», расскажет про неочевидные шаги для повышения эффективности вашего кода Kotlin.
— «Рендеринг Текста в Android», Павел Новиков. Для подавляющего большинства разработчиков шрифты — это самый низкий уровень взаимодействия с текстами. Доклад Павла позволяет копнуть глубже и понять, как поэтапно происходит отрисовка шрифтов.
— «Design for errors — an introduction to Domain modelling with a bit of Arrow», Ivan Morgillo. Все мы любим тесты, но слышали ли вы, что лучшие тесты - это типы? Котлин со своими type aliases и arrow со своей поддержкой типов помогут вам построить по-настоящему надежный код.
Другие доклады и билеты на конференцию — на сайте:
https://mobiusconf.com/?utm_source=partner&utm_medium=dimlix&utm_campaign=mobius19msc&utm_content=common
При отправке данных по сети иногда полезно посмотреть в каком они виде долетают до сервера.
Чтобы не заниматься долгими настройками и копанием в логах - есть отличный инструмент, которым сам иногда пользуюсь - RequestBin. Он позволяет создать instance некой "корзины", в которую будут падать запросы и где их можно удобно мониторить. https://requestbin.com/
Чтобы не заниматься долгими настройками и копанием в логах - есть отличный инструмент, которым сам иногда пользуюсь - RequestBin. Он позволяет создать instance некой "корзины", в которую будут падать запросы и где их можно удобно мониторить. https://requestbin.com/
Практически всегда, когда речь идет о #REST клиентах, то #Json - тот формат, в рамках которого происходит общение.
Логирование запросов-ответов обычно выдает целый json в одну строку. Читать это - жесть.
Я практически каждый день при разработке пользуюсь очень простым, бесплатным, но крайне полезным онлайн инструментом. Он просто форматирует json что его становится удобно читать и изучать весь объект, скрывая ненужные в данный момент части. http://json.parser.online.fr/
Логирование запросов-ответов обычно выдает целый json в одну строку. Читать это - жесть.
Я практически каждый день при разработке пользуюсь очень простым, бесплатным, но крайне полезным онлайн инструментом. Он просто форматирует json что его становится удобно читать и изучать весь объект, скрывая ненужные в данный момент части. http://json.parser.online.fr/
Все чаще стал слышать вопросы про архитектуру в рамках приложения.
Надеюсь уже все прочитали про #CleanArchitecture, но все же.
На мой взгляд вообще понятие #Архитектура можно разделить на 2 части
1) Непосредственно архитектура
2) Шаблона проектирования архитектуры
1-ое это в целом о том, что приложение, будь то Android, iOS, СвояOS, неважно, должны быть легко поддерживаемыми, модифицируемыми, тестируемыми. На данном этапе абсолютно не важны никакие аббревиатуры (MVP, MVVM, xxxx). Важен только здравый смысл. По аналогии с Lego - вы покупаете стандартные блоки, из которых можно собрать нечто большее. Вот и архитектура должна быть такая, что из кусочков вашего приложения можно было бы собрать нечто крутое. Важный момент - не скатиться до "Паззла", когда вроде все аккуратно, по блокам... только вот к одной детали подходит исключительно одна...
А вот шаблоны уже (даже исходя из сути слова) - некое стандартное решение в стандартной ситуации со стандартными именами. Тут как раз речь про MVP, MVVM и т.д. Это нужно лишь для ускорения процесса принятия решения по тому, как организовать код и, чтобы другой человек мог быстрее понять "что тут происходит".
Так вот, так или иначе, с понятием "архитектуры" вы сталкиваетесь, даже если не знаете об этом. А вот с шаблонами да, не все и не всегда :) https://habr.com/ru/post/269589/
Надеюсь уже все прочитали про #CleanArchitecture, но все же.
На мой взгляд вообще понятие #Архитектура можно разделить на 2 части
1) Непосредственно архитектура
2) Шаблона проектирования архитектуры
1-ое это в целом о том, что приложение, будь то Android, iOS, СвояOS, неважно, должны быть легко поддерживаемыми, модифицируемыми, тестируемыми. На данном этапе абсолютно не важны никакие аббревиатуры (MVP, MVVM, xxxx). Важен только здравый смысл. По аналогии с Lego - вы покупаете стандартные блоки, из которых можно собрать нечто большее. Вот и архитектура должна быть такая, что из кусочков вашего приложения можно было бы собрать нечто крутое. Важный момент - не скатиться до "Паззла", когда вроде все аккуратно, по блокам... только вот к одной детали подходит исключительно одна...
А вот шаблоны уже (даже исходя из сути слова) - некое стандартное решение в стандартной ситуации со стандартными именами. Тут как раз речь про MVP, MVVM и т.д. Это нужно лишь для ускорения процесса принятия решения по тому, как организовать код и, чтобы другой человек мог быстрее понять "что тут происходит".
Так вот, так или иначе, с понятием "архитектуры" вы сталкиваетесь, даже если не знаете об этом. А вот с шаблонами да, не все и не всегда :) https://habr.com/ru/post/269589/
Хабр
Чистая архитектура
От переводчика: данная статья написана Дядюшкой Бобом в августе 2012 года, но, на мой взгляд, вполне актуальна до сих пор. За последние несколько лет мы видели целый ряд идей относительно архитектуры...
При использовании #ViewModel и #LiveData из #Android Architecture Component натыкаюсь на то, что при переходе вперед-назад и наличии некого стейт объекта во ViewModel возникают ошибки.
А именно, например, есть Onboarding, который собирает последовательно ряд данных и использует одну ViewModel. При переходе взад-вперед по экранам может случится так, что значение в LiveData уже было, а на него завязан переход дальше. Получается "зацикливание".
Для таких случаев, когда нужно интерпретировать значение в LiveData как одноразовое событие нашел простую библиотечку: https://github.com/hadilq/LiveEvent
Больше о процессе создания LiveEvent можно почитать от автора в статье: https://proandroiddev.com/livedata-with-single-events-2395dea972a8
А именно, например, есть Onboarding, который собирает последовательно ряд данных и использует одну ViewModel. При переходе взад-вперед по экранам может случится так, что значение в LiveData уже было, а на него завязан переход дальше. Получается "зацикливание".
Для таких случаев, когда нужно интерпретировать значение в LiveData как одноразовое событие нашел простую библиотечку: https://github.com/hadilq/LiveEvent
Больше о процессе создания LiveEvent можно почитать от автора в статье: https://proandroiddev.com/livedata-with-single-events-2395dea972a8
GitHub
GitHub - hadilq/LiveEvent: This library holds a class to handle single live events in Android MVVM architectural pattern. http…
This library holds a class to handle single live events in Android MVVM architectural pattern. https://proandroiddev.com/livedata-with-single-events-2395dea972a8 - GitHub - hadilq/LiveEvent: This l...