Как и обещали, возвращаемся после отпуска с новым дайджестом! В нем классные UI и много графиков, главная концепция Jetpack Compose и паттерны Dart проектирования, новый язык программирования Google, ловушки монетизации и многое другое!
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.

iOS
• OAuth в iOS
• Ошибка.log(): как логируются ошибки в мобильном приложении Авито
• С помощью API iOS 16 компания Apple закладывает основу для разработки смешанной реальности
• Навигация в Swift UI: что изменилось с появлением iOS 16
• Конфиденциальность iOS: Instagram* и Facebook* могут отслеживать всю вашу активность в браузере внутри приложения
• Создаем классный UI: iOS Shape Morphing
• SwiftUI. Есть ли жизнь без NavigationView или пару слов о координаторе
• Apple вернула процент заряда батареи
•
Security Application Static Analysis applied to iOS and Gitlab CI
•
How do 3D transforms of iOS views work under the hood?
•
Experimenting with Live Activities
•
Eager Grids with SwiftUI
•
Use Deep Links to Speed Up Your UI Tests
•
VIPER For SwiftUI? Please. No.
•
How we manage 200 Mac Minis for iOS CI at Agoda
•
iOS hardware accelerated 2D terrain visualisation in OzRunways
•
50+ SwiftUI Open Source Projects With Guided Tutorials
•
How Not to Go Crazy Writing iOS Asynchronous Code Using Various Frameworks
•
Create a Custom WeekView in SwiftUI
•
Creating a 3D Tic-Tac-Toe in SceneKit Under SwiftUI
•
Swift — Tricky Interview Question
•
How to get started with Voice Over on iOS
•
Hot Reloading a SceneDelegate in Swift
•
What’s New in MapKit for iOS 16?
•
I Roasted My First iOS Apps’ Source Code and Refactored It
•
What iOS Developers Should Be Prepared For When Integrating In-App Advertising in 2022
•
An Introduction to Coordinator pattern in SwiftUI
•
Mastering grid layout in SwiftUI
•
Background Modes Tutorial: Getting Started
•
Stopping NSZombie Invasion
•
The View Debugger in Xcode
•
Removing the iOS home indicator in SwiftUI
•
SwiftUI: Packaging Views
•
How to Generate Lightning in Swift
•
Starscream: веб-сокеты для Swift
•
Calculator: калькулятор Apple на SwiftUI
Android
• Что-то пошло не так…
• Много графиков в WebView на Android: TradingView
• Как работает видеостриминг на Android: Кинопоиск
• Ошибка в stacktrace из продакшена
• Positional memoization: как работает одна из главных концепций Jetpack Compose
• Программа Strike Removal в Google Play обучит соблюдению политик
• Как работает WorkManager в Android
•
Видео droidcon Berlin 22
•
Composing margins and paddings
•
Singleton in Kotlin
•
Touch Interactions in Jetpack Compose
•
Working with Large Images in Android
•
Make your app large screen ready
•
Build in 3D for Android Using LibGDX in Kotlin
•
Android Jetpack Navigation in multi modular apps
•
How I became a Google Developer Expert (GDE) for Android with the help of the #RoadToGDE program
•
Kotlin Flow: Best Practices
•
Chain of validators with Kotlin
•
How to Use Kotlin Symbol Processors on Android
•
Mercedes Benz Android Developer Interview Experience
•
How to implement a modular UI on Android
•
Animated Splash Screen in Android with Compose
•
Dynamic Bottom Tabs for Jetpack Compose
•
Differences between lateinit and lazy
•
How to get rid of memory leaks? A practical approach using Leak Canary and Android Profiler
•
Migrating a 1M users app to Android 12 — Challenges & Solutions
•
Understanding re-composition in Jetpack Compose with a case study
•
Building Plugable Features on Android
•
Build a Real-Time Android WhatsApp Clone With Jetpack Compose
•
Is Jetpack Compose Ready for You?
•
Comparing Jetpack Compose performance with XML
•
OnBackPressed Deprecated So What to Use
•
How to Make Unit Tests for ViewModel Easier to Write and Maintain
•
Get familiar with Wear OS 3 (without a physical device)
•
Clean Dependency Management in Multi Module Android Projects
•
Kotlin Symbol Processing: плагины компилятора на Kotlin
•
Made with Compose: эксперименты с Jetpack Compose
Кроссплатформа
• Unity: Небольшой скрипт = все ориентации экрана
• Flutter Dev Podcast #37: Casual Games Toolkit
• Compose for iOS. Сколько осталось Flutter и React Native?
• Паттерны проектирования в Dart. Часть 3 + Часть 2
• Unity: Что представляет из себя Coroutine и зачем там IEnumerator
• CherryPick DI — di библиотека для dart/flutter проектов
• Анимация интерактивной карусели во Flutter
• Xamarin.Forms: Кастомные пины для xamarin.maps
•
The journey of Lunabee Studio with KMM
•
Flutter Skill Of MediaQuery and Performance Optimization
•
Flutter Performance Tips
•
MAUI vs Flutter — Multi-platform frameworks showdown
•
Flutter + Kotlin Multiplatform = Klutter
•
We Fast-Tracked Our App Development With Kotlin Multiplatform Mobile
•
Create 2D games quickly and easily with Flutter Flame
•
Build in 3D for iOS Using LibGDX and Kotlin
•
Top 10 Flutter Tips I Learned After 2+ Million Users
•
5 Flutter Tips for Insane Team Productivity
Разработка
• Google выпустил Carbon, новый язык программирования. Что теперь?
• Сложности переноса Papers, Please на мобильные
• Как начинающему разработчику найти работу
• Не пишите повторно используемый код
• Сложно, но можно — стажировка в Яндекс Go
• Avito TeamLead meetup
• Ozon Tech Product Meetup
• Cтроить карьеры в кибербезопасности и IT стали быстрее
• Swift и Objective-C растут в Индексе TIOBE
• $21.5 млн: Pinata — инфраструктура для NFT
• Microsoft открывает эмодзи из Windows 11
• 10 алгоритмов, которые должен изучить каждый разработчик
• GitHub запустил Projects
• Зарплаты разработчиков в первом полугодии 2022
• Свежий обзор налоговых льгот для IT в 2022 году
•
System Design Architecture: Stateful vs. Stateless
•
Why I ditched Supabase and moved my backend to Firebase
•
Reasons to join a startup now — as a new or aspiring product manager
•
How a custom keyboard can extend your app’s capabilities
•
How to stay Consistent in Coding?
•
Don’t Become A Tech Stack Prisoner
•
I Did an Experiment Enforcing a Minimum Code Quality, And There Are The Results
•
Top LeetCode Patterns for FAANG Coding Interviews
•
Actually, it’s pretty easy to make “10 to 20 iterations a week”
•
The end of high developer salaries
Аналитика, маркетинг и монетизация
• Ловушка монетизации
• От 50 тыс до 1,7 млн пользователей за два года
• Apple SKAdNetwork 4.0: к чему готовиться маркетологам в будущем?
• AppLovin предложил купить Unity
• Netflix увеличивает количество игр, но пока в них играет менее 1% подписчиков
• Сколько пользователей продлевает подписку: исследование RevenueCat
• Объявлены финалисты Google Play Indie Games Festival
• Apple расширяет показ рекламы в App Store
• Пользователи проводят в мобильных приложениях больше времени, чем когда-либо: анализ Adjust
• Особенности продвижения MedTech-приложений: кейс агентства Rocket10
• Как спорить про результаты A/B тестирования
AI, Устройства, IoT
• Data Science Pet Projects. FAQ
• Как работает Autoplay в онлайн-кинотеатре
• NORVI Agent 1: маленький, но [CENSORED]
• Podlodka #280: тестирование умных устройств
• GitHub Copilot: ИИ вытесняет джунов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.

