В нашем новом дайджесте SnapKit и Android Studio, App Quality Insights и асинхронности, доход от покупок социальных сетей, API для ChatGPT и многое другое.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS
• iOS-разработка со SnapKit: спасаем консоль от простыни ошибок и ускоряем отрисовку UI
• 7 открытых iOS-проектов, которые помогут изучить SwiftUI
• Введение в архитектурный шаблон «Мрак в Воделях»
• C/C++ из Python (Kivy, ctypes) на iOS
• Compose iOS. Как это работает #0
• Apple заблокировала выпуск приложения с ChatGPT
• В App Store Connect добавили бенчмарки
• Новые уязвимости iOS и macOS ставят под угрозу личные данные пользователей
• Xcode tip: sharing breakpoints across projects
Xcode tip: sharing breakpoints across projects
• Scaling a Mature iOS Codebase with Tuist
Scaling a Mature iOS Codebase with Tuist
• Arbitrary SwiftUI Linear Gradient Rotation
Arbitrary SwiftUI Linear Gradient Rotation
• UDP Listener in Swift
UDP Listener in Swift
• Writing an Idle Timer in Swift
Writing an Idle Timer in Swift
• Xcode Will No Longer Run Under Rosetta
Xcode Will No Longer Run Under Rosetta
• Build a Hands-free SwiftUI App Using ARKit and SceneKit
Build a Hands-free SwiftUI App Using ARKit and SceneKit
• Storing Payment Data On iOS: My Take
Storing Payment Data On iOS: My Take
• Building iOS framework with dependencies
Building iOS framework with dependencies
• Resolving an iOS Reverse Engineering Challenge with Frida
Resolving an iOS Reverse Engineering Challenge with Frida
• A Better Way To Test Reference Cycles in iOS
A Better Way To Test Reference Cycles in iOS
• How to Create Configurable Widgets With Dynamic Options?
How to Create Configurable Widgets With Dynamic Options?
• View Composition using ViewModifiers in SwiftUI
View Composition using ViewModifiers in SwiftUI
• Using Swift Concurrency with Coordinator Pattern
Using Swift Concurrency with Coordinator Pattern
• How to create a hero animation in SwiftUI?
How to create a hero animation in SwiftUI?
• Building a GPT Client for iOS with SwiftUI
Building a GPT Client for iOS with SwiftUI
• Setting Up Different Environments in SwiftUI: Command Line Arguments and Build Configurations
Setting Up Different Environments in SwiftUI: Command Line Arguments and Build Configurations
• Setting: панель настроек на SwiftUI
Setting: панель настроек на SwiftUI
• IceCubesApp: открытый клиент Mastodon на SwiftUI
IceCubesApp: открытый клиент Mastodon на SwiftUI
• Roadmap: дорожная карта разработки в приложении
Roadmap: дорожная карта разработки в приложении
 Android
