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

iOS
• Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк
• Постепенный перенос проектов и пакетов на Swift 6
• Пишем виджет в Control Center (iOS 18)
• Изучаем новые структуры данных для iOS разработчика
• Куб для ваших сторис*
• Что нового в Swift 6?
• По оценкам IDC, в 2024 году Apple продаст менее 500 тысяч устройств Vision Pro
• Как работает AdAttributionKit
• Поваренная книга SwiftUI: кнопки — Часть 1
•
Mastering Animatable and AnimatablePair in SwiftUI
•
SwiftUI can be a bit… eager
•
Zoom transitions
•
Backpressure in Combine
•
Building a custom application UI with SwiftUI & iOS 18 API
•
Building the inverted scroll of a messaging app
•
Mobile Deployment Pipelines for $0
•
5 Strategies for Managing Image Resources Effectively in iOS
•
Automating pre-production iOS app builds
•
Running a package from Xcode Build phase
•
XCUITest (iOS) Automation with POM Techniques
•
Write Clean and Maintainable XCUITests with Screen Chaining
•
AI features in Xcode 16: is it good?
•
Check if your app has a newer version on the App Store using Swift
•
Streamlining Menu Browsing with OCR Text Recognition
•
Utilizing Apple’s oslog for Enhanced Logging in Xcode
•
Zoom Transitions — SwiftUI
•
AI Features in Xcode 16: is it Good or Bad?
•
Laying out views with ContainerRelativeFrame in SwiftUI
•
Animated Scroll Wheel Picker — SwiftUI
•
Removing More Button from Tab bar — SwiftUI
•
Create Interactive In-App Polls With SwiftUI
•
StreamUI — генерация видео в SwiftUI
•
DSFDropFilesView — NSView для drag-and-drop файлов
Android
• Развенчиваем 6 мифов про современную Android-разработку
• Kotlin Coroutines под капотом
• Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose
• Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
• Видео с прозрачностью на Jetpack Compose – запросто
• Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция
•
Architecture related decisions in Android — Error handling and Monads
•
Kotlin’s @Keep Annotation: Keeping Your Code Safe and Sound
•
Let’s clarify some misconceptions around android development these days
•
Declarative Gradle
•
Top 5 Android Studio Plugins
•
Which Map Transformation Should I Use?
•
Kotlin Builder Inference Explained
•
RxJava to Kotlin Coroutines: The Ultimate Migration Guide
•
How to Configure Android Build System?
•
Kotlin Code Reuse: Composing like you’re Inheriting
•
Android MVVM Architecture for A Production Ready App
•
Leveraging BFF and Dynamic UI in Android Applications with Jetpack Compose
•
Safe your API Keys via Secrets Gradle plugin
•
Ticket UI Using compose
•
Improving Perceived Performance with Delayed Visibility
•
From Zero to Billions: Building a High-Performance Kotlin App in Two Months
•
The Top 5 Practices That Make My Android Architecture More Scalable
•
Generating Kotlin SDKs with Smithy
•
Kotlin/Native BigDecimal: A drop-in replacement for java.math.BigDecimal
•
K2: How to Make a Better Compiler but Keep Kotlin the Same
•
It’s Compose O’Clock, Draw on My Watch!
•
Crashlytics for your Android apps
•
Kotlin Code Reuse: Composing like you’re Inheriting
•
Exploring Material3 Adaptive Layout
•
Valkyrie — генерация Compose ImageVector из SVG/XML
•
Fig — Google Таблицы в качестве удаленного конфига
Кроссплатформа
• Первый взгляд на переход с Xamarin Native на Flutter
• Как мы переходили с Xamarin на Flutter
• Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать
•
Mastering Date and Time Management in iOS with Kotlinx DateTime: A Step-by-Step Guide
•
Build Android and iOS apps with SwiftUI
•
Google Pay Integration in Flutter App
•
Codemagic setup with flavors. Flutter CI/CD
•
HTTP Requests in Kotlin Multiplatform With Ktor — KMP for Beginners
•
Compose Multiplatform performance on iOS
•
Code push for Flutter
•
Rewriting freezed with Macros
•
FlowMVI — архитектурный фреймворк Kotlin Multiplatform на основе корутинов
•
Colors AI — генератор цветовых схем с ИИ на Flutter
Разработка
• Новый опрос Developer Nation
• Сам написал, сам полетал: как и зачем я разработал 3D-игру с нуля под компьютеры из 90-х в 2024 году?
• Важные вещи в программировании 2024
• Моё тестовое в Билайн на позицию стажёра
• РКН по ошибке снес безобидное приложение в AppStore, на волне последних чисток
• 5 советов по разработке игр от соло-разработчика
• System Design-интервью для практиков
• 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования
• Локальная разработка в Авито
• Rust и Kotlin растут в TIOBE Index
• ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
•
Building and scaling Notion’s data lake
•
MobileLLM — Language Models for On-Device Use Cases
•
How to set priorities?
•
Weird things I learned while writing an x86 emulator
•
AI on Mac Made Easy: How to run LLMs locally with OLLAMA in Swift/SwiftUI
•
Learn TypeScript — Full Course for Beginners
Аналитика, маркетинг и монетизация
• Sekai получил лицензию на «Наруто» для разработки приложений для фанатов аниме
• 76% приложений и сайтов с подпиской использует темные паттерны
• Приложение для арт-терапии Scribble Journey позволяет выразить эмоции с помощью зарисовок
• Самые скачиваемые и зарабатывающие приложения в России в июне 2024
• Apple «временно» одобрила Epic Games Store, но потребовала изменений
• Pokemon Go: история революции в дополненной реальности
• Lamoda Tech Analytics Party: материалы встречи
• Wayther — приложение с прогнозом погоды, разработанное специально для автопутешествий
• Карты Google на iOS начали показывать спидометр (через 5 лет после Android)
•
How to improve funnel conversion
•
How apps can innovate
AI, Устройства, IoT
• Обзор нейросетей для создания иллюстраций и артов
• Как жить в загородной бане, пока строится умный дом
• Как выбрать контроллер для DIY (сводная таблица по 30++ моделям с комментариями)
• Сравниваем новые чипы Qualcomm с процессорами Apple, Intel и AMD
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк
• Постепенный перенос проектов и пакетов на Swift 6
• Пишем виджет в Control Center (iOS 18)
• Изучаем новые структуры данных для iOS разработчика
• Куб для ваших сторис*
• Что нового в Swift 6?
• По оценкам IDC, в 2024 году Apple продаст менее 500 тысяч устройств Vision Pro
• Как работает AdAttributionKit
• Поваренная книга SwiftUI: кнопки — Часть 1
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Развенчиваем 6 мифов про современную Android-разработку
• Kotlin Coroutines под капотом
• Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose
• Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
• Видео с прозрачностью на Jetpack Compose – запросто
• Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Первый взгляд на переход с Xamarin Native на Flutter
• Как мы переходили с Xamarin на Flutter
• Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать
•