iOS• OAuth в iOS
• Ошибка.log(): как логируются ошибки в мобильном приложении Авито
• С помощью API iOS 16 компания Apple закладывает основу для разработки смешанной реальности
• Навигация в Swift UI: что изменилось с появлением iOS 16
• Конфиденциальность iOS: Instagram* и Facebook* могут отслеживать всю вашу активность в браузере внутри приложения
• Создаем классный UI: iOS Shape Morphing
• SwiftUI. Есть ли жизнь без NavigationView или пару слов о координаторе
• Apple вернула процент заряда батареи
•
Security Application Static Analysis applied to iOS and Gitlab CI•
How do 3D transforms of iOS views work under the hood?•
Experimenting with Live Activities•
Eager Grids with SwiftUI•
Use Deep Links to Speed Up Your UI Tests•
VIPER For SwiftUI? Please. No.•
How we manage 200 Mac Minis for iOS CI at Agoda•
iOS hardware accelerated 2D terrain visualisation in OzRunways•
50+ SwiftUI Open Source Projects With Guided Tutorials•
How Not to Go Crazy Writing iOS Asynchronous Code Using Various Frameworks•
Create a Custom WeekView in SwiftUI•
Creating a 3D Tic-Tac-Toe in SceneKit Under SwiftUI•
Swift — Tricky Interview Question•
How to get started with Voice Over on iOS•
Hot Reloading a SceneDelegate in Swift•
What’s New in MapKit for iOS 16?•
I Roasted My First iOS Apps’ Source Code and Refactored It•
What iOS Developers Should Be Prepared For When Integrating In-App Advertising in 2022•
An Introduction to Coordinator pattern in SwiftUI•
Mastering grid layout in SwiftUI•
Background Modes Tutorial: Getting Started•
Stopping NSZombie Invasion•
The View Debugger in Xcode•
Removing the iOS home indicator in SwiftUI•
SwiftUI: Packaging Views•
How to Generate Lightning in Swift•
Starscream: веб-сокеты для Swift•
Calculator: калькулятор Apple на SwiftUI
Android• Что-то пошло не так…
• Много графиков в WebView на Android: TradingView
• Как работает видеостриминг на Android: Кинопоиск
• Ошибка в stacktrace из продакшена
• Positional memoization: как работает одна из главных концепций Jetpack Compose
• Программа Strike Removal в Google Play обучит соблюдению политик
• Как работает WorkManager в Android
•
Видео droidcon Berlin 22•
Composing margins and paddings•
Singleton in Kotlin•
Touch Interactions in Jetpack Compose•
Working with Large Images in Android•
Make your app large screen ready•
Build in 3D for Android Using LibGDX in Kotlin•
Android Jetpack Navigation in multi modular apps•
How I became a Google Developer Expert (GDE) for Android with the help of the #RoadToGDE program•
Kotlin Flow: Best Practices•
Chain of validators with Kotlin•
How to Use Kotlin Symbol Processors on Android•
Mercedes Benz Android Developer Interview Experience•
How to implement a modular UI on Android•
Animated Splash Screen in Android with Compose•
Dynamic Bottom Tabs for Jetpack Compose•
Differences between lateinit and lazy•
How to get rid of memory leaks? A practical approach using Leak Canary and Android Profiler•
Migrating a 1M users app to Android 12 — Challenges & Solutions•
Understanding re-composition in Jetpack Compose with a case study•
Building Plugable Features on Android•
Build a Real-Time Android WhatsApp Clone With Jetpack Compose•
Is Jetpack Compose Ready for You?•
Comparing Jetpack Compose performance with XML•
OnBackPressed Deprecated So What to Use•
How to Make Unit Tests for ViewModel Easier to Write and Maintain•
Get familiar with Wear OS 3 (without a physical device)•
Clean Dependency Management in Multi Module Android Projects•
Kotlin Symbol Processing: плагины компилятора на Kotlin•
Made with Compose: эксперименты с Jetpack Compose
Кроссплатформа• Unity: Небольшой скрипт = все ориентации экрана
• Flutter Dev Podcast #37: Casual Games Toolkit
• Compose for iOS. Сколько осталось Flutter и React Native?
• Паттерны проектирования в Dart. Часть 3 + Часть 2
• Unity: Что представляет из себя Coroutine и зачем там IEnumerator
• CherryPick DI — di библиотека для dart/flutter проектов
• Анимация интерактивной карусели во Flutter
• Xamarin.Forms: Кастомные пины для xamarin.maps
•
The journey of Lunabee Studio with KMM•
Flutter Skill Of MediaQuery and Performance Optimization•
Flutter Performance Tips•
MAUI vs Flutter — Multi-platform frameworks showdown•
Flutter + Kotlin Multiplatform = Klutter•
We Fast-Tracked Our App Development With Kotlin Multiplatform Mobile•
Create 2D games quickly and easily with Flutter Flame•
Build in 3D for iOS Using LibGDX and Kotlin•
Top 10 Flutter Tips I Learned After 2+ Million Users•
5 Flutter Tips for Insane Team Productivity
Разработка• Google выпустил Carbon, новый язык программирования. Что теперь?
• Сложности переноса Papers, Please на мобильные
• Как начинающему разработчику найти работу
• Не пишите повторно используемый код
• Сложно, но можно — стажировка в Яндекс Go
• Avito TeamLead meetup
• Ozon Tech Product Meetup
• Cтроить карьеры в кибербезопасности и IT стали быстрее
• Swift и Objective-C растут в Индексе TIOBE
• $21.5 млн: Pinata — инфраструктура для NFT
• Microsoft открывает эмодзи из Windows 11
• 10 алгоритмов, которые должен изучить каждый разработчик
• GitHub запустил Projects
• Зарплаты разработчиков в первом полугодии 2022
• Свежий обзор налоговых льгот для IT в 2022 году
•
System Design Architecture: Stateful vs. Stateless•
Why I ditched Supabase and moved my backend to Firebase•
Reasons to join a startup now — as a new or aspiring product manager•
How a custom keyboard can extend your app’s capabilities•
How to stay Consistent in Coding?•
Don’t Become A Tech Stack Prisoner•
I Did an Experiment Enforcing a Minimum Code Quality, And There Are The Results•
Top LeetCode Patterns for FAANG Coding Interviews•
Actually, it’s pretty easy to make “10 to 20 iterations a week”•
The end of high developer salaries
Аналитика, маркетинг и монетизация• Ловушка монетизации
• От 50 тыс до 1,7 млн пользователей за два года
• Apple SKAdNetwork 4.0: к чему готовиться маркетологам в будущем?
• AppLovin предложил купить Unity
• Netflix увеличивает количество игр, но пока в них играет менее 1% подписчиков
• Сколько пользователей продлевает подписку: исследование RevenueCat
• Объявлены финалисты Google Play Indie Games Festival
• Apple расширяет показ рекламы в App Store
• Пользователи проводят в мобильных приложениях больше времени, чем когда-либо: анализ Adjust
• Особенности продвижения MedTech-приложений: кейс агентства Rocket10
• Как спорить про результаты A/B тестирования
AI, Устройства, IoT• Data Science Pet Projects. FAQ
• Как работает Autoplay в онлайн-кинотеатре
• NORVI Agent 1: маленький, но [CENSORED]
• Podlodka #280: тестирование умных устройств
• GitHub Copilot: ИИ вытесняет джунов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.