Android
• Свежий Android на 9 летнем железе: Сможет ли смартфон 2016 года оставаться актуальным в 2023 с кастомной прошивкой?
• Список фишек Android Studio для ускорения разработки
• Из Figma в Composable работаем с Relay в Android Studio
• Как Android-разработчику избавиться от комплекса доменной неполноценности
• Сбои Crashlytics в Android Studio с помощью App Quality Insights
• Настраиваем Android-девайс для анализа трафика приложений
• Как опубликовать приложение в RuStore и подключить монетизацию: пошаговый гайд
• Программа для магазина на Android, ч. 2 — Нативатор Касса
• Ответы на частые вопросы от начинающих Android-разработчиков
• Вышел курс основы Android с Compose
• Google улучшает Android и Wear OS с помощью 9 новых функций
• How to use Gradle Managed Devices with your own devices
How to use Gradle Managed Devices with your own devices
• Graceful Resource Handling Using Structured Concurrency in Kotlin
Graceful Resource Handling Using Structured Concurrency in Kotlin
• Convert Android App to Use Material 3 Design
Convert Android App to Use Material 3 Design
• Publish Multi-module Private Android Library to jFrog
Publish Multi-module Private Android Library to jFrog
• Effortlessly Add Pull-to-Refresh to Your Android App with Jetpack Compose
Effortlessly Add Pull-to-Refresh to Your Android App with Jetpack Compose
• Inquiry into the Android SplashScreen API [2023]
Inquiry into the Android SplashScreen API [2023]
• Firestore Caching: You may not need Room
Firestore Caching: You may not need Room
• Accessing Composables from UiAutomator
Accessing Composables from UiAutomator
• Exploring Jetpack Compose for Android TV: Carousel
Exploring Jetpack Compose for Android TV: Carousel
• Inline functions in Kotlin
Inline functions in Kotlin
• Unleashing the Power of Kotlin: 8 Advanced Features for Experienced Developers
Unleashing the Power of Kotlin: 8 Advanced Features for Experienced Developers
• Why Ravioli Is My Favourite Recipe
Why Ravioli Is My Favourite Recipe
• Different ways to handle android Gradle dependencies
Different ways to handle android Gradle dependencies
• Different ways to handle Android Gradle dependencies
Different ways to handle Android Gradle dependencies
• How to Handle Automatic Content Resizing when keyboard is visible in Jetpack Compose
How to Handle Automatic Content Resizing when keyboard is visible in Jetpack Compose
• Kotlin Generics Explaind: Mastering in, out, and where
Kotlin Generics Explaind: Mastering in, out, and where
• Building an Android System Design Architecture for Efficient Image Uploads with Clean Architecture
Building an Android System Design Architecture for Efficient Image Uploads with Clean Architecture
• Android Studio Flamingo Beta 4 is now available
Android Studio Flamingo Beta 4 is now available
• Pokedex: современная Android-разработка
Pokedex: современная Android-разработка
 Кроссплатформа
Кроссплатформа
• Разработка кросплатформенного приложения на Qt с использованием нейросетей, обученных на tensorflow
• Один плагин, чтоб править всеми. Как разработать сканер на Flutter для 3 платформ и ускорить ввод данных в 2 раза
• Dart: Асинхронность
• Как не ссломать верстку Flutter-приложения из-за textScaleFactor
• Optimize Your Flutter Development Environment with FlutterCleaner
Optimize Your Flutter Development Environment with FlutterCleaner
• How To Use GraphQL with Flutter
How To Use GraphQL with Flutter
• Kotlin Compose Multi-platform login screen — Android, iOS & Desktop App
Kotlin Compose Multi-platform login screen — Android, iOS & Desktop App
• Three Advanced Ways to Secure a Flutter App
Three Advanced Ways to Secure a Flutter App
• Why I Hard Code My Sizes In Flutter
Why I Hard Code My Sizes In Flutter
• Create Custom Keyboard for your Flutter App
Create Custom Keyboard for your Flutter App
• Tauri Mobile Ц Develop Mobile Apps with JavaScript and Rust
Tauri Mobile Ц Develop Mobile Apps with JavaScript and Rust
• How to Create Separators for Rows and Columns
How to Create Separators for Rows and Columns
• Isolates in Flutter
Isolates in Flutter
• How to Create Dynamic Island and ActivityKit with Flutter
How to Create Dynamic Island and ActivityKit with Flutter
• KMPTemplate: Compose для Android, iOS и десктопов
KMPTemplate: Compose для Android, iOS и десктопов
 Разработка