•

•

•

•

•

•

•

•

•


• Новый опрос Developer Nation
• Сам написал, сам полетал: как и зачем я разработал 3D-игру с нуля под компьютеры из 90-х в 2024 году?
• Важные вещи в программировании 2024
• Моё тестовое в Билайн на позицию стажёра
• РКН по ошибке снес безобидное приложение в AppStore, на волне последних чисток
• 5 советов по разработке игр от соло-разработчика
• System Design-интервью для практиков
• 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования
• Локальная разработка в Авито
• Rust и Kotlin растут в TIOBE Index
• ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
•

•

•

•

•

•


• Sekai получил лицензию на «Наруто» для разработки приложений для фанатов аниме
• 76% приложений и сайтов с подпиской использует темные паттерны
• Приложение для арт-терапии Scribble Journey позволяет выразить эмоции с помощью зарисовок
• Самые скачиваемые и зарабатывающие приложения в России в июне 2024
• Apple «временно» одобрила Epic Games Store, но потребовала изменений
• Pokemon Go: история революции в дополненной реальности
• Lamoda Tech Analytics Party: материалы встречи
• Wayther — приложение с прогнозом погоды, разработанное специально для автопутешествий
• Карты Google на iOS начали показывать спидометр (через 5 лет после Android)
•

•


• Обзор нейросетей для создания иллюстраций и артов
• Как жить в загородной бане, пока строится умный дом
• Как выбрать контроллер для DIY (сводная таблица по 30++ моделям с комментариями)
• Сравниваем новые чипы Qualcomm с процессорами Apple, Intel и AMD
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
error911
Полезно, спасибо!