В новом дайджесте эволюция архитектуры приложения FBiOS и лабиринт, в который попал Google, превратности диспетчеризации и MDM, KMM, темный режим, Репка Pi 3 и многое другое.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS
• Эволюция архитектуры приложения Facebook для iOS
• Парсинг ответов на BLE-команды на языке Swift на примере GoPro
• Превратности диспетчеризации в Swift
• NSPredicate: старый API с новыми сюрпризами
• CoreData с использованием дженериков и шаблона проектирования Одиночка
• Что нового в Swift 5.7: Regex
• В iOS и iPadOS 16.4 появятся веб пуш-уведомления
• Detached Tasks in Swift explained with code examples
Detached Tasks in Swift explained with code examples
• Breaking Down String Format Specifiers in Swift
Breaking Down String Format Specifiers in Swift
• Build a Custom Sliding Keyboard in SwiftUI
Build a Custom Sliding Keyboard in SwiftUI
• Building a Neural Network from Scratch in SwiftUI
Building a Neural Network from Scratch in SwiftUI
• How iOS Pro Access Assets and Config Files
How iOS Pro Access Assets and Config Files
• Adding a stretchable header to a SwiftUI ScrollView
Adding a stretchable header to a SwiftUI ScrollView
• How to Create Configurable Widgets With Static Options?
How to Create Configurable Widgets With Static Options?
• Achieving consistent and continuous delivery for iOS
Achieving consistent and continuous delivery for iOS
• Apple doesn’t want you developing hobby apps
Apple doesn’t want you developing hobby apps
• Adding Contacts on Apple Platforms without Entitlements
Adding Contacts on Apple Platforms without Entitlements
• The Art of Sequential Animations in SwiftUI: Tips, Tricks, and Examples
The Art of Sequential Animations in SwiftUI: Tips, Tricks, and Examples
• Swift Regex Tutorial: Getting Started
Swift Regex Tutorial: Getting Started
• An Unexpected Behavior of Subclasses in Swift
An Unexpected Behavior of Subclasses in Swift
• How to manage SwiftUI updates with Swift available
How to manage SwiftUI updates with Swift available
• Mastering charts in SwiftUI. Customizations.
Mastering charts in SwiftUI. Customizations.
• Using Lenses in Swift
Using Lenses in Swift
• SnapKit: простой Auto Layout для iOS
SnapKit: простой Auto Layout для iOS
• PythonKit: Python из Swift
PythonKit: Python из Swift
• SwiftGen: генератор кода для ассетов
SwiftGen: генератор кода для ассетов
 Android
Android
• MDM в Android: плюсы, минусы, подводные камни
• Создание мобильного приложения для рисования на Android Studio
• Google улучшает работу Chrome в Android-приложениях
• Google начинает бета-тестирование песочницы конфиденциальности
• Android TV 13 наконец запустился
• Kotlin Generic Variance Modifiers
Kotlin Generic Variance Modifiers
• How to Implement Continuous Deployment (CD) for Android With Azure
How to Implement Continuous Deployment (CD) for Android With Azure
• Keep your app from failing in a 64-bit-only Android phone
Keep your app from failing in a 64-bit-only Android phone
• Do-It-Yourself Compose Multiplatform Navigation with Decompose
Do-It-Yourself Compose Multiplatform Navigation with Decompose
• Effective testing with Android Test Only Modules
Effective testing with Android Test Only Modules
• Android TV Leanback: Playback Controls
Android TV Leanback: Playback Controls
• KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP
KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP
• Migrating Sunflower to Jetpack Compose
Migrating Sunflower to Jetpack Compose
• Basics of Mediapipe for Android Platform
Basics of Mediapipe for Android Platform
• Dynamic Feature Delivery in a Multi-Module Project
Dynamic Feature Delivery in a Multi-Module Project
• Gradle 8.0 Releases
Gradle 8.0 Releases
• Handling back press in Android 13, the correct way
Handling back press in Android 13, the correct way
• Remove Ripple Effect from Clickable and Toggleable Widget In Jetpack Compose
Remove Ripple Effect from Clickable and Toggleable Widget In Jetpack Compose
• Loading images using coil in Jetpack Compose
Loading images using coil in Jetpack Compose
• Android App Development in 10 Hours Bootcamp | Android 13
Android App Development in 10 Hours Bootcamp | Android 13
• Constraints and modifier order
Constraints and modifier order
• Kotlin | Higher-Order Functions and Lambda Expressions
Kotlin | Higher-Order Functions and Lambda Expressions
• Read You: RSS-ридер для Android
Read You: RSS-ридер для Android
 Кроссплатформа
