В нашем новом дайджесте доступ к данным банковских приложений и интересные приёмы в исходниках Android, атомный лоадер на Jetpack Compose и переход на инхаус-разработку, своя органика в сторах, рекорды дальности связи, стереотипы об автотестах ит многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

iOS
• Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
• Как я решал задачу получения доступа к данным банковских приложений на iOS
• Дружим iPhone и ESP32. Часть 1. ESP Arduino Core
• Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis
• Время сборки и верификация модулей
• Поваренная книга SwiftUI: списки и навигация — Часть 1
• Я получил новый iPhone, но мой аккаунт в социальных сетях заблокирован
• Apple забанила аккаунт компании победителя WWDC
•
Темная сторона однонаправленных архитектур Swift
•
JavaScript to Swift and back: Bridging location services in WKWebView
•
SwiftData’s new Index and Unique macros
•
Elevate Your Testing Game with Swift Testing
•
Limit Swift Concurrency’s cooperative pool
•
Custom hover effects in SwiftUI
•
Backport SwiftUI modifiers
•
Hiding A SwiftUI View From Switch Control
•
Animating SF Symbols on iOS 18
•
The AirDrop Conundrum: Passing Custom Models From and To Your App
•
SwiftUI Modifiers Deep Dive: containerRelativeFrame
•
How-to: Symbolicate MetricKit Crashdiagnostics
•
Walmart Software Engineer III — IOS (IN3) My Interview Experience
•
SwiftUI Custom Popups — iOS 17 & 18
•
SwiftUI TextRenderer
•
SwiftUI Reorderable Scroll View — Custom Drag & Drop With Scroll Detection — iOS 18
•
Create Modular iOS Apps with Swift Packages: Step-by-Step Guide!
•
SwiftUI — Reorder a List (2 Ways)
•
Fix This Problem with SwiftUI Lists
•
Verge — надежный фреймворк управления состоянием
•
Swift AST Explorer — визуализация абстрактного синтаксического дерева
•
SSNeumorphicView — неоморфизм для UIKit и SwiftUI
Android
• Интересные приёмы, взятые из исходников Android
• Создаем атомный лоадер на Jetpack Compose
• Композим иконки. Улучшаем семантику и скорость отрисовки
• NFC на Android: создание системы предоплаты с использованием NDEF меток
• Фокус в Android TV
• Многопоточность в Android: тогда и сейчас
• Советы по обработке Insets для обеспечения edge-to-edge на Android 15
• Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso
• Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
• Организация кода в проекте — в какой пакет положить Kotlin класс
• Android 15 опубликован в AOSP
•
String vs StringBuffer vs StringBuilder
•
Coroutine Testing — Never ending tests & backgroundScope
•
Avoiding unintentional device exclusion in an Android app
•
Android Studio Koala Feature Drop is Stable!
•
Transforming Figma UI Designs into Jetpack Compose Code with Google AI Studio: A Step-by-Step Guide
•
Composable-scoped ViewModel: An interesting experiment
•
Loading Initial Data in LaunchedEffect vs. ViewModel
•
How to Provide Photos to the Gallery for Running UI Automated Tests
•
Mastering Navigation in Jetpack Compose: A Guide to Using the inclusive Attribute
•
How to Create an Atomic Loader in Jetpack Compose
•
Insets handling tips for Android 15’s edge-to-edge enforcement
•
Kotlin KSP — how to automate everything in the world
•
Best way to keep state in a ViewModel
•
Unlock Android Jetpack Components: Hidden Tricks to Build Successful App
•
Android Compose Videos with ExoPlayer
•
Android dev very overengineered and difficult to get into?
•
Anti-Pattern: Stop Leaking Kotlin Flow Collectors in Your Android ViewModel
•
Building for the future of Android
•
What’s new in Android Studio Koala
•
Master Kotlin Coroutines & Flows
•
Build your own compiler with KSP
•
Applying the State Pattern in Kotlin
•
Voice — минималистичный плеер аудиокниг
•
aDp — масштабирование дизайна Compose для разных экранов
Кроссплатформа
• Flutter Web. Часть 1
•
Writing a Kotlin Multiplatform App from Start to Store
•
Using Native iOS Navigation from Compose Multiplatform
•
The 5 Design Patterns For Every Flutter Engineer
•
5 Essential Design Patterns Every Flutter Engineer Should Master
•
Shrink Your KMP Build: The Power of ‘Internal’ Functions
•
Flutter State Management & Design Patterns: Do You Really Need Them?
•
Build an Animated Search Bar in Flutter
Разработка
• Следим за производительностью SDK. Доклад Яндекса
• Оставляйте что-нибудь на завтра
• Анализируй-сокращай. Как мы перешли от вендоров на инхаус и как это сказалось на UX и архитектуре
• Новый подход к редизайну: как мы создаем удобный интерфейс для главного экрана платежей и переводов
• SkillStaff: рынок ИТ-аутстаффинга вырастет до 265 млрд к концу 2024 год
• Самые высокооплачиваемые вакансии августа в сфере разработки приложений
• Архитектурное собеседование — по обе стороны баррикад •
• Backend-Driven UI и конструкторы. Благо или зло?
• Открытое собеседование — технический руководитель: разбор кейса
• Как работает авторизация и аутентификация — OAuth, JWT, webauthn, RBAC, ABAC
•
AI development and agile don’t mix well, study shows
•
Synchronizing pong to music with constrained optimization
•
Explicit is better than implicit
•
The Boolean Trap
Аналитика, маркетинг и монетизация
• AppsFlyer представил Attribution Reporting API для Android Privacy Sandbox
• Почему и как мы платим за свою же органику в сторах
• Маркетологи в мобайле: Всеволод Самсонов (Flowwow)
• Hello Wonder — браузер с ИИ для детей
• Пуш-уведомления. Интересны, временами непонятны
•
Key languages for localization: Here’s how demand changed in 2023
•
Hacking sales as an introvert
AI, Устройства, IoT
• Как Яндекс создавал новую end2end-модель генерации коротких видео
• LoRa. Рекорды дальности связи
• Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL
• Стандарт Ki предлагает беспроводное питание для кухонных приборов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
• Как я решал задачу получения доступа к данным банковских приложений на iOS
• Дружим iPhone и ESP32. Часть 1. ESP Arduino Core
• Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis
• Время сборки и верификация модулей
• Поваренная книга SwiftUI: списки и навигация — Часть 1
• Я получил новый iPhone, но мой аккаунт в социальных сетях заблокирован
• Apple забанила аккаунт компании победителя WWDC
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Интересные приёмы, взятые из исходников Android
• Создаем атомный лоадер на Jetpack Compose
• Композим иконки. Улучшаем семантику и скорость отрисовки
• NFC на Android: создание системы предоплаты с использованием NDEF меток
• Фокус в Android TV
• Многопоточность в Android: тогда и сейчас
• Советы по обработке Insets для обеспечения edge-to-edge на Android 15
• Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso
• Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
• Организация кода в проекте — в какой пакет положить Kotlin класс
• Android 15 опубликован в AOSP
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Flutter Web. Часть 1
•

•

•

•

•

•

•


• Следим за производительностью SDK. Доклад Яндекса
• Оставляйте что-нибудь на завтра
• Анализируй-сокращай. Как мы перешли от вендоров на инхаус и как это сказалось на UX и архитектуре
• Новый подход к редизайну: как мы создаем удобный интерфейс для главного экрана платежей и переводов
• SkillStaff: рынок ИТ-аутстаффинга вырастет до 265 млрд к концу 2024 год
• Самые высокооплачиваемые вакансии августа в сфере разработки приложений
• Архитектурное собеседование — по обе стороны баррикад •
• Backend-Driven UI и конструкторы. Благо или зло?
• Открытое собеседование — технический руководитель: разбор кейса
• Как работает авторизация и аутентификация — OAuth, JWT, webauthn, RBAC, ABAC
•

•

•

•


• AppsFlyer представил Attribution Reporting API для Android Privacy Sandbox
• Почему и как мы платим за свою же органику в сторах
• Маркетологи в мобайле: Всеволод Самсонов (Flowwow)
• Hello Wonder — браузер с ИИ для детей
• Пуш-уведомления. Интересны, временами непонятны
•

•


• Как Яндекс создавал новую end2end-модель генерации коротких видео
• LoRa. Рекорды дальности связи
• Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL
• Стандарт Ki предлагает беспроводное питание для кухонных приборов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
clerik_r
Спасибо за подборку!
RoboForm
Спасибо, что читаете! :)