В новом дайджесте деплоим свои приложения из XCode на старые iPhone и изучаем Swift Testing, исследуем приложение Zomato, чтобы создать свою собственную систему уведомлений, и добавляем Flutter в приложение, выкладываем приложение в Apple Store и Google Play, разбираемся в хороших сессиях и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/wf/mk/wu/wfmkwuvuovfaduileghxwantiae.png)
iOS
• Эти айфоны ещё будут жить: пишем и деплоим свои приложения из XCode на старые iPhone
• Введение в Swift Testing +Введение в тестирование на Swift Testing
• Swift 5.10
• iOS-приложения под защитой Apple! Или нет?
• Поваренная книга SwiftUI: изображения и иконки — Часть 4
• AccessorySetupKit будет проще подключать сторонние устройства
• У Apple «очень серьезные» проблемы с DMA
• Apple отложила разработку второй Vision Pro ради более дешевой модели
• Apple дает разработчикам возможность номинировать свои приложения на фичеринг в App Store
•
Highlights of new technologies introduced at WWDC24
•
New GitHub Organization for the Swift Project
•
A New Direction for Testing in Swift
•
Advanced Core Image
•
Zoom navigation transition in SwiftUI
•
Enhanced replace transition for SF Symbols in iOS 18
•
Bringing native AI to your mobile apps with ExecuTorch
•
Create Node Modules in Swift
•
Free, on-device translations with the Swift Translation API
•
Creating Stunning Dynamic Text Effects with TextRender
•
A preview of our upcoming UIKitNavigation library
•
Preparing your App Icon for dark and tinted appearance
•
Swift Testing: Getting Started
•
iOS CI/CD With Azure DevOps: Automate Your Release Process
•
Explore Swift performance
•
Xcode 16 Navigation Shortcuts in 12 Minutes
•
SwiftUI Scroll To Hide Header View — iOS 18
•
Dark mode icons in iOS 18 and Xcode 16
•
Mesh Gradient & Floating Tab bar (iPadOS)
•
iOS 18 Control Center Widget — SwiftUI
•
Image Carousel in SwiftUI
•
TPPDF — создание PDF для iOS и macOS приложений
•
Coobjc — корутины для Objective-C и Swift
•
CodableWrapper — улучшения для Codable
Android
• Как я исследовал приложение Zomato, чтобы создать свою собственную систему уведомлений
• Что нового в безопасности пользователей на Android: доклад с Google I/O 2024
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 4 (3, 2, 1)
• Как избавиться от рекурсии, или Как мой код попал в Google
• Микширование аудиопотоков в Android
• Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
• Как мы победили техдолг в проекте Android RuStore
• Android Device Streaming на базе Firebase в бета-версии
•
Modernizing Application Settings in Kotlin Multiplatform with DataStore and Koin
•
Building Jetcaster on all Form Factors
•
Pride in Your App — Trying Out GraphQL on Android
•
Kotlin DEVEX is not great, but Amper could fix it
•
Choosing Between Sealed Classes and Enum Classes in Kotlin
•
Data Mapping In Kotlin Explained
•
Dive into Object-Oriented Programming with Kotlin
•
Jetpack Glance
•
Creating flexible components in Compose
•
App Architecture: Deeplinks
•
Top 10 Coroutines Questions 2024
•
What is faster and in which tasks? Coroutines, RxJava, Executor?
•
AI development assistance — Android Developers Backstage
•
Simplifying Kotlin Build Configuration with Amper
•
Why we can’t have nice things in Kotlin
•
Kotlin Language Features in 2.0 and Beyond
•
Mastering WebRTC for Large Conference Calls on Android
•
Записи докладов KotlinConf’24
•
Kaml — YAML для kotlinx.serialization
Кроссплатформа
• Flutter Add-to-App: как добавить Flutter в приложение
• От ручной работы к автоматизации: наш путь к идеальной доставке сборок Flutter
• Feature-Based Flutter Architecture
•
Step-by-Step Guide to Dockerizing Dart and Flutter Web for Deployment
•
How to Mock HTTP Clients in Flutter Tests
•
Flutter Best Practices for 2024: Build Better Apps Faster
•
KMP: Essential Tools and Plugins for Kotlin Multiplatform Application Development
•
Introducing Solidart: A Simplified Approach to Flutter State Management Inspired by SolidJS
•
Mastering Shapes and Clipping in Flutter
•
How to Get the Height and Padding of the AppBar in Flutter
•
The Ultimate Guide to React Native Optimization (2024 edition)
•
10 Takeaways for React Native Devs from the App.js conference
•
What Is Kotlin Multiplatform And How Does It Work?
•
Building Your First Compose Multiplatform Hello World App
•
10 Takeaways for React Native Devs from the App.js conference
•
Connectivity — мониторинг сети для Kotlin Multiplatform
Разработка
• WebView: быстрый релиз, никаких ревью в сторах, а минусы есть?
• Как в 2024 выложить приложение в Apple Store и Google Play
• Легким движением руки приложение становится понятным. Как мы сделали уведомления в личном кабинете более заметными
• Усталость Senior-разработчиков
• Как решать задачи на Leetcode
• ИИ в работе: как упростить жизнь мобильного разработчика
• Дали менторить джуна… Все пропало?
• Как устроен сетевой код в играх
•
Pair Programming Antipatterns
•
Mocking is an Anti-Pattern
•
How SMS Fraud Works and How to Guard Against It
•
Let’s write a video game from scratch like it’s 1987
Аналитика, маркетинг и монетизация
• WWDC 24: что нового во встроенных покупках
• Что значит хорошая сессия в приложении — разбираемся в деталях
• Butterflies — новая социальная сеть для ИИ и людей
• Исследование приложений, которые могут стать ненужными в iOS 18
• Varioqub: за Mann-Whitney замолвите слово
• Топ быстрорастущих приложений в России в июне
AI, Устройства, IoT
• Я тебя с вертухи сломаю, если ещё раз заговоришь об ИИ
• Что умеет новая модель Claude 3.5 Sonnet?
• Кажется, LLM программирует лучше меня
• JetBrains интегрирует Gemini в AI Assistant
• Принтер печатает картинки из блоков Lego
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/wf/mk/wu/wfmkwuvuovfaduileghxwantiae.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Эти айфоны ещё будут жить: пишем и деплоим свои приложения из XCode на старые iPhone
• Введение в Swift Testing +Введение в тестирование на Swift Testing
• Swift 5.10
• iOS-приложения под защитой Apple! Или нет?
• Поваренная книга SwiftUI: изображения и иконки — Часть 4
• AccessorySetupKit будет проще подключать сторонние устройства
• У Apple «очень серьезные» проблемы с DMA
• Apple отложила разработку второй Vision Pro ради более дешевой модели
• Apple дает разработчикам возможность номинировать свои приложения на фичеринг в App Store
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Как я исследовал приложение Zomato, чтобы создать свою собственную систему уведомлений
• Что нового в безопасности пользователей на Android: доклад с Google I/O 2024
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 4 (3, 2, 1)
• Как избавиться от рекурсии, или Как мой код попал в Google
• Микширование аудиопотоков в Android
• Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
• Как мы победили техдолг в проекте Android RuStore
• Android Device Streaming на базе Firebase в бета-версии
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Flutter Add-to-App: как добавить Flutter в приложение
• От ручной работы к автоматизации: наш путь к идеальной доставке сборок Flutter
• Feature-Based Flutter Architecture
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• WebView: быстрый релиз, никаких ревью в сторах, а минусы есть?
• Как в 2024 выложить приложение в Apple Store и Google Play
• Легким движением руки приложение становится понятным. Как мы сделали уведомления в личном кабинете более заметными
• Усталость Senior-разработчиков
• Как решать задачи на Leetcode
• ИИ в работе: как упростить жизнь мобильного разработчика
• Дали менторить джуна… Все пропало?
• Как устроен сетевой код в играх
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• WWDC 24: что нового во встроенных покупках
• Что значит хорошая сессия в приложении — разбираемся в деталях
• Butterflies — новая социальная сеть для ИИ и людей
• Исследование приложений, которые могут стать ненужными в iOS 18
• Varioqub: за Mann-Whitney замолвите слово
• Топ быстрорастущих приложений в России в июне
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Я тебя с вертухи сломаю, если ещё раз заговоришь об ИИ
• Что умеет новая модель Claude 3.5 Sonnet?
• Кажется, LLM программирует лучше меня
• JetBrains интегрирует Gemini в AI Assistant
• Принтер печатает картинки из блоков Lego
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.