Темы



Мобильная разработка за неделю #554 (2 — 8 сентября)

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

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

lzu0npdwhgx6oad4okrcfkzyzwy.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
• Как я решал задачу получения доступа к данным банковских приложений на iOS
• Дружим iPhone и ESP32. Часть 1. ESP Arduino Core
• Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis
• Время сборки и верификация модулей
• Поваренная книга SwiftUI: списки и навигация — Часть 1
• Я получил новый iPhone, но мой аккаунт в социальных сетях заблокирован
• Apple забанила аккаунт компании победителя WWDC
• 377ae0333d0f4b7b97307c9eea5ee21a.gifТемная сторона однонаправленных архитектур Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifJavaScript to Swift and back: Bridging location services in WKWebView
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftData«s new Index and Unique macros
• 377ae0333d0f4b7b97307c9eea5ee21a.gifElevate Your Testing Game with Swift Testing
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLimit Swift Concurrency«s cooperative pool
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCustom hover effects in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBackport SwiftUI modifiers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHiding A SwiftUI View From Switch Control
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAnimating SF Symbols on iOS 18
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe AirDrop Conundrum: Passing Custom Models From and To Your App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Modifiers Deep Dive: containerRelativeFrame
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow-to: Symbolicate MetricKit Crashdiagnostics
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWalmart Software Engineer III — IOS (IN3) My Interview Experience
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Custom Popups — iOS 17 & 18
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI TextRenderer
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Reorderable Scroll View — Custom Drag & Drop With Scroll Detection — iOS 18
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreate Modular iOS Apps with Swift Packages: Step-by-Step Guide!
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI — Reorder a List (2 Ways)
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFix This Problem with SwiftUI Lists
• 96716bcb926741e79bb1c284a88083ca.pngVerge — надежный фреймворк управления состоянием
• 96716bcb926741e79bb1c284a88083ca.pngSwift AST Explorer — визуализация абстрактного синтаксического дерева
• 96716bcb926741e79bb1c284a88083ca.pngSSNeumorphicView — неоморфизм для UIKit и SwiftUI

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Интересные приёмы, взятые из исходников Android
• Создаем атомный лоадер на Jetpack Compose
• Композим иконки. Улучшаем семантику и скорость отрисовки
• NFC на Android: создание системы предоплаты с использованием NDEF меток
• Фокус в Android TV
• Многопоточность в Android: тогда и сейчас
• Советы по обработке Insets для обеспечения edge-to-edge на Android 15
• Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso
• Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
• Организация кода в проекте — в какой пакет положить Kotlin класс
• Android 15 опубликован в AOSP
• 377ae0333d0f4b7b97307c9eea5ee21a.gifString vs StringBuffer vs StringBuilder
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCoroutine Testing — Never ending tests & backgroundScope
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAvoiding unintentional device exclusion in an Android app
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio Koala Feature Drop is Stable!
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTransforming Figma UI Designs into Jetpack Compose Code with Google AI Studio: A Step-by-Step Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifComposable-scoped ViewModel: An interesting experiment
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLoading Initial Data in LaunchedEffect vs. ViewModel
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Provide Photos to the Gallery for Running UI Automated Tests
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Navigation in Jetpack Compose: A Guide to Using the inclusive Attribute
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Create an Atomic Loader in Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifInsets handling tips for Android 15«s edge-to-edge enforcement
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin KSP — how to automate everything in the world
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBest way to keep state in a ViewModel
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnlock Android Jetpack Components: Hidden Tricks to Build Successful App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Compose Videos with ExoPlayer
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid dev very overengineered and difficult to get into?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAnti-Pattern: Stop Leaking Kotlin Flow Collectors in Your Android ViewModel
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding for the future of Android
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhat«s new in Android Studio Koala
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMaster Kotlin Coroutines & Flows
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuild your own compiler with KSP
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApplying the State Pattern in Kotlin
• 96716bcb926741e79bb1c284a88083ca.pngVoice — минималистичный плеер аудиокниг
• 96716bcb926741e79bb1c284a88083ca.pngaDp — масштабирование дизайна Compose для разных экранов

malx8hbgozt6lee8rmxmg96_s6a.pngКроссплатформа

• Flutter Web. Часть 1
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWriting a Kotlin Multiplatform App from Start to Store
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Native iOS Navigation from Compose Multiplatform
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe 5 Design Patterns For Every Flutter Engineer
• 377ae0333d0f4b7b97307c9eea5ee21a.gif5 Essential Design Patterns Every Flutter Engineer Should Master
• 377ae0333d0f4b7b97307c9eea5ee21a.gifShrink Your KMP Build: The Power of «Internal» Functions
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter State Management & Design Patterns: Do You Really Need Them?
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuild an Animated Search Bar in Flutter

7081c634ec176ab6b953d9d19e82a09a.pngРазработка

• Следим за производительностью SDK. Доклад Яндекса
• Оставляйте что-нибудь на завтра
• Анализируй-сокращай. Как мы перешли от вендоров на инхаус и как это сказалось на UX и архитектуре
• Новый подход к редизайну: как мы создаем удобный интерфейс для главного экрана платежей и переводов
• SkillStaff: рынок ИТ-аутстаффинга вырастет до 265 млрд к концу 2024 год
• Самые высокооплачиваемые вакансии августа в сфере разработки приложений
• Архитектурное собеседование — по обе стороны баррикад •
• Backend-Driven UI и конструкторы. Благо или зло?
• Открытое собеседование — технический руководитель: разбор кейса
• Как работает авторизация и аутентификация — OAuth, JWT, webauthn, RBAC, ABAC
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAI development and agile don«t mix well, study shows
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSynchronizing pong to music with constrained optimization
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExplicit is better than implicit
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe Boolean Trap

509dc9bde69347ecbe0c21ff2973d7e7.jpgАналитика, маркетинг и монетизация

• AppsFlyer представил Attribution Reporting API для Android Privacy Sandbox
• Почему и как мы платим за свою же органику в сторах
• Маркетологи в мобайле: Всеволод Самсонов (Flowwow)
• Hello Wonder — браузер с ИИ для детей
• Пуш-уведомления. Интересны, временами непонятны
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKey languages for localization: Here«s how demand changed in 2023
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHacking sales as an introvert

8538129f5e7b404a720121cb9c3814db.jpgAI, Устройства, IoT

• Как Яндекс создавал новую end2end-модель генерации коротких видео
• LoRa. Рекорды дальности связи
• Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL
• Стандарт Ki предлагает беспроводное питание для кухонных приборов

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

© Habrahabr.ru