Мобильная разработка за неделю #529 (4 — 10 марта)

В новой еженедельной подборке виджеты и изоляция в iOS, адаптация UI/UX для людей с проблемами зрения, сложно ли быть программистом-инженером сейчас, весенние выпуски маркетологов в мобайле и многое другое. Подключайтесь!

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

u90-l7cl-xmfgbj7tte3od2mh1o.jpeg

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• По граблям, по граблям. Пишем отзывчивый интерактивный виджет iOS 17
• Optional в Swift: 5 вещей, которые вы должны знать
• Continuations для взаимодействия асинхронных задач с синхронным кодом
• Введение в Изоляцию в Swift
• SwiftUI уроки (часть 3)
• Оптимальный архитектурный шаблон iOS-приложения
• Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• Уроки Swift: UITextField с анимированным плейсхолдером
• Альтернативные магазины приложений на iOS перестанут работать за пределами Европы
• Вопросы с собеседований: Что такое Hashable в Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMigrating my SwiftUI App to VisionOS in 2 Hours
• 377ae0333d0f4b7b97307c9eea5ee21a.gifScaling iOS at Bumble: Part 3/3 — Results and Developer Quality of Life
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Predicate: Usage, Composition, and Considerations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use TipKit to create tool tips in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGuide to the App Store Connect API: Calculate your iOS app«s average user rating for each version
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Test-Driven Development (TDD) in iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSimplifying Test Writing with Protocol Witnesses in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBad practice: loading a large image on the main thread
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHigh Performance Swift Apps
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMaking Ollie: Creating a local iOS app in a time of React Native
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEmbedded Swift on the Raspberry Pi Pico
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to create an iOS chat app
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI loading states with a twist; Solving a mutation puzzle
• 377ae0333d0f4b7b97307c9eea5ee21a.gifNerdy internals of an Apple text editor
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHigh Performance Swift Apps
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPaging ScrollView in SwiftUI for iOS 17
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngVisual Effect API — Stacked Cards — ScrollView
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCustom Calendar Tallies in SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMinimal Login Setup With Firebase Email Authentication
• 96716bcb926741e79bb1c284a88083ca.pngLoopover: пазл в стиле кубика Рубика
• 96716bcb926741e79bb1c284a88083ca.pngMLX Swift Chat: локальные LLM с MLX и SwiftUI

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Как увеличить шрифт так, чтобы контейнер не поехал? Адаптация UI/UX для людей с проблемами зрения в XML и Compose
• Проводим и проходим собеседование по системному дизайну
• Внедрение библиотеки навигации Modo в многомодульный Compose проект
• Microsoft прекращает работу Windows Subsystem for Android + Что происходит и почему?
• Разработка новостного приложения. Часть 3
• Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• Новый Text-To-Speech движок в Wear OS
• Google вводит новые сборы с разработчиков в рамках соблюдения DMA
• Начинаем тестирование со Сканером Доступности
• 377ae0333d0f4b7b97307c9eea5ee21a.gifState of Compose 2023
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreate Gemini loading animation using Jetpack compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRich media input from the keyboard in Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifChoosing Between Sealed Class and Sealed Interface in Kotlin for Android Development
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid CI: Build Caching on Github Actions
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTracing recompositions without boilerplate code
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 100 Android Interview Questions
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPrivacy Secure Android Keyboards
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to own a legacy Android codebase in 2024?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifProminent Disclosure and Consent Requirement
• 377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Compose Tips and Conventions for the @Composables to Make Them Better
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 10 Work Manager Questions 2024
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Project Cleanup for Smaller APKs, Faster Builds, and a Better Development Experience
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTHIS Is How You Create Custom Shapes in Jetpack Compose
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNew Android 15 Changes, App Update Prompts & AI Document Scanning
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLyricist & Voyager — Navigating the Compose Multiverse
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngImperative, declarative, object oriented, functional: four of a Kotlin kind
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin Variance… without Generics!
• 96716bcb926741e79bb1c284a88083ca.pngApollo Kotlin: сильно типизированный, кэширующий GraphQL-клиент
• 96716bcb926741e79bb1c284a88083ca.pngComposeInvestigator: отслеживание рекомпозиций

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

• Типы-расширения в Dart
• Основы управления состояниями во Flutter
• Навигация по страницам во Flutter
• Сериализация и десериализация — вошли и вышли
• Адаптивная вёрстка во Flutter
• Apple вернет PWA в iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMigrating to Koin Annotations in a multiplatform project
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter: Modularized Dependency Injection
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntegrating Stripe Payment Gateway into Your Flutter App

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

• Emcee — тест-раннер для запуска автотестов на Android и iOS: как работает, и какие проблемы помогает решить
• Быть хорошим инженером-программистом сейчас сложнее, чем когда-либо
• Как я перестал бояться и полюбил автоматизацию мобильных приложений — Robot Framework
• Как научить поиск мобильного приложения распознавать точные и ошибочные запросы
• Я.Субботник по мобильной разработке
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to build a documentation website for your project
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCase Study: Improving a Banking App with a UX Audit
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnpopular Opinion: It«s harder than ever to be a good software engineer
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIncrease Test Fidelity By Avoiding Mocks
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhy Bad Design is Good
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMobile App Security Best Practices in 2024
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSliders degrade UX (so do this instead)
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFeature flags are ruining your codebase
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFirebase«s Release Monitoring dashboard, Dart 3.3 release, and more dev news!
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLearn C# — Full Course with Mini-Projects

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

• Самые скачиваемые и зарабатывающие приложения в России в феврале 2024
• Самые скачиваемые приложения в мире в январе 2024
• Apple расширяет аналитику в App Store Connect
• Что ученые знают про темные паттерны в дизайне: как повышают конверсию и насколько роняют доверие?
• Avito Analytics meetup
• Маркетологи в мобайле (Spring Edition): Арина Еремян (Пятёрочка.Доставка)
• Маркетологи в мобайле (Spring Edition): Ася Загирова (Premier)
• Маркетологи в мобайле (Spring Edition): Мария Миткевич (Мегамаркет)
• Маркетологи в мобайле (Spring Edition): Василина Кузенко (ИЛЬ ДЕ БОТЭ)
• ЕС оштрафовала Apple на 1.8 млрд евро по антимонопольному иску Spotify
• В AppMetrica появился инструмент прогнозирования LTV и оттока

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

• Азы больших языковых моделей и трансформеров: декодер
• PKI для IOT, архитектура защищенной сети ESP32 + Mosquitto SSL и Flash Encryption для хранения сертификатов

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

© Habrahabr.ru