В этом выпуске зарубы с Apple и Ui-тесты для поиска утечек памяти, вторая жизнь Windows Phone и новая социальная сеть с ИИ, игровой рынок 2023, StoreKit 2, советы для прохождения кодинг-интервью и многое другое
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/rt/vl/0a/rtvl0amubrmirs3adxwuq8_w9hy.jpeg)
iOS
• Осваиваем StoreKit 2 + ProductView и StoreView + SubscriptionStoreView
• Месячная заруба с Apple. Рефакторим бридж. Часть 2 + Часть 1
• Простая анимация для всплывающего окна
• Как мы делали новую iOS-камеру ВКонтакте и VK Клипов
• Показываем красивое с помощью видеоредактора в VK Клипах на iOS
•
Making your SwiftData models Codable
•
Introducing ObservableConverter
•
Scrollable lists using Protocol-Oriented Programming and UICollectionViewCompositionalLayout
•
SwiftData Background Tasks
•
Mastering SwiftUI’s zIndex: A Comprehensive Guide
•
Swift High Performance: Dictionary Keys
•
Park API — Server-Side Swift With Hummingbird
•
Transitioning from MVVM to MV: A Journey of Simplifying App Architecture
•
Jump ???? SwiftUI Coordinator with Router
•
A Beginner’s Guide to Clean Architecture in SwiftUI: Building Better Apps Step by Step
•
10 Lesser Known LLDB Commands used in iOS App development
•
Common Pitfalls Caused by Delayed State Updates in SwiftUI
•
iOS Deeplink Handling: The Asynchronous Way
•
Enabling drag reordering in SwiftUI lazy grids and stacks
•
Xcode 15: Automated accessibility audits
•
An Unusual Rail Adventure
•
Advanced text validation in UIKit with Combine
•
Optionals in Swift
•
Implementing Polling in SwiftUI
•
Mastering SwiftUI Custom Modifiers
•
Enabling drag reordering in SwiftUI lazy grids and stacks
•
Functions and Closures in Swift
•
SwiftUI Animated Tab Icons — Animated SF Symbols
•
Build Switcher: Local Build Caching for Xcode
•
How to Save and Manage Data with Core Data in Swift
•
Using @_exported attribute for Simplified Module Imports
•
Enhancements to ScrollView in iOS 17
•
Crush: работа с CoreData
•
RxSwift: реактивное расширение для Swift
•
GRDB: удобная работа с SQLite
Android
• Запускаем IDEA и CLion на Android
• Как повысить яркость экрана в Android-приложении без запроса разрешения
• Использование Compose для ТВ-версии приложения Иви: мощный фреймворк для создания эффективных Android-приложений
• Используем UI-тесты для поиска утечек
• История разработки приложения для складных смартфонов Samsung. Часть 1
• Библиотека Jetpack Compose для начинающего Android-разработчика
• Кодогенерация. KAPT. KSP. Manual DI
• Что такое Kotlin Symbol Processing (KSP)
• Android-разработчик: Middle за 1 год в Казахстане
•
Empowering Code with High-Order Functions
•
An update on Jetpack Compose Accompanist libraries
•
Set Activity Screen Brightness without Permission
•
A World Beyond Libraries: Cross-Library screenshot tests on Android
•
Building a widget using Jetpack Glance
•
Recreating UseCase: Embracing a Fluent and Fun Approach
•
Dark mode on android with Jetpack Compose using dataStore with Hilt
•
Kotlin’s Reactive Tools: A Deep Dive into RxKotlin and Flow
•
Seeing your composable in shades of grey
•
Become More Senior Android Developer with these 15 Android Studio Tips & Tricks
•
Why Build a Pattern Library in Jetpack Compose?
•
Dagger 2.48 with Dagger and Hilt KSP processors
•
Getting Better with Kotlin — Exploring Advanced Features and Effective Coding Strategies
•
@Preview Driven Development with Compose
•
Mutable State vs. State Management Libraries in Android
•
Top 100 Kotlin Interview Questions and Answers
•
At your Service(Android)
•
Full Guide to Manual Dependency Injection + Removing Dagger
•
How to create an advanced text validation with Combine
•
Using the Gradle Version Catalog in Android projects
•
RemoteCam: веб-камера для Android
•
Ivy Wallet: открытый трекер финансов
Кроссплатформа
• Вложенная навигация во Flutter: что такое декларативный роутер и зачем он нужен
• Полное руководство по использованию FVM (Flutter Version Management) – жонглируйте версиями Flutter sdk в своих проектах
• 4.0 Асинхронность. Isolates, потоки, процессы
•
Flutter Chopper Authentication + Retry on 401 Unauthorized
•
KMP: Work with existing project
•
Hydrated Bloc in Flutter: Simplifying State Management
•
Top 10 Flutter Apps You Must Make as a Beginner
•
Don’t pass TextStyle to Widgets
•
Compose Multiplatform 1.5.0 Release
•
Dart 3.1 & a retrospective on functional style programming in Dart 3
•
Recreating the Telegram Collapsable Header on iOS using Reanimated
•
Expected and Actual Mechanism in Kotlin Multiplatform Mobile
•
Rare cases When to use RN over Native
•
Dart Programming list collection tips & tricks
Разработка
• Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2
• Как пройти кодинг интервью со мной
• Новый взгляд на аналитику ошибок в production, или работающая альтернатива Crashlytics
• Как мы разрабатывали приложение с сибирским характером для суровых дальнобойщиков (и победили Яндекс Карты)
• VR: как это работает
• Почему стоит вкладываться в опенсорс
• Мобильные виджеты
• 5 проектов выходного дня, которые значительно повысят ваши навыки кодинга
• Podlodka #334: стартап-акселераторы
• Главные языки программирования 2023
• Microsoft закрывает Visual Studio для Mac
• Треть программистов теряет свои профнавыки на текущем месте работы
• Где платят больше всего в Big Tech: исследование Blind
• Google открывает API о солнечных возможностях, качестве воздуха и уровне пыльцы
•
How Grab uses Graph Databases to Reduce Fraud
•
Ask HN: Where do I find good code to read?
•
8 Reasons Why WhatsApp Was Able to Support 50 Billion Messages a Day With Only 32 Engineers
•
(Life) Advice From The Creator of C++
•
The Unexpected Find That Freed 20GB of Unused Index Space
•
Measuring developer productivity? A response to McKinsey
•
Case Study: Roebuck. UI/UX Design and Illustrations for Educational Mobile App
•
Scrum: Failure By Design?
Аналитика, маркетинг и монетизация
• Маркетологи в мобайле: Дарья Пасюк («Додо Пицца»)
• Как правильно выстроить монетизацию в первую сессию пользователя
• BeFake: социальная сеть с ИИ, в которой не надо быть настоящим
• В AppMetrica появились A/B-эксперименты
• «Игровой рынок 2023»: отчет Data.ai и IDC
• Samsung выпустил свое ИИ-приложение с рецептами
• RuStore станет обязательным для всех
• $6 млн: Kiki — аренда жилья для «друзей»
• Монетал — Учет расходов: разбор приложения
• Доход Gmail вырос в 179 раз с 2021
• Деньги из воздуха. Как приложение зарабатывает миллион долларов ежемесячно на прогнозе ветра?
•
Don’t look up: Google’s meteor of incompetence will kill thousands of apps in four months
AI, Устройства, IoT
• CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода
• Одноплатный ПК Cytron Reka:Bit: отличный старт для обучения робототехнике и электронике
• Принцип суперпозиции для Умного дома
• ИИ Duet стал доступен в Google Workspace
• Бесплатный курс «LangChain: чат с вашими данными»
• iPhone 14 Pro Max стал самым продаваемым телефоном в мире
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/rt/vl/0a/rtvl0amubrmirs3adxwuq8_w9hy.jpeg)
Пройдите наш опрос про архитектурные шаблоны. Опрос займет несколько минут. Доступен здесь.
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Осваиваем StoreKit 2 + ProductView и StoreView + SubscriptionStoreView
• Месячная заруба с Apple. Рефакторим бридж. Часть 2 + Часть 1
• Простая анимация для всплывающего окна
• Как мы делали новую iOS-камеру ВКонтакте и VK Клипов
• Показываем красивое с помощью видеоредактора в VK Клипах на iOS
•
![](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/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/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.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)
• Запускаем IDEA и CLion на Android
• Как повысить яркость экрана в Android-приложении без запроса разрешения
• Использование Compose для ТВ-версии приложения Иви: мощный фреймворк для создания эффективных Android-приложений
• Используем UI-тесты для поиска утечек
• История разработки приложения для складных смартфонов Samsung. Часть 1
• Библиотека Jetpack Compose для начинающего Android-разработчика
• Кодогенерация. KAPT. KSP. Manual DI
• Что такое Kotlin Symbol Processing (KSP)
• Android-разработчик: Middle за 1 год в Казахстане
•
![](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/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/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Вложенная навигация во Flutter: что такое декларативный роутер и зачем он нужен
• Полное руководство по использованию FVM (Flutter Version Management) – жонглируйте версиями Flutter sdk в своих проектах
• 4.0 Асинхронность. Isolates, потоки, процессы
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2
• Как пройти кодинг интервью со мной
• Новый взгляд на аналитику ошибок в production, или работающая альтернатива Crashlytics
• Как мы разрабатывали приложение с сибирским характером для суровых дальнобойщиков (и победили Яндекс Карты)
• VR: как это работает
• Почему стоит вкладываться в опенсорс
• Мобильные виджеты
• 5 проектов выходного дня, которые значительно повысят ваши навыки кодинга
• Podlodka #334: стартап-акселераторы
• Главные языки программирования 2023
• Microsoft закрывает Visual Studio для Mac
• Треть программистов теряет свои профнавыки на текущем месте работы
• Где платят больше всего в Big Tech: исследование Blind
• Google открывает API о солнечных возможностях, качестве воздуха и уровне пыльцы
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Маркетологи в мобайле: Дарья Пасюк («Додо Пицца»)
• Как правильно выстроить монетизацию в первую сессию пользователя
• BeFake: социальная сеть с ИИ, в которой не надо быть настоящим
• В AppMetrica появились A/B-эксперименты
• «Игровой рынок 2023»: отчет Data.ai и IDC
• Samsung выпустил свое ИИ-приложение с рецептами
• RuStore станет обязательным для всех
• $6 млн: Kiki — аренда жилья для «друзей»
• Монетал — Учет расходов: разбор приложения
• Доход Gmail вырос в 179 раз с 2021
• Деньги из воздуха. Как приложение зарабатывает миллион долларов ежемесячно на прогнозе ветра?
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода
• Одноплатный ПК Cytron Reka:Bit: отличный старт для обучения робототехнике и электронике
• Принцип суперпозиции для Умного дома
• ИИ Duet стал доступен в Google Workspace
• Бесплатный курс «LangChain: чат с вашими данными»
• iPhone 14 Pro Max стал самым продаваемым телефоном в мире
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.