В нашем новом дайджесте много всего интересного — метаморфозы архитектуры и анимации, разработка в Канаде и принципы хорошего UX, простые метрики качества, симулятор города в облаке, лучшие приложения и игры для Android и iOS и многое, многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
![](https://habrastorage.org/webt/oo/n0/g5/oon0g5u-ua4lk-deotmkeygf9gy.png)
iOS
• Метаморфоза архитектуры: от SOA до микрофичей
• Нативная навигация в SwiftUI до iOS16: опыт в проде
• Как мы централизованно управляем UITabBar в нашем iOS-приложении
• Bottom sheet: Navigation
• Как мы справляемся с большим размером кодовой базы в наших iOS-проектах
• Советы по отладке при работе над проектами Swift
• Разработка приложений с помощью Симулятора Аксессуаров HomeKit
• Редактируйте виджеты экрана блокировки когда устройство заблокировано
• Делегаты в Swift на простом примере
• Зональная Диаграмма со слоем затемнения вплоть до текущего момента времени
• Обзор новых API навигации в SwiftUI
• Управление загрузками в Xcode
• Правила работы с MainActor
• Улучшенные API навигации SwiftUI
• Малоизвестные возможности расширения VS Code Swift
• Создание пользовательского (индивидуального) макета в SwiftUI. Основы
• Apple ускоряет разработку гарнитуры смешанной реальности
• SwiftUI в масштабе
•
Using complex gestures in a SwiftUI ScrollView
•
Better SwiftUI navigation APIs
•
Developing Apps with the HomeKit Accessory Simulator
•
CoreData With SwiftUI
•
How to Pause and Resume Animation in SwiftUI (with chaining)
•
Dependency Graph Hell (iOS)
•
SwiftUI is convenient, but slow
•
Disclosure Group in SwiftUI
•
The iOS 16 Design Guidelines: An Illustrated Guide
•
Data Structures & Algorithms in Swift: Queue
•
Delete Multiple Rows from List in SwiftUI
•
Reorder items with Drag and Drop using SwiftUI
•
iOS — Dynamic text sizes done right
•
Sheets in SwiftUI explained with code examples
•
Redact Lock Screen Widgets when the device is locked
•
Requesting App Store Ratings with SwiftUI
•
Morphing Nodes Under SceneKit
•
Constraints in SceneKit — Exploring Advanced Camera Controls
•
Animated Background in SwiftUI
•
•
Loading 3D Model from Firebase
•
TextEditor in SwiftUI
•
Use Firestore and Firebase Realtime Database with Combine
•
@dynamicCallable in Swift explained with code examples
•
Never keyword in Swift: return type explained with code examples
•
Core ML Stable Diffusion: Stable Diffusion на Core ML и Apple Silicon
•
Bauly: уведомления в стиле iOS
•
AirTroller: флуд AirDrop
Android
• Анимации в Compose
• IT за рубежом. Как устроена Android разработка в Канаде
• Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose
• Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента
• Сколько стоит kapt в многомодульном проекте
• Сертификаты производителей Android-устройств использовались во вредоносном ПО
•
Network Calls in Lint: Best Practices
•
Unfold your UI
•
Per-App Language Preferences
•
Making Jellyfish move in Compose
•
3 Key Advantages Why Experienced Developers Choose Bazel over Gradle
•
A few Kotlin constructs
•
Building Chat App with BLE and Jetpack Compose
•
Building Scalable Android Apps
•
Basic Android Compose — Dynamic Lazy Column
•
Creating Instagram Story View in Android
•
Large Screens & Foldables Tutorial for Android
•
Android 13 Photo Picker With The Activity Result API
•
New framework from Slack — Circuit
•
Kotlin Abstraction
•
Jetpack Compose: Navigation with parcelable arguments
•
Background restrictions in Android
•
Unit test — Kotlin functions(with listeners, lambda) with Mockk
•
Navigating With Parcelable Arguments in Jetpack Compose
•
Jetpack Compose — When should I use derivedStateOf?
•
RenderNode for Bigger, Better Blurs
•
Paparazzi: показ экранов Android-приложения без устройства или эмулятора
•
Camposer: камера для Jetpack Compose
Кроссплатформа
• Заполнить виджет градиентом, изображением или гифкой с помощью ShaderMask
• Настройка Push Notifications на React Native & Expo Go
•
Facilitate app updates with Flutter upgrader
•
Maintaining the Flutter app state with a different approach
•
Auto-Read SMS with runtime permission — Flutter (Android)
•
How to Hack & Protect Flutter Apps
•
Bye React Native, Hello Native
•
Flutter Application from nothing to production
•
Flutter Native Ads
•
Passing variables from Dart to Kotlin and from Kotlin to Dart
•
Switch Between Dark Theme And Light Theme Mode In React Native & Expo Apps
Разработка
• Как разрабатывать UI, пока вы разрабатываете ПО
• Как приложения заботятся о своих пользователях. Основные принципы хорошего UX
• Простые метрики по качеству: как их вести и зачем они нужны
• Основные трудности и ошибки при разработке дизайн-системы
• Как провести эффективное тестирование мобильных приложений? Стратегия пятиуровневой пирамиды тестов
• Работа тестировщика (не) сказка? Разбираем зоны ответственности QA-экспертов в командах без СМС и регистрации
• Как мы собрали решение для пассажиров: транспортный процессинг и вот это вот все
• Podlodka #296: 1С
• RealityScan от Epic превращает реальные объекты в 3D модели
• Разработка собственной библиотеки
• UI-kit для мобильных приложений
• AWS SimSpace Weaver создает симулятор города в облаке
• VK запускает новый VK Cup с призовым фондом 4 миллиона рублей
• Этот простой вопрос заставил меня нанять пару Junior-программистов
•
Strategies I Use to Interview Candidates for Software Developer Positions
•
9 VSCode Extensions You Definitely Need as a Developer
•
Top Backend Frameworks for Mobile App Development in 2023
•
Experimenting with Push Notifications for User Retention: Tested on a Million-Strong Audience
•
Top 3 SVG Animation Techniques
•
What designers can learn from Apple’s new accessibility features
•
Sticking to UI/UX trends is a losing strategy
•
Software disenchantment
•
Why Your Team Needs a Weekly Metrics Review
•
Designing better developer interfaces (DI)
•
2022 World Cup Simulator Using Data Science, with Python
•
Down the wrong path: the disaster of the latest Duolingo UI update
•
Awesome CTO: быть CTO стартапа
Аналитика, маркетинг и монетизация
• Удержание и возвраты 2022 — отчет AppsFlyer
• Яндекс монетизирует приложения в Huawei AppGallery и Xiaomi GetApps
• Цвет 2023 года — Viva Magenta
• Лучшие приложения и игры для Android 2022 по мнению Google Play
• Лучшие приложения для iPhone и iPad в App Store Awards 2022
• Маркетологи в мобайле: Анна Ямбирт (TenChat)
• В Великобритании подан иск против Google на $16.3 млрд
• Переворот на мировых рынках мобильных игр — рост во всех регионах в 3 квартале
• Nufa: идеальное тело в один клик
• Большинство приложений не соответствуют требованиям GDPR
AI, Устройства, IoT
• Автоматизируем умный коттедж: куда потратить миллионы?
• Как подключить свой умный дом на базе Home Assistant к Марусе и управлять им голосом
• Информационная безопасность в IoT
• Alexa с помощью ИИ создает истории для детей
• Google впервые лицензировал свою ИИ-систему диагностики рака
• OpenAI создал бота для Minecraft на основе 70,000 часов видео
? Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
![](https://habrastorage.org/webt/oo/n0/g5/oon0g5u-ua4lk-deotmkeygf9gy.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Метаморфоза архитектуры: от SOA до микрофичей
• Нативная навигация в SwiftUI до iOS16: опыт в проде
• Как мы централизованно управляем UITabBar в нашем iOS-приложении
• Bottom sheet: Navigation
• Как мы справляемся с большим размером кодовой базы в наших iOS-проектах
• Советы по отладке при работе над проектами Swift
• Разработка приложений с помощью Симулятора Аксессуаров HomeKit
• Редактируйте виджеты экрана блокировки когда устройство заблокировано
• Делегаты в Swift на простом примере
• Зональная Диаграмма со слоем затемнения вплоть до текущего момента времени
• Обзор новых API навигации в SwiftUI
• Управление загрузками в Xcode
• Правила работы с MainActor
• Улучшенные API навигации SwiftUI
• Малоизвестные возможности расширения VS Code Swift
• Создание пользовательского (индивидуального) макета в SwiftUI. Основы
• Apple ускоряет разработку гарнитуры смешанной реальности
• SwiftUI в масштабе
•
![](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/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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Анимации в Compose
• IT за рубежом. Как устроена Android разработка в Канаде
• Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose
• Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента
• Сколько стоит kapt в многомодульном проекте
• Сертификаты производителей Android-устройств использовались во вредоносном ПО
•
![](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/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/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Заполнить виджет градиентом, изображением или гифкой с помощью ShaderMask
• Настройка Push Notifications на React Native & Expo Go
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как разрабатывать UI, пока вы разрабатываете ПО
• Как приложения заботятся о своих пользователях. Основные принципы хорошего UX
• Простые метрики по качеству: как их вести и зачем они нужны
• Основные трудности и ошибки при разработке дизайн-системы
• Как провести эффективное тестирование мобильных приложений? Стратегия пятиуровневой пирамиды тестов
• Работа тестировщика (не) сказка? Разбираем зоны ответственности QA-экспертов в командах без СМС и регистрации
• Как мы собрали решение для пассажиров: транспортный процессинг и вот это вот все
• Podlodka #296: 1С
• RealityScan от Epic превращает реальные объекты в 3D модели
• Разработка собственной библиотеки
• UI-kit для мобильных приложений
• AWS SimSpace Weaver создает симулятор города в облаке
• VK запускает новый VK Cup с призовым фондом 4 миллиона рублей
• Этот простой вопрос заставил меня нанять пару Junior-программистов
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Удержание и возвраты 2022 — отчет AppsFlyer
• Яндекс монетизирует приложения в Huawei AppGallery и Xiaomi GetApps
• Цвет 2023 года — Viva Magenta
• Лучшие приложения и игры для Android 2022 по мнению Google Play
• Лучшие приложения для iPhone и iPad в App Store Awards 2022
• Маркетологи в мобайле: Анна Ямбирт (TenChat)
• В Великобритании подан иск против Google на $16.3 млрд
• Переворот на мировых рынках мобильных игр — рост во всех регионах в 3 квартале
• Nufa: идеальное тело в один клик
• Большинство приложений не соответствуют требованиям GDPR
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Автоматизируем умный коттедж: куда потратить миллионы?
• Как подключить свой умный дом на базе Home Assistant к Марусе и управлять им голосом
• Информационная безопасность в IoT
• Alexa с помощью ИИ создает истории для детей
• Google впервые лицензировал свою ИИ-систему диагностики рака
• OpenAI создал бота для Minecraft на основе 70,000 часов видео
? Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.