Есть предложение. Задумал ряд мини статей-заметок в формате FAQ "как сделать <тут-что-то-интересное> в #Android". Например "как организовать мониторинг сетевого подключения".
Внутри только сок, вкратце что надо. Примеры кода и ссылочка на github где уже реализовано описанное + ссылка на google play где можно пощупать реализованное.
К тебе, дорогой слушатель, ровно 2 вопроса.
1) интересен ли такой формат (опрос ниже 🔽)?
2) есть ли определенные темы, которые хотелось бы увидеть (пишем в комментах, обсуждениях)?
Внутри только сок, вкратце что надо. Примеры кода и ссылочка на github где уже реализовано описанное + ссылка на google play где можно пощупать реализованное.
К тебе, дорогой слушатель, ровно 2 вопроса.
1) интересен ли такой формат (опрос ниже 🔽)?
2) есть ли определенные темы, которые хотелось бы увидеть (пишем в комментах, обсуждениях)?
Нужны ли заметки в формате FAQ с примерами и реализациями?
Anonymous Poll
84%
Да, огонь!
13%
Хз, хз, может и пригодиться
3%
Нет, в топку!
0%
Свой вариант (в комменты)
Выложили видео с DroidCon NY.
А между тем, пока вы их смотрите, примеры кода, про которые говорил в прошлый раз практически готовы. Остается дописать "объяснительные записки" в виде небольших FAQ статей и первая версия этой движухи будет доступна. Скорее всего это произойдет уже на следующей неделе.
А пока продолжаем следить за новостями и статьями, впереди много интересного! https://www.droidcon.com/videos?path=NewYork%20City
А между тем, пока вы их смотрите, примеры кода, про которые говорил в прошлый раз практически готовы. Остается дописать "объяснительные записки" в виде небольших FAQ статей и первая версия этой движухи будет доступна. Скорее всего это произойдет уже на следующей неделе.
А пока продолжаем следить за новостями и статьями, впереди много интересного! https://www.droidcon.com/videos?path=NewYork%20City
И снова немного про кросс-платформенную разработку.
В свободное время попробовал написать небольшое приложение на #Flutter
- это и правда классный инструмент, чтобы быстро сделать #MVP, но есть нюансы
- не надо думать, что "написал один раз и забыл". Например решил подключить Firebase. Пришлось открыть xcode и android studio, чтобы добавить нужные файлы и зависимости.
- некоторые фишки нужно дописать, даже если они есть в нативе. FirebaseUI Auth есть для #Web/#Android/#iOS. А чтобы подключить ее к flutter, не залезая в исходники - придется поискать библиотеку или писать самому.
- работает не всегда и не везде. Я, как Андроид разработчик, быстро завел приложение на эмуляторе. А вот iOS отказался работать, потому что конфигурация на первом этапе была сделана не совсем верно.
Итого - писать сразу под обе платформы - отличные подход, если вам нужно быстро приложение под 2+ платформы. Но надо быть готовым, что базовые знания для каждой платформы должны быть. Также, для сборки iOS нужна будет MacOS. И тут не только про flutter, часто в интернете натыкаюсь на вопросы про разные фреймворки из разряда "как заставить работать <фича> на <framework>".
Вот еще пара развернутых мыслей про кросс-платформ: https://tproger.ru/experts/native-or-crossplatform/
В свободное время попробовал написать небольшое приложение на #Flutter
- это и правда классный инструмент, чтобы быстро сделать #MVP, но есть нюансы
- не надо думать, что "написал один раз и забыл". Например решил подключить Firebase. Пришлось открыть xcode и android studio, чтобы добавить нужные файлы и зависимости.
- некоторые фишки нужно дописать, даже если они есть в нативе. FirebaseUI Auth есть для #Web/#Android/#iOS. А чтобы подключить ее к flutter, не залезая в исходники - придется поискать библиотеку или писать самому.
- работает не всегда и не везде. Я, как Андроид разработчик, быстро завел приложение на эмуляторе. А вот iOS отказался работать, потому что конфигурация на первом этапе была сделана не совсем верно.
Итого - писать сразу под обе платформы - отличные подход, если вам нужно быстро приложение под 2+ платформы. Но надо быть готовым, что базовые знания для каждой платформы должны быть. Также, для сборки iOS нужна будет MacOS. И тут не только про flutter, часто в интернете натыкаюсь на вопросы про разные фреймворки из разряда "как заставить работать <фича> на <framework>".
Вот еще пара развернутых мыслей про кросс-платформ: https://tproger.ru/experts/native-or-crossplatform/
Tproger
Натив или кроссплатформа — что выбрать начинающему мобильному разработчику? Отвечают эксперты
Раз можно быстро писать сразу на все платформы, то зачем нативная разработка? Разбираемся в плюсах и минусах обоих подходов с экспертами.
#Airship (тот, который раньше назывался #UrbanAirship) - оказался крайне удобным инструментом когда нужно реализовать сложные сценарии доставки сообщений пользователю.
Можно посылать Push определенным сегментам, по событиям, таймингу и тд. Конечно все это можно сделать напрямую со своего сервера (по сути написать такой функционал руками), но я более чем уверен, что
а) Это не будет в итоге сильно дешевле
б) Маркетинг отделу будет не так удобно как могло бы быть
Airship позволяет доставлять либо Pushы, либо in-app сообщения, а также интегрировать Message center в приложение. Message center - своего рода inbox, в котором складываются пришедшие сообщения. Причем поддерживается RICH формат, который откроется в WebView. Т.е. дизайнер может рисовать любой лендинг, который будет показывать в приложении.
Так что, если будет стоять задача по-быстрому (но не бесплатно) реализовать комплексный подход для маркетинга внутри приложения - Airship хорошо справится с задачей. https://www.airship.com/
Можно посылать Push определенным сегментам, по событиям, таймингу и тд. Конечно все это можно сделать напрямую со своего сервера (по сути написать такой функционал руками), но я более чем уверен, что
а) Это не будет в итоге сильно дешевле
б) Маркетинг отделу будет не так удобно как могло бы быть
Airship позволяет доставлять либо Pushы, либо in-app сообщения, а также интегрировать Message center в приложение. Message center - своего рода inbox, в котором складываются пришедшие сообщения. Причем поддерживается RICH формат, который откроется в WebView. Т.е. дизайнер может рисовать любой лендинг, который будет показывать в приложении.
Так что, если будет стоять задача по-быстрому (но не бесплатно) реализовать комплексный подход для маркетинга внутри приложения - Airship хорошо справится с задачей. https://www.airship.com/
Airship
Homepage
Airship is the only mobile-first customer experience platform that delivers measurable results through AI-powered, unified cross-channel experiences.
Смена темы в #Android приложении может быть сделана через простую установку setTheme, но тогда нужно будет пересоздать #Activity.
Можно поменять UI прямо на лету, даже во время прокрутки #ScrollView.
Оба подхода имеют место быть. Важно понимать что они есть и как реализовать переключения тем разными способами. https://dimlix.com/switch-theme-android/
Можно поменять UI прямо на лету, даже во время прокрутки #ScrollView.
Оба подхода имеют место быть. Важно понимать что они есть и как реализовать переключения тем разными способами. https://dimlix.com/switch-theme-android/
Блог Android разработчика
Смена темы в Android приложении
Темная тема в тренде. В приложениях под Android набирает популярность возможность переключения оформлений. Рассказываю как реализовать такой переключатель. Есть как минимум два варианта реализации...
This media is not supported in your browser
VIEW IN TELEGRAM
Если даже один человек из команды "не тащит", то рано или поздно это отразиться на продукте и на вас лично.
Примеры кода под #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 Для своих читателей и подписчиков я лично создал и поддерживаю репозиторий.…
DroDev | Мобильная разработка: мысли вслух pinned «Примеры кода под #Android подъехали! Как выяснилось в ходе опроса, подавляющее большинство хотело бы в том числе увидеть примеры готового, работающего кода рядом со статьями. В блоге появилась новая рубрика "Обучение Android", в которой будут появляться…»
Google проводит Developer challenge на тему машинного обучения 🤖
До 2 декабря 2019 года можно постить свои идеи проектов, которые решают реальные проблемы пользователей и используют ML.
Реализовать проект предстоит до 1 Мая 2020 при поддержке Гугла в том числе.
10 отобранных разработчиков получат фичеринг детища в google play, анонсы в их каналах, билеты на Google I/O 🚀
Если вы думали о том, на какую тему сделать следующее приложение под Android📱, то вот вам и стимул использовать ML в следующем проекте 😉 https://developer.android.com/dev-challenge
До 2 декабря 2019 года можно постить свои идеи проектов, которые решают реальные проблемы пользователей и используют ML.
Реализовать проект предстоит до 1 Мая 2020 при поддержке Гугла в том числе.
10 отобранных разработчиков получат фичеринг детища в google play, анонсы в их каналах, билеты на Google I/O 🚀
Если вы думали о том, на какую тему сделать следующее приложение под Android📱, то вот вам и стимул использовать ML в следующем проекте 😉 https://developer.android.com/dev-challenge
Сегодня люди используют совершенно разные устройства для потребления контента - смартфоны, компьютеры, планшеты и тд.
Разработчикам важно реализовать корректную навигацию не только в приложении, но и в целом в общей экосистеме продукта. Например, когда пользователь с компьютера поделился ссылкой с другом, а тот открыл его с мобильного устройства, на котором установлено (или нет) приложение, которое может обработать эту ссылку.
Улучшая пользовательский опыт, мы тем самым увеличиваем наши конверсии и лояльность к сервису в целом.
Реализовать корректную навигацию не так просто, как может показаться на первый взгляд, есть целый ряд кейсов:
- пользователь уже установил наше приложение,
- программа уже установлена, но ссылка может быть обработана только после обновления,
- пользователь зашел с компьютера
и т.д. и т.п.
#Firebase #DynamicLinks - простой и бесплатный инструмент, который поможет реализовать вам навигацию между продуктами.
Как его использовать - разобрал в рамках цикла обучающих примеров, приятного изучения! https://dimlix.com/deeplink-android/
Разработчикам важно реализовать корректную навигацию не только в приложении, но и в целом в общей экосистеме продукта. Например, когда пользователь с компьютера поделился ссылкой с другом, а тот открыл его с мобильного устройства, на котором установлено (или нет) приложение, которое может обработать эту ссылку.
Улучшая пользовательский опыт, мы тем самым увеличиваем наши конверсии и лояльность к сервису в целом.
Реализовать корректную навигацию не так просто, как может показаться на первый взгляд, есть целый ряд кейсов:
- пользователь уже установил наше приложение,
- программа уже установлена, но ссылка может быть обработана только после обновления,
- пользователь зашел с компьютера
и т.д. и т.п.
#Firebase #DynamicLinks - простой и бесплатный инструмент, который поможет реализовать вам навигацию между продуктами.
Как его использовать - разобрал в рамках цикла обучающих примеров, приятного изучения! https://dimlix.com/deeplink-android/
Блог Android разработчика
Deeplink в Android приложении
Задача: вести пользователя на определенный контент в приложении. Для этого используем Dynamic links от Firebase. Они позволяют Направить человека в Google play или AppStore если используется...
#Android #Composer или шаг на встречу #Flutter.
Composer - набор инструментов, представленный в canary сборке #AndroidStudio, позволяющий декларативно описывать UI.
Это значит, что вы описываете в коде что хотите видеть на экране, а остальное делают за вас. Состояние UI поддерживается консистентно модели данных. Т.е. вы изменили переменное состояние, а UI подстроился под новые "вводные". Вот такой вот продвинутый View Binding.
На мой взгляд идея хорошая, но поддерживать сложные layout может быть проблематично. С другой стороны это может подтолкнуть к упрощению интерфейсов. В общем посмотрим на реализацию в деле. https://developer.android.com/jetpack/compose
Composer - набор инструментов, представленный в canary сборке #AndroidStudio, позволяющий декларативно описывать UI.
Это значит, что вы описываете в коде что хотите видеть на экране, а остальное делают за вас. Состояние UI поддерживается консистентно модели данных. Т.е. вы изменили переменное состояние, а UI подстроился под новые "вводные". Вот такой вот продвинутый View Binding.
На мой взгляд идея хорошая, но поддерживать сложные layout может быть проблематично. С другой стороны это может подтолкнуть к упрощению интерфейсов. В общем посмотрим на реализацию в деле. https://developer.android.com/jetpack/compose
#Google продолжает унифицировать свои #Android #API делая жизнь разработчиков и производителей девайсов/прошивок проще.
Настала очередь биометрии. В #AndoroidX пакете androidx.biometric доступен #BiometricManager, который уже сам в зависимости от API LVL на устройстве использует правильные классы.
Унифицированные API от Google хороши тем, что потенциально сокращают цикл тестирования. Проверив, что API корректно работает на одном из устройств, можно быть уверенным (если доверяете гуглу), что оно же сработает на другом. https://android-developers.googleblog.com/2019/10/one-biometric-api-over-all-android.html
Настала очередь биометрии. В #AndoroidX пакете androidx.biometric доступен #BiometricManager, который уже сам в зависимости от API LVL на устройстве использует правильные классы.
Унифицированные API от Google хороши тем, что потенциально сокращают цикл тестирования. Проверив, что API корректно работает на одном из устройств, можно быть уверенным (если доверяете гуглу), что оно же сработает на другом. https://android-developers.googleblog.com/2019/10/one-biometric-api-over-all-android.html
Android Developers Blog
One Biometric API Over all Android
Posted by Isai Damier, Android Developer Platform Engineering (@isaidamier) Kevin Chyn, Android Framework Curtis Belmonte, Android Frame...
This media is not supported in your browser
VIEW IN TELEGRAM
Если архитектура приложения - говно, то даже незначительная правка может привести к интересным результатам...
Раньше в #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. Каждый тип сообщения используется для разных целей и несет внутри себя разную информацию. Пуши, например могут приходить когда...