В этом выпуске MVVM и MVI, близкие взаимодействия и плавные переходы, годы в геймдеве и много Flutter, самые скачиваемые и зарабатывающие приложения июня и много других интересных материалов!
![](https://habrastorage.org/r/w780q1/webt/qp/xt/0z/qpxt0zdjrf80amuqaoatswkqeiw.jpeg)
Советую запастись попкорном и кока-колой — это вечернее шоу о том, как я ни в чем себе не отказывал, в очередной раз реализуя MVVM в одном из своих домашних проектов. Сегодня вторая серия: про то, как из MVC сделать MVVM и не наступить в реактивщину. Мы будем реализовывать специфичные для платформы части общего модуля и интегрировать их в iOS- и Android-приложения. Как и прежде, я предполагаю, что читатель уже имеет базовые знания о Kotlin Multiplatform, поэтому не буду рассказывать о конфигурациях проектов и других вещах, не связанных с MVI в Kotlin Multiplatform.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• (+7) Как я простые циклы искал
• (+3) Ликбез для дизайнеров с конференции Apple WWDC 2020
• Работаем с Nearby Interaction в iOS 14
• Новые App Store Connect API для управления приложениями в App Store
• Нет, Apple не движется в сторону неоморфизма
•
Лучшие iOS библиотеки/фреймворки в 2020 году
•
Восхитительные интерактивные анимации
•
6 удивительных SwiftUI-библиотек для использования в вашем следующем проекте
•
Неоморфизм на SwiftUI
•
Прощайте, Target Actions. привет, UIActions
•
Создаем простые и более современные Collection View в iOS 14+
•
Как создать FAB в iOS на Swift
•
Мои лучшие 5 хитростей работы с Xcode
•
Анимируем скучные TableView в iOS-приложении
•
10 снипетов с WWDC20
•
Что нового в UIMenu и ContextMenu в iOS 14
•
Работаем с Swift Generics: практическое руководство по повторному использованию кода
•
Создаем UILabel с динамическим размером шрифта в Swift 5
•
Рисование произвольных фигур с помощью UIBezierPath
•
Firebase remote config в iOS
•
OpenMTP: передача файлов с macOS на Android
•
Swift Sunburst Diagram: многоуровневая круговая диаграмма на SwiftUI
Android
• (+19) Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet
• (+19) Современные Android-устройства достаточно безопасны и вот почему
• (+9) «На первую платформу прибывает...» Истории разработчиков в AppGallery от Huawei
• (+4) Что нового в RxJava 3
• Начат прием заявок на 2020 Material Design Award
•
Оптимизируем скорость сборки вашего Android-проекта
•
Начинаем работать с MVI-архитектурой на Android
•
Кастомные Drawable
•
Пишем плавный код на Kotlin
•
Курс Kotlin со сборкой AR Android-приложения
•
Как реализовать HyperLog на Kotlin в Android
•
Уведомления для людей
•
Firebase OTP аутентификация в Android
•
Реализуем In-App обновления в Android
•
BaseActivity и BaseFragment – монстры
•
Определение активности пользователей в Android с помощью Transition API
•
Путешествие Jetpack
•
TextWriter: анимированный текст
•
Antimine — Minesweeper: сапер для Android
Разработка
• (+28) Мои десять лет в геймдеве
• (+15) Страх и ненависть в геймдеве: от первых шагов до первых денег
• (+13) Flutter. Разбираемся, как рисовать различные фигуры с помощью CustomClipper
• (+10) Flutter. Упрощаем компоновку виджетов с помощью Dart расширений
• (+9) Автоматизация тестирования в микросервисной архитектуре
• (+7) Лексоранги — что это такое и как их использовать для эффективной сортировки списков
• (+4) Model-Widget-WidgetModel, или какой архитектурой пользуется Flutter-команда в Surf
• (+2) Какой хороший app store Xiaomi. Удалил приложение из своего магазина после обновления, потому что оно на русском языке
• (+1) Как найти границы на клиенте и сервере
• (+1) Безопасность мобильных устройств и приложений: пять популярных сценариев атак и способы защиты
• Facebook SDK вызвал падение приложений по всему миру
•
15 видео-руководств по созданию приложений на Flutter
• make sense: Об опыте создания продукта с нуля и различиях в работе и навыках продакт и проджект-менеджеров
• Podlodka #171: дата-центры
• Дизайн приложений: примеры для вдохновения #8
• Flutter будет работать на Linux
• Опрос Developer Economics за 2-й квартал 2020 года
• Как стать разработчиком игр 2020
• Меню, метафоры и материалы: основные этапы проектирования пользовательского интерфейса
• Как проектировать лучшие кнопки
• Как мы сделали приложение по доставке для ресторанов и кафе за 200 тысяч рублей бесплатным
•
Принимаем платежи с помощью Google Pay через Stripe во Flutter
•
Изучаем UX: как создать супер приложение
•
Самосовершенствование может быть самой большой проблемой для разработчиков. Так как мы это делаем?
•
Prism: обои на Flutter
Аналитика, маркетинг и монетизация
• В Tetris запустилось игровое шоу Primetime с призовым фондом в $1 млн.
• Павел Дуров снова призвал бороться с монополией Apple и Google
• Использовать мобильные приложения во 2 квартале 2020 года во всем мире стали на 40% больше
• Самые скачиваемые приложения в июне 2020
• Самые зарабатывающие приложения в июне 2020
• S’More: мобильный размытый дейтинг
• Mail.ru Group запустила Look-alike таргетинг на основе данных мобильных трекеров
• myTracker начал поддерживать мультиплатформенную атрибуцию
• Как использовать когортный анализ для уменьшения оттока пользователей и принятия лучших решений
AI, Устройства, IoT
• (+111) Собираем недорогой 9.7" E-Ink дисплей для отображения чего угодно
• (+25) Встраиваемый компьютер AntexGate. От прототипа к серийному производству
• (+7) Чеклист для проекта по машинному обучению
• (+4) Как изучать Machine Learning 5 дней в неделю 9 месяцев подряд
• Ученые сделали перчатку, преобразующую язык жестов в текст
• Как я пытался скопировать чужую ERP-систему и попал на 7 млн рублей
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/webt/qp/xt/0z/qpxt0zdjrf80amuqaoatswkqeiw.jpeg)
Советую запастись попкорном и кока-колой — это вечернее шоу о том, как я ни в чем себе не отказывал, в очередной раз реализуя MVVM в одном из своих домашних проектов. Сегодня вторая серия: про то, как из MVC сделать MVVM и не наступить в реактивщину. Мы будем реализовывать специфичные для платформы части общего модуля и интегрировать их в iOS- и Android-приложения. Как и прежде, я предполагаю, что читатель уже имеет базовые знания о Kotlin Multiplatform, поэтому не буду рассказывать о конфигурациях проектов и других вещах, не связанных с MVI в Kotlin Multiplatform.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
![](https://habrastorage.org/webt/5e/k7/bf/5ek7bfhjzilma-pbharuioaa7lw.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• (+7) Как я простые циклы искал
• (+3) Ликбез для дизайнеров с конференции Apple WWDC 2020
• Работаем с Nearby Interaction в iOS 14
• Новые App Store Connect API для управления приложениями в App Store
• Нет, Apple не движется в сторону неоморфизма
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• (+19) Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet
• (+19) Современные Android-устройства достаточно безопасны и вот почему
• (+9) «На первую платформу прибывает...» Истории разработчиков в AppGallery от Huawei
• (+4) Что нового в RxJava 3
• Начат прием заявок на 2020 Material Design Award
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• (+28) Мои десять лет в геймдеве
• (+15) Страх и ненависть в геймдеве: от первых шагов до первых денег
• (+13) Flutter. Разбираемся, как рисовать различные фигуры с помощью CustomClipper
• (+10) Flutter. Упрощаем компоновку виджетов с помощью Dart расширений
• (+9) Автоматизация тестирования в микросервисной архитектуре
• (+7) Лексоранги — что это такое и как их использовать для эффективной сортировки списков
• (+4) Model-Widget-WidgetModel, или какой архитектурой пользуется Flutter-команда в Surf
• (+2) Какой хороший app store Xiaomi. Удалил приложение из своего магазина после обновления, потому что оно на русском языке
• (+1) Как найти границы на клиенте и сервере
• (+1) Безопасность мобильных устройств и приложений: пять популярных сценариев атак и способы защиты
• Facebook SDK вызвал падение приложений по всему миру
•
![](https://habrastorage.org/getpro/habr/post_images/976/d3e/38a/976d3e38a34b003f86f91795524af9f8.gif)
• make sense: Об опыте создания продукта с нуля и различиях в работе и навыках продакт и проджект-менеджеров
• Podlodka #171: дата-центры
• Дизайн приложений: примеры для вдохновения #8
• Flutter будет работать на Linux
• Опрос Developer Economics за 2-й квартал 2020 года
• Как стать разработчиком игр 2020
• Меню, метафоры и материалы: основные этапы проектирования пользовательского интерфейса
• Как проектировать лучшие кнопки
• Как мы сделали приложение по доставке для ресторанов и кафе за 200 тысяч рублей бесплатным
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• В Tetris запустилось игровое шоу Primetime с призовым фондом в $1 млн.
• Павел Дуров снова призвал бороться с монополией Apple и Google
• Использовать мобильные приложения во 2 квартале 2020 года во всем мире стали на 40% больше
Во 2 квартале 2020 российские пользователи потратили...
Во 2 квартале 2020 российские пользователи потратили в приложениях $328 млн, что на 30% больше, чем в первом квартале 2019 года. При этом $233 млн были потрачены на мобильные игры. На платформе iOS пользователи потратили на 35% больше, чем год назад, — $144 млн, в Google Play — на 30% больше, $184 млн. Расходы пользователей на неигровые приложения на iOS выросли на 30% и составили $67 млн, в то время как пользователи Google Play увеличили свои расходы на 35% и потратили $76,3 млн.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/609/57a/712/60957a71293b5c8c4ca650ed6f868203.png)
![image](https://habrastorage.org/getpro/habr/post_images/609/57a/712/60957a71293b5c8c4ca650ed6f868203.png)
• Самые скачиваемые приложения в июне 2020
• Самые зарабатывающие приложения в июне 2020
• S’More: мобильный размытый дейтинг
• Mail.ru Group запустила Look-alike таргетинг на основе данных мобильных трекеров
• myTracker начал поддерживать мультиплатформенную атрибуцию
• Как использовать когортный анализ для уменьшения оттока пользователей и принятия лучших решений
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• (+111) Собираем недорогой 9.7" E-Ink дисплей для отображения чего угодно
• (+25) Встраиваемый компьютер AntexGate. От прототипа к серийному производству
• (+7) Чеклист для проекта по машинному обучению
• (+4) Как изучать Machine Learning 5 дней в неделю 9 месяцев подряд
• Ученые сделали перчатку, преобразующую язык жестов в текст
• Как я пытался скопировать чужую ERP-систему и попал на 7 млн рублей
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.