Разработка
• Как мы быстро запустили мобильное приложение и споткнулись о свой успех
• Инструменты для нагрузочного тестирования
• Конец близок: StackOverflow умирает — что будет дальше?
• Джун, который смог: как получить оффер мидла в 2023
• Как превратить онбординг пользователей в сбор инсайтов
• Avito Design Talk #7: исследования
• Podlodka #309: мобильные фермы
• $3.1 млн: Archetype — биллинг для API
• Летние школы яндекса пройдут в трех странах одновременно
• Google и TopCoder закрывают свои соревнования для программистов
• So, are fonts cut from paper now?
So, are fonts cut from paper now?
• Building a Startup from Scratch: My Mistakes as CTO
Building a Startup from Scratch: My Mistakes as CTO
• Stop saying «technical debt»
Stop saying «technical debt»
• Being a Solo Software Entrepreneur at 40
Being a Solo Software Entrepreneur at 40
• Top 8 diagramming tools for software architecture
Top 8 diagramming tools for software architecture
• «Clean» Code, Horrible Performance
«Clean» Code, Horrible Performance
• System Design Interview Survival Guide (2023): Preparation Strategies and Practical Tips
System Design Interview Survival Guide (2023): Preparation Strategies and Practical Tips
 Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация
• Можно ли найти хорошую игру по рекомендациям Google Play и App Store?
• При снижении доходов от рекламы социальные сети обращаются к покупкам внутри приложений
• Маркетологи в мобайле (Spring Edition): Кения Архипова (Zaymigo)
• Маркетологи в мобайле (Spring Edition): Анна Гарцилова (Kassir.ru)
• Дело Spotify против Apple в Европе сузилось до ссылок на стороннюю оплату
• Connected TV: как правильно распределять бюджет на рекламу
• Pokemon Sleep выйдет в этом году
• Аудитория RuStore достигла 10 миллионов пользователей в месяц
• Что такое Apple TV App Store в 2023 году
• How Duolingo drives subscription conversion
How Duolingo drives subscription conversion
 AI, ”стройства, IoT
AI, ”стройства, IoT
• OpenAI открыла ChatGPT API
• От Arduino к Wiren Board за 10 лет. История автоматизации дома с солнечными панелями
• ChatGPT: новый инструмент в борьбе с багами. Как можно использовать AI для повышения качества тестирования
• Сравнительный анализ стандартов связи для сетей IoT
• VW Group запускает магазин приложений и новую автомобильную платформу
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS• iOS-разработка со SnapKit: спасаем консоль от простыни ошибок и ускоряем отрисовку UI
• 7 открытых iOS-проектов, которые помогут изучить SwiftUI
• Введение в архитектурный шаблон «Мрак в Воделях»
• C/C++ из Python (Kivy, ctypes) на iOS
• Compose iOS. Как это работает #0
• Apple заблокировала выпуск приложения с ChatGPT
• В App Store Connect добавили бенчмарки
• Новые уязвимости iOS и macOS ставят под угрозу личные данные пользователей
•
 Xcode tip: sharing breakpoints across projects
Xcode tip: sharing breakpoints across projects•
 Scaling a Mature iOS Codebase with Tuist
Scaling a Mature iOS Codebase with Tuist•
 Arbitrary SwiftUI Linear Gradient Rotation
Arbitrary SwiftUI Linear Gradient Rotation•
 UDP Listener in Swift
UDP Listener in Swift•
 Writing an Idle Timer in Swift
Writing an Idle Timer in Swift•
 Xcode Will No Longer Run Under Rosetta
Xcode Will No Longer Run Under Rosetta•
 Build a Hands-free SwiftUI App Using ARKit and SceneKit
Build a Hands-free SwiftUI App Using ARKit and SceneKit•
 Storing Payment Data On iOS: My Take
Storing Payment Data On iOS: My Take•
 Building iOS framework with dependencies
Building iOS framework with dependencies•
 Resolving an iOS Reverse Engineering Challenge with Frida
Resolving an iOS Reverse Engineering Challenge with Frida•
 A Better Way To Test Reference Cycles in iOS
A Better Way To Test Reference Cycles in iOS•
 How to Create Configurable Widgets With Dynamic Options?
How to Create Configurable Widgets With Dynamic Options?•
 View Composition using ViewModifiers in SwiftUI
View Composition using ViewModifiers in SwiftUI•
 Using Swift Concurrency with Coordinator Pattern
