Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Как и обещали, возвращаемся после отпуска с новым дайджестом! В нем классные 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: ИИ вытесняет джунов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.