Кроссплатформа
• KMM глазами iOS-разработчика
• Как интегрировать Яндекс Карты в приложение на Flutter
• Анализ кода в Flutter-приложениях и настройка сборочной линии Gitlab CI для анализа
• Что нового в Kotlin Multiplatform Mobile
• Control your Flutter app on the fly with Firebase Remote Config
Control your Flutter app on the fly with Firebase Remote Config
• Material 3 in Flutter: Design Cross-Platform Applications Quickly
Material 3 in Flutter: Design Cross-Platform Applications Quickly
• Using cache pods, React Native can speed up iOS builds by 4 times
Using cache pods, React Native can speed up iOS builds by 4 times
• Patrol 1.0 — Powerful Flutter UI Testing Framework
Patrol 1.0 — Powerful Flutter UI Testing Framework
• CI For Your Flutter App With GitHub Actions For Beginners
CI For Your Flutter App With GitHub Actions For Beginners
• How to build a real-time multiplayer game with Flutter Flame
How to build a real-time multiplayer game with Flutter Flame
• Introducing Realm for Dart & Flutter
Introducing Realm for Dart & Flutter
• Flutter  — Advanced Dependency Injection (Best Practice)
Flutter  — Advanced Dependency Injection (Best Practice)
• Building a Flutter-WebRTC App: A Complete Guide
Building a Flutter-WebRTC App: A Complete Guide
 Разработка
Разработка
• Лабиринт находится в мыши: чем болеет Google (и можно ли его вылечить)
• Темный режим — просто трата времени?
• Ozon Tech Community Mobile Meetup
• Как написать HashMap — пошаговая инструкция
• Podlodka #307: Darklang
• VK совместно с ИТМО и РТУ МИРЭА запускает образовательный курс по геймдизайну
• Snap добавил трассировку лучей в свои линзы
• Облако или свой большой сервер?
• Как «очеловечивали» дизайн-язык Алисы
• Deployment is harder than coding
Deployment is harder than coding
• Defying physics in UX
Defying physics in UX
• The Change of Mobile Teams Topology for an Organization
The Change of Mobile Teams Topology for an Organization
• How does Spotify’s lyrics color selection work?
How does Spotify’s lyrics color selection work?
• Senior developers understand the fundamentals
Senior developers understand the fundamentals
• Transforming Healthcare with MEDIC Doctor App: A Case Study
Transforming Healthcare with MEDIC Doctor App: A Case Study
• Ktor: подключенные приложения на Kotlin
Ktor: подключенные приложения на Kotlin
 Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация
• Как Никита Биер дважды получил миллионы юзеров и продал один и тот же продукт за миллионы долларов
• Avito Analytics meetup #9
• Feishu, китайский аналог Slack, достиг $100 млн ARR
• Тренд фотоприложений с искусственным интеллектом сошёл на нет
• Кто и как использует приложения для здоровья и хорошего самочувствия — исследование Airship
• Telegram заработал $7 млн за полгода
• Уроки Duolingo: от стартапа до IPO
Уроки Duolingo: от стартапа до IPO
 AI, Устройства, IoT
AI, Устройства, IoT
• Repka Pi 3 – смотрим и тестируем первый отечественный одноплатный компьютер
• Запуск Stable Diffusion локально и в облаке с помощью Diffusers и dstack
• Делаем датчик качества воздуха с Modbus RTU на ESP8266 и Arduino
• Как спроектировать умный дом с Алисой. Часть 3 + Часть 2 + Часть 1
• Copilot for Business стал общедоступен
• Себестоимость iPhone 14 Pro Max составляет 464 доллара
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS• Эволюция архитектуры приложения Facebook для iOS
• Парсинг ответов на BLE-команды на языке Swift на примере GoPro
• Превратности диспетчеризации в Swift
• NSPredicate: старый API с новыми сюрпризами
• CoreData с использованием дженериков и шаблона проектирования Одиночка
• Что нового в Swift 5.7: Regex
• В iOS и iPadOS 16.4 появятся веб пуш-уведомления
•
 Detached Tasks in Swift explained with code examples
Detached Tasks in Swift explained with code examples•
 Breaking Down String Format Specifiers in Swift
Breaking Down String Format Specifiers in Swift•
 Build a Custom Sliding Keyboard in SwiftUI
Build a Custom Sliding Keyboard in SwiftUI•
 Building a Neural Network from Scratch in SwiftUI
Building a Neural Network from Scratch in SwiftUI•
 How iOS Pro Access Assets and Config Files
How iOS Pro Access Assets and Config Files•
 Adding a stretchable header to a SwiftUI ScrollView
Adding a stretchable header to a SwiftUI ScrollView•
 How to Create Configurable Widgets With Static Options?
How to Create Configurable Widgets With Static Options?•
 Achieving consistent and continuous delivery for iOS
Achieving consistent and continuous delivery for iOS•
 Apple doesn’t want you developing hobby apps
Apple doesn’t want you developing hobby apps•
 Adding Contacts on Apple Platforms without Entitlements
Adding Contacts on Apple Platforms without Entitlements•
 The Art of Sequential Animations in SwiftUI: Tips, Tricks, and Examples
The Art of Sequential Animations in SwiftUI: Tips, Tricks, and Examples•
 Swift Regex Tutorial: Getting Started
Swift Regex Tutorial: Getting Started•
 An Unexpected Behavior of Subclasses in Swift
An Unexpected Behavior of Subclasses in Swift•
 How to manage SwiftUI updates with Swift available
How to manage SwiftUI updates with Swift available•
 Mastering charts in SwiftUI. Customizations.
Mastering charts in SwiftUI. Customizations.•
 Using Lenses in Swift
Using Lenses in Swift•
 SnapKit: простой Auto Layout для iOS
SnapKit: простой Auto Layout для iOS•
 PythonKit: Python из Swift
PythonKit: Python из Swift•
 SwiftGen: генератор кода для ассетов
SwiftGen: генератор кода для ассетов Android
Android• MDM в Android: плюсы, минусы, подводные камни
• Создание мобильного приложения для рисования на Android Studio
• Google улучшает работу Chrome в Android-приложениях
• Google начинает бета-тестирование песочницы конфиденциальности
• Android TV 13 наконец запустился
•
 Kotlin Generic Variance Modifiers
Kotlin Generic Variance Modifiers•
 How to Implement Continuous Deployment (CD) for Android With Azure
How to Implement Continuous Deployment (CD) for Android With Azure•
 Keep your app from failing in a 64-bit-only Android phone
Keep your app from failing in a 64-bit-only Android phone•
 Do-It-Yourself Compose Multiplatform Navigation with Decompose
Do-It-Yourself Compose Multiplatform Navigation with Decompose•
 Effective testing with Android Test Only Modules
Effective testing with Android Test Only Modules•
 Android TV Leanback: Playback Controls
Android TV Leanback: Playback Controls•
 KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP
KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP•
 Migrating Sunflower to Jetpack Compose
Migrating Sunflower to Jetpack Compose•
 Basics of Mediapipe for Android Platform
Basics of Mediapipe for Android Platform•
 Dynamic Feature Delivery in a Multi-Module Project
Dynamic Feature Delivery in a Multi-Module Project•
 Gradle 8.0 Releases
Gradle 8.0 Releases•
 Handling back press in Android 13, the correct way
Handling back press in Android 13, the correct way•
 Remove Ripple Effect from Clickable and Toggleable Widget In Jetpack Compose
Remove Ripple Effect from Clickable and Toggleable Widget In Jetpack Compose•
 Loading images using coil in Jetpack Compose
Loading images using coil in Jetpack Compose•
 Android App Development in 10 Hours Bootcamp | Android 13
Android App Development in 10 Hours Bootcamp | Android 13•
 Constraints and modifier order
Constraints and modifier order•
 Kotlin | Higher-Order Functions and Lambda Expressions
Kotlin | Higher-Order Functions and Lambda Expressions•
 Read You: RSS-ридер для Android
Read You: RSS-ридер для Android Кроссплатформа
Кроссплатформа• KMM глазами iOS-разработчика
• Как интегрировать Яндекс Карты в приложение на Flutter
• Анализ кода в Flutter-приложениях и настройка сборочной линии Gitlab CI для анализа
• Что нового в Kotlin Multiplatform Mobile
•
 Control your Flutter app on the fly with Firebase Remote Config
Control your Flutter app on the fly with Firebase Remote Config•
 Material 3 in Flutter: Design Cross-Platform Applications Quickly
Material 3 in Flutter: Design Cross-Platform Applications Quickly•
 Using cache pods, React Native can speed up iOS builds by 4 times
Using cache pods, React Native can speed up iOS builds by 4 times•
 Patrol 1.0 — Powerful Flutter UI Testing Framework
Patrol 1.0 — Powerful Flutter UI Testing Framework•
 CI For Your Flutter App With GitHub Actions For Beginners
CI For Your Flutter App With GitHub Actions For Beginners•
 How to build a real-time multiplayer game with Flutter Flame
How to build a real-time multiplayer game with Flutter Flame•
 Introducing Realm for Dart & Flutter
Introducing Realm for Dart & Flutter•
 Flutter  — Advanced Dependency Injection (Best Practice)
Flutter  — Advanced Dependency Injection (Best Practice)•
 Building a Flutter-WebRTC App: A Complete Guide
Building a Flutter-WebRTC App: A Complete Guide Разработка
Разработка• Лабиринт находится в мыши: чем болеет Google (и можно ли его вылечить)
• Темный режим — просто трата времени?
• Ozon Tech Community Mobile Meetup
• Как написать HashMap — пошаговая инструкция
• Podlodka #307: Darklang
• VK совместно с ИТМО и РТУ МИРЭА запускает образовательный курс по геймдизайну
• Snap добавил трассировку лучей в свои линзы
• Облако или свой большой сервер?
• Как «очеловечивали» дизайн-язык Алисы
•
 Deployment is harder than coding
Deployment is harder than coding•
 Defying physics in UX
Defying physics in UX•
 The Change of Mobile Teams Topology for an Organization
The Change of Mobile Teams Topology for an Organization•
 How does Spotify’s lyrics color selection work?
How does Spotify’s lyrics color selection work?•
 Senior developers understand the fundamentals
Senior developers understand the fundamentals•
 Transforming Healthcare with MEDIC Doctor App: A Case Study
Transforming Healthcare with MEDIC Doctor App: A Case Study•
 Ktor: подключенные приложения на Kotlin
Ktor: подключенные приложения на Kotlin Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация• Как Никита Биер дважды получил миллионы юзеров и продал один и тот же продукт за миллионы долларов
• Avito Analytics meetup #9
• Feishu, китайский аналог Slack, достиг $100 млн ARR
• Тренд фотоприложений с искусственным интеллектом сошёл на нет
• Кто и как использует приложения для здоровья и хорошего самочувствия — исследование Airship
• Telegram заработал $7 млн за полгода
•
 Уроки Duolingo: от стартапа до IPO
Уроки Duolingo: от стартапа до IPO AI, Устройства, IoT
AI, Устройства, IoT• Repka Pi 3 – смотрим и тестируем первый отечественный одноплатный компьютер
• Запуск Stable Diffusion локально и в облаке с помощью Diffusers и dstack
• Делаем датчик качества воздуха с Modbus RTU на ESP8266 и Arduino
• Как спроектировать умный дом с Алисой. Часть 3 + Часть 2 + Часть 1
• Copilot for Business стал общедоступен
• Себестоимость iPhone 14 Pro Max составляет 464 доллара
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          