Мобильная разработка за неделю #529 (4 — 10 марта)
В новой еженедельной подборке виджеты и изоляция в iOS, адаптация UI/UX для людей с проблемами зрения, сложно ли быть программистом-инженером сейчас, весенние выпуски маркетологов в мобайле и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• По граблям, по граблям. Пишем отзывчивый интерактивный виджет iOS 17
• Optional в Swift: 5 вещей, которые вы должны знать
• Continuations для взаимодействия асинхронных задач с синхронным кодом
• Введение в Изоляцию в Swift
• SwiftUI уроки (часть 3)
• Оптимальный архитектурный шаблон iOS-приложения
• Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• Уроки Swift: UITextField с анимированным плейсхолдером
• Альтернативные магазины приложений на iOS перестанут работать за пределами Европы
• Вопросы с собеседований: Что такое Hashable в Swift
• Migrating my SwiftUI App to VisionOS in 2 Hours
• Scaling iOS at Bumble: Part 3/3 — Results and Developer Quality of Life
• Swift Predicate: Usage, Composition, and Considerations
• How to use TipKit to create tool tips in SwiftUI
• Guide to the App Store Connect API: Calculate your iOS app«s average user rating for each version
• Mastering Test-Driven Development (TDD) in iOS
• Simplifying Test Writing with Protocol Witnesses in Swift
• Bad practice: loading a large image on the main thread
• High Performance Swift Apps
• Making Ollie: Creating a local iOS app in a time of React Native
• Embedded Swift on the Raspberry Pi Pico
• How to create an iOS chat app
• SwiftUI loading states with a twist; Solving a mutation puzzle
• Nerdy internals of an Apple text editor
• High Performance Swift Apps
• Paging ScrollView in SwiftUI for iOS 17
• Visual Effect API — Stacked Cards — ScrollView
• Custom Calendar Tallies in SwiftUI
• Minimal Login Setup With Firebase Email Authentication
• Loopover: пазл в стиле кубика Рубика
• MLX Swift Chat: локальные LLM с MLX и SwiftUI
Android
• Как увеличить шрифт так, чтобы контейнер не поехал? Адаптация UI/UX для людей с проблемами зрения в XML и Compose
• Проводим и проходим собеседование по системному дизайну
• Внедрение библиотеки навигации Modo в многомодульный Compose проект
• Microsoft прекращает работу Windows Subsystem for Android + Что происходит и почему?
• Разработка новостного приложения. Часть 3
• Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• Новый Text-To-Speech движок в Wear OS
• Google вводит новые сборы с разработчиков в рамках соблюдения DMA
• Начинаем тестирование со Сканером Доступности
• State of Compose 2023
• Create Gemini loading animation using Jetpack compose
• Rich media input from the keyboard in Compose
• Choosing Between Sealed Class and Sealed Interface in Kotlin for Android Development
• Android CI: Build Caching on Github Actions
• Tracing recompositions without boilerplate code
• Top 100 Android Interview Questions
• Privacy Secure Android Keyboards
• How to own a legacy Android codebase in 2024?
• Prominent Disclosure and Consent Requirement
• Jetpack Compose Tips and Conventions for the @Composables to Make Them Better
• Top 10 Work Manager Questions 2024
• Android Project Cleanup for Smaller APKs, Faster Builds, and a Better Development Experience
• THIS Is How You Create Custom Shapes in Jetpack Compose
• New Android 15 Changes, App Update Prompts & AI Document Scanning
• Lyricist & Voyager — Navigating the Compose Multiverse
• Imperative, declarative, object oriented, functional: four of a Kotlin kind
• Kotlin Variance… without Generics!
• Apollo Kotlin: сильно типизированный, кэширующий GraphQL-клиент
• ComposeInvestigator: отслеживание рекомпозиций
Кроссплатформа
• Типы-расширения в Dart
• Основы управления состояниями во Flutter
• Навигация по страницам во Flutter
• Сериализация и десериализация — вошли и вышли
• Адаптивная вёрстка во Flutter
• Apple вернет PWA в iOS
• Migrating to Koin Annotations in a multiplatform project
• Flutter: Modularized Dependency Injection
• Integrating Stripe Payment Gateway into Your Flutter App
Разработка
• Emcee — тест-раннер для запуска автотестов на Android и iOS: как работает, и какие проблемы помогает решить
• Быть хорошим инженером-программистом сейчас сложнее, чем когда-либо
• Как я перестал бояться и полюбил автоматизацию мобильных приложений — Robot Framework
• Как научить поиск мобильного приложения распознавать точные и ошибочные запросы
• Я.Субботник по мобильной разработке
• How to build a documentation website for your project
• Case Study: Improving a Banking App with a UX Audit
• Unpopular Opinion: It«s harder than ever to be a good software engineer
• Increase Test Fidelity By Avoiding Mocks
• Why Bad Design is Good
• Mobile App Security Best Practices in 2024
• Sliders degrade UX (so do this instead)
• Feature flags are ruining your codebase
• Firebase«s Release Monitoring dashboard, Dart 3.3 release, and more dev news!
• Learn C# — Full Course with Mini-Projects
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в феврале 2024
• Самые скачиваемые приложения в мире в январе 2024
• Apple расширяет аналитику в App Store Connect
• Что ученые знают про темные паттерны в дизайне: как повышают конверсию и насколько роняют доверие?
• Avito Analytics meetup
• Маркетологи в мобайле (Spring Edition): Арина Еремян (Пятёрочка.Доставка)
• Маркетологи в мобайле (Spring Edition): Ася Загирова (Premier)
• Маркетологи в мобайле (Spring Edition): Мария Миткевич (Мегамаркет)
• Маркетологи в мобайле (Spring Edition): Василина Кузенко (ИЛЬ ДЕ БОТЭ)
• ЕС оштрафовала Apple на 1.8 млрд евро по антимонопольному иску Spotify
• В AppMetrica появился инструмент прогнозирования LTV и оттока
AI, Устройства, IoT
• Азы больших языковых моделей и трансформеров: декодер
• PKI для IOT, архитектура защищенной сети ESP32 + Mosquitto SSL и Flash Encryption для хранения сертификатов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.