Using Swift Concurrency with Coordinator Pattern•
 How to create a hero animation in SwiftUI?
How to create a hero animation in SwiftUI?•
 Building a GPT Client for iOS with SwiftUI
Building a GPT Client for iOS with SwiftUI•
 Setting Up Different Environments in SwiftUI: Command Line Arguments and Build Configurations
Setting Up Different Environments in SwiftUI: Command Line Arguments and Build Configurations•
 Setting: панель настроек на SwiftUI
Setting: панель настроек на SwiftUI•
 IceCubesApp: открытый клиент Mastodon на SwiftUI
IceCubesApp: открытый клиент Mastodon на SwiftUI•
 Roadmap: дорожная карта разработки в приложении
Roadmap: дорожная карта разработки в приложении Android
Android• Свежий Android на 9 летнем железе: Сможет ли смартфон 2016 года оставаться актуальным в 2023 с кастомной прошивкой?
• Список фишек Android Studio для ускорения разработки
• Из Figma в Composable работаем с Relay в Android Studio
• Как Android-разработчику избавиться от комплекса доменной неполноценности
• Сбои Crashlytics в Android Studio с помощью App Quality Insights
• Настраиваем Android-девайс для анализа трафика приложений
• Как опубликовать приложение в RuStore и подключить монетизацию: пошаговый гайд
• Программа для магазина на Android, ч. 2 — Нативатор Касса
• Ответы на частые вопросы от начинающих Android-разработчиков
• Вышел курс основы Android с Compose
• Google улучшает Android и Wear OS с помощью 9 новых функций
•
 How to use Gradle Managed Devices with your own devices
How to use Gradle Managed Devices with your own devices•
 Graceful Resource Handling Using Structured Concurrency in Kotlin
Graceful Resource Handling Using Structured Concurrency in Kotlin•
 Convert Android App to Use Material 3 Design
Convert Android App to Use Material 3 Design•
 Publish Multi-module Private Android Library to jFrog
Publish Multi-module Private Android Library to jFrog•
 Effortlessly Add Pull-to-Refresh to Your Android App with Jetpack Compose
Effortlessly Add Pull-to-Refresh to Your Android App with Jetpack Compose•
 Inquiry into the Android SplashScreen API [2023]
Inquiry into the Android SplashScreen API [2023]•
 Firestore Caching: You may not need Room
Firestore Caching: You may not need Room•
 Accessing Composables from UiAutomator
Accessing Composables from UiAutomator•
 Exploring Jetpack Compose for Android TV: Carousel
Exploring Jetpack Compose for Android TV: Carousel•
 Inline functions in Kotlin
Inline functions in Kotlin•
 Unleashing the Power of Kotlin: 8 Advanced Features for Experienced Developers
Unleashing the Power of Kotlin: 8 Advanced Features for Experienced Developers•
 Why Ravioli Is My Favourite Recipe
Why Ravioli Is My Favourite Recipe•
 Different ways to handle android Gradle dependencies
Different ways to handle android Gradle dependencies•
 Different ways to handle Android Gradle dependencies
Different ways to handle Android Gradle dependencies•
 How to Handle Automatic Content Resizing when keyboard is visible in Jetpack Compose
How to Handle Automatic Content Resizing when keyboard is visible in Jetpack Compose•
 Kotlin Generics Explaind: Mastering in, out, and where
Kotlin Generics Explaind: Mastering in, out, and where•
 Building an Android System Design Architecture for Efficient Image Uploads with Clean Architecture
Building an Android System Design Architecture for Efficient Image Uploads with Clean Architecture•
 Android Studio Flamingo Beta 4 is now available
Android Studio Flamingo Beta 4 is now available•
 Pokedex: современная Android-разработка
Pokedex: современная Android-разработка Кроссплатформа
Кроссплатформа• Разработка кросплатформенного приложения на Qt с использованием нейросетей, обученных на tensorflow
• Один плагин, чтоб править всеми. Как разработать сканер на Flutter для 3 платформ и ускорить ввод данных в 2 раза
• Dart: Асинхронность
• Как не ссломать верстку Flutter-приложения из-за textScaleFactor
•
 Optimize Your Flutter Development Environment with FlutterCleaner
Optimize Your Flutter Development Environment with FlutterCleaner•
 How To Use GraphQL with Flutter
How To Use GraphQL with Flutter•
 Kotlin Compose Multi-platform login screen — Android, iOS & Desktop App
Kotlin Compose Multi-platform login screen — Android, iOS & Desktop App•
 Three Advanced Ways to Secure a Flutter App
Three Advanced Ways to Secure a Flutter App•
 Why I Hard Code My Sizes In Flutter
Why I Hard Code My Sizes In Flutter•
 Create Custom Keyboard for your Flutter App
Create Custom Keyboard for your Flutter App•
 Tauri Mobile Ц Develop Mobile Apps with JavaScript and Rust
Tauri Mobile Ц Develop Mobile Apps with JavaScript and Rust•
 How to Create Separators for Rows and Columns
How to Create Separators for Rows and Columns•
 Isolates in Flutter
Isolates in Flutter•
 How to Create Dynamic Island and ActivityKit with Flutter
How to Create Dynamic Island and ActivityKit with Flutter•
 KMPTemplate: Compose для Android, iOS и десктопов
KMPTemplate: Compose для Android, iOS и десктопов Разработка
Разработка• Как мы быстро запустили мобильное приложение и споткнулись о свой успех
• Инструменты для нагрузочного тестирования
• Конец близок: StackOverflow умирает — что будет дальше?
• Джун, который смог: как получить оффер мидла в 2023
• Как превратить онбординг пользователей в сбор инсайтов
• Avito Design Talk #7: исследования
• Podlodka #309: мобильные фермы
• $3.1 млн: Archetype — биллинг для API
• Летние школы яндекса пройдут в трех странах одновременно
• Google и TopCoder закрывают свои соревнования для программистов
•
 So, are fonts cut from paper now?
So, are fonts cut from paper now?•
 Building a Startup from Scratch: My Mistakes as CTO
Building a Startup from Scratch: My Mistakes as CTO•
 Stop saying «technical debt»
Stop saying «technical debt»•
 Being a Solo Software Entrepreneur at 40
Being a Solo Software Entrepreneur at 40•
 Top 8 diagramming tools for software architecture
Top 8 diagramming tools for software architecture•
 «Clean» Code, Horrible Performance
«Clean» Code, Horrible Performance•
 System Design Interview Survival Guide (2023): Preparation Strategies and Practical Tips
System Design Interview Survival Guide (2023): Preparation Strategies and Practical Tips Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация• Можно ли найти хорошую игру по рекомендациям Google Play и App Store?
• При снижении доходов от рекламы социальные сети обращаются к покупкам внутри приложений
• Маркетологи в мобайле (Spring Edition): Кения Архипова (Zaymigo)
• Маркетологи в мобайле (Spring Edition): Анна Гарцилова (Kassir.ru)
• Дело Spotify против Apple в Европе сузилось до ссылок на стороннюю оплату
• Connected TV: как правильно распределять бюджет на рекламу
• Pokemon Sleep выйдет в этом году
• Аудитория RuStore достигла 10 миллионов пользователей в месяц
• Что такое Apple TV App Store в 2023 году
•
 How Duolingo drives subscription conversion
How Duolingo drives subscription conversion AI, ”стройства, IoT
AI, ”стройства, IoT• OpenAI открыла ChatGPT API
• От Arduino к Wiren Board за 10 лет. История автоматизации дома с солнечными панелями
• ChatGPT: новый инструмент в борьбе с багами. Как можно использовать AI для повышения качества тестирования
• Сравнительный анализ стандартов связи для сетей IoT
• VW Group запускает магазин приложений и новую автомобильную платформу
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          