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

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


• Эволюция архитектуры приложения Facebook для iOS
• Парсинг ответов на BLE-команды на языке Swift на примере GoPro
• Превратности диспетчеризации в Swift
• NSPredicate: старый API с новыми сюрпризами
• CoreData с использованием дженериков и шаблона проектирования Одиночка
• Что нового в Swift 5.7: Regex
• В iOS и iPadOS 16.4 появятся веб пуш-уведомления
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• MDM в Android: плюсы, минусы, подводные камни
• Создание мобильного приложения для рисования на Android Studio
• Google улучшает работу Chrome в Android-приложениях
• Google начинает бета-тестирование песочницы конфиденциальности
• Android TV 13 наконец запустился
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• KMM глазами iOS-разработчика
• Как интегрировать Яндекс Карты в приложение на Flutter
• Анализ кода в Flutter-приложениях и настройка сборочной линии Gitlab CI для анализа
• Что нового в Kotlin Multiplatform Mobile
•

•

•

•

•

•

•

•

•


• Лабиринт находится в мыши: чем болеет Google (и можно ли его вылечить)
• Темный режим — просто трата времени?
• Ozon Tech Community Mobile Meetup
• Как написать HashMap — пошаговая инструкция
• Podlodka #307: Darklang
• VK совместно с ИТМО и РТУ МИРЭА запускает образовательный курс по геймдизайну
• Snap добавил трассировку лучей в свои линзы
• Облако или свой большой сервер?
• Как «очеловечивали» дизайн-язык Алисы
•

•

•

•

•

•

•


• Как Никита Биер дважды получил миллионы юзеров и продал один и тот же продукт за миллионы долларов
• Avito Analytics meetup #9
• Feishu, китайский аналог Slack, достиг $100 млн ARR
• Тренд фотоприложений с искусственным интеллектом сошёл на нет
• Кто и как использует приложения для здоровья и хорошего самочувствия — исследование Airship
• Telegram заработал $7 млн за полгода
•


• Repka Pi 3 – смотрим и тестируем первый отечественный одноплатный компьютер
• Запуск Stable Diffusion локально и в облаке с помощью Diffusers и dstack
• Делаем датчик качества воздуха с Modbus RTU на ESP8266 и Arduino
• Как спроектировать умный дом с Алисой. Часть 3 + Часть 2 + Часть 1
• Copilot for Business стал общедоступен
• Себестоимость iPhone 14 Pro Max составляет 464 доллара
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.