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

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

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