iOS
• Swift: Simulating Inheritance in structs with the Power of enums
• Are You Truly Adopting MVVM? Or Just a Badly Shaped MVP?
• SFSafariViewController in SwiftUI: Open webpages in-app
• Mastering MapKit in SwiftUI. Customizations.
• 7 Steps to Add Chat to a SwiftUI App Using Firebase
#ios
Первый стабильный релиз Flutter 1.0 вышел 5 лет назад, с чем платформу и поздравляем. За это время он охватил все платформы, обзавелся игровым движком и многим остальным и стал основным выбором для настоящей кроссплатформенной разработки. Не все так безоблачно - Flutter начал терять руководителей, его начал поджимать KMP, но в целом он уже вышел на траекторию нормального развития, так что, кажется, будущее у него вполне отличное.
Разработка
• Amazon выпустил Q, своего помощника с искусственным интеллектом
• Bumble For Friends использует ИИ для написания первого сообщения
• Animate Anyone приближает создание видео-дипфейков
• Интернационализация от i до n: как мы переводим интерфейсы в Фантехе Яндекса
• How psychology design products that win customers
• Data Quality Score: The next chapter of data quality at Airbnb
Маркетинг
• Дизайн АБ тестов
• France in three charts: Installs, sessions, and retention rates
Кроссплатформа
• Handling Asynchronous Data in Flutter with Generic Classes
• e.yram/building-a-spreadsheet-interface-in-flutter-a-quick-guide-976fee9c6d26">Building a Spreadsheet Interface in Flutter: A Quick Guide
iOS
• Использование on-demand ресурсов для безопасного хранения ключей API в iOS-приложениях
• IMSwitch: графические переключатели для SwiftUI
• Testing private functions in Swift
• melissazm/future-proofing-your-projects-for-swift-6-a-comprehensive-guide-1ccb1b90abd1">Future-Proofing Your Projects for Swift 6: A Comprehensive Guide
• SwiftUI for Jetpack Compose developers - State
• Interactive Widgets – Intents
• jpmtech/easily-change-the-language-of-the-simulator-to-test-your-app-0fd980596467">Easily Change the Language of the Simulator to Test Your App
#ios
Android
• Вышла стабильная версия Android Studio Hedgehog
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Разработка UI на Jetpack Compose
• Idiomatic Kotlin: Merge Two Strings Alternately + Benchmarks
• Implementing an animated column section header using Jetpack Compose
• Improving NordVPN’s Android performance using the Compose Compiler plugin
• Koin, Ktor & Paging in KMM
• Global Google Developer Experts Share Their Favorite Tools and Advice for New Developers
• Custom Pull to Refresh in Jetpack Compose
#android
• First look at AndroidX Bluetooth
Самые скачиваемые и зарабатывающие приложения в России в ноябре 2023
В установках Телеграм и Wildberries снова поменялись местами — маркетплейс даже увеличил установки по сравнению с октябрем, но Telegram вырос больше и в ноябре набрал более 3.4 миллиона новых пользователей. А так в десятке все без особых изменений.
По деньгам ВКонтакте и Телеграм снова возглавляют список самых зарабатывающих, а дальше игры меняются местами друг с другом. На 9 месте снова Литрес, а на 10 — FaceApp.
Десятка зарабатывающих:
1. VK: social network, messenger
2. Telegram
3. PUBG MOBILE
4. Royal Match
5. Tanks Blitz PVP битвы
6. Roblox
7. Gardenscapes
8. Homescapes
9. Litres: Books and audiobooks
10. FaceApp: Perfect Face Editor
Не совсем запуск, но интересный пример роста - приложение Wink на фоне запуска своего платформенного сериала "Слово пацана" поднялось в чарте установок аж на 161 место. Wink опередил все остальные стриминги, в том числе "Кинопоиск". Правда, пока это в доходы не вылилось, впрочем у онлайн-кинотеатра есть веб-платежи и период бесплатного смотрения, так что итоги лучше подводить в декабре. Любопытно в ASO: если в 🌐 страницу приложения полностью забрендировали под новый сериал, то в Google Play он даже не упоминают. Конечно, iOS-приложение обновили на прошлой неделе, а на Android еще в середине ноября, но все равно - кажется это не очень правильно.
Видео и подкасты за неделю:
• (iOS En)
Swift Data One to Many Relationships
• (iOS En)
SwiftData Starter Project
• (iOS En)
SwiftUI Shine Effect – Custom View Modifier
• (iOS En)
SwiftUI: Infinite Looping ScrollView - iOS 17
• (iOS En)
SwiftLeeds 2023 Videos
• (And Ru)
Разработка UI на Jetpack Compose
• (And Ru)
Треш-обзор Geekbrains. Полный разбор курса по Android
• (And En)
What's new in Android Studio Hedgehog
• (And En)
Now in Android: 96 - New APIs for adaptive layouts, Google Play updates, and more!
• (And En)
compileSdk VS. targetSdk VS. minSdk - THIS Is the Difference
• (And En)
Full Guide to Shared Element Transition Animation in Android with Jetpack Compose
• (Crs En)
Shared Navigation on Kotlin Multiplatform with Decompose (KMP)
• (Crs En)
Coil Goes Multiplatform with Colin White
• (Crs En)
Step-by-Step Guide: Creating a Peer-to-Peer Tic Tac Toe Game in Flutter
• (Dev Ru)
Автотесты в AvitoTech
• (Dev Ru)
Секреты собеседований с Алеексеем Быковым (Reddit)
• (Dsg Ru)
Podlodka #343: что такое Motion Design?Поставьте 👍 и поделитесь подборкой!
Android
• Элегантная обработка событий в Kotlin — рефакторинг в 7 шагов
• FlexibleBottomSheet: удобный Bottom Sheet для Jetpack Compose
• Первый месяц жизни приложения BookDesk или как меня пытались взломать
• Списки с душой и стилем: Ваш путь к Jetpack Compose
• dugguRK/kotlin-functions-every-developer-should-know-with-examples-3f88ce36ba66">Kotlin Functions Every Developer Should Know with Examples
• 3 Android Studio Plugins for a Better Developer Experience for Kotlin
#android
Лучшие приложения и игры в Google Play 2023
Тут же и Android подъехал.
• Лучшее приложение года для Android - Imprint: Learn Visually
• Лучшая игра года - Honkai: Star Rail
• Лучшее multi-device приложение - Spotify
• Лучшее для развлечений - Bumble For Friends: Meet IRL
• Для персонального роста - Voidpet Garden: Mental Health
• Приложение на каждый день - Artifact: Feed Your Curiosity
• Скрытая жемчужина - Aware: Mindfulness & Wellbeing
• Лучшее приложение с ИИ - Character AI: AI-Powered Chat
• Лучшее приложение для семьи - Paw Patrol Academy
• Для добрых дел - AWorld in support of ActNow
• Лучшее приложение для часов - WhatsApp Messenger
• Лучшее для планшетов - Concepts: Sketch, Note, Draw
• Для Chromebook - FlipaClip: Create 2D Animation
А какое приложение вы выбрали бы лучшим?
Notepad++ исполнилось 20 лет, с чем его можно только поздравить 🥳 Эти посты готовятся именно в этом редакторе А еще Microsoft открыла ThreadX - доставшуюся ей в наследство RTOS, о которой, может быть, вы и не слышали, но которая работает в 12 миллиардах устройств. В частности, именно на ThreadX сделан загрузчик Raspberry Pi. Microsoft ОС досталась в наследство после покупки, стала частью Azure RTOS и теперь вот выложена в open source. Для внесения изменения наверняка нужны сильно специфические знания, но сама возможность поковырять то, что недавно было закрытым, не может не радовать.
Разработка
• Microsoft открыла ThreadX
• Прощай, чистый код
• Бесплатный генератор swift publish блога на Netlify
• Проект: AI Note Recorder или как я не выполнил цель на 2023 год
• Architecture Antipatterns
• Evaluating M3 Pro CPU Cores: General Performance
• Notepad++ v8.6: 20th-Year Anniversary
Маркетинг
• Новый Инструмент «Пути» в MyTracker для визуализации путей пользователей
• Маркетологи в мобайле: Happy Birthday Edition
• Vimcal улучшает рабочий календарь с помощью ИИ
• Pika Labs получает $55 млн на генеративный ИИ для видео
Кроссплатформа
• Step-by-Step Guide: Creating a Peer-to-Peer Tic Tac Toe Game in Flutter
• benovedoz/secure-the-user-data-on-icloud-drive-with-flutter-db2ad4d0a608">Secure the user data on iCloud Drive with Flutter
• ximya/clean-your-ui-code-in-flutter-7c58bf3e267d">Clean Your UI Code in Flutter
iOS
Обратите внимание на забавное извращение - iOS-разработка на JetBrains Fleet.
• GridView: простое создание сеток для SwiftUI
• DebugMenu и визуальная иерархия элементов интерфейса
• SwiftUI Shine Effect – Custom View Modifier
• iOS development with JetBrains Fleet
• Shipping Values Between Actors
• Mastering MapKit in SwiftUI. Basics
• blorenzop/mapkit-swiftui-009a0eb1695c">Working with MapKit in SwiftUI
#ios
Android
• Обзор актуальных инструментов шифрования в Android
• foSho: type safe навигация для Compose
• The Android Backstage of Mercado Libre Warehouses
• a.poplawski96/donts-in-modern-android-kotlin-development-bad-practices-anti-patterns-chapter-i-d38cba2f5f7d">“Don’ts” in modern Android/Kotlin Development (Bad practices & Anti-patterns)
• Kotlin under the hood: How inline functions work
• Demystifying Kotlin StateFlows: A Deep Dive
• Component-based Approach. Implementing Screens with the Decompose Library
• Full Guide to Shared Element Transition Animation in Android with Jetpack Compose
#android
Моя малышка любит самолеты — и я сделал для нее радар
Моя любимая тема - интересные и полезные пет-проекты, решающие собственные проблемы. Вот, например, iOS тех-лид сделал для своего ребенка самолетный радар ✈️ Все проблемы (главная из которых - не потратить все время на создание иконки :)) он описал в интересной статье.
Если у вас есть интересный домашний (или не очень) проект - поделитесь, давайте напишем и про него.
Android
• Топ-10 причин утечки памяти в Android
• Как устроен Android в умных колонках Яндекса
• Топ-10 вопросов для Senior Android: собеседование с разбором ответов и материалами
• Reorderable: таскание элементов в (Lazy)Column и (Lazy)Row
• Kotlin под капотом: inline функции
• Preparing for Network Failures this Holiday Season
• Emoji error! Using the latest Compose with compileSDK < 34
• Oh no, another type safe Compose Navigation library for Android
• How to make Espresso tests more readable and stable
• Introducing a Gradle plugin for Screenshotbot
• Exploring Molecule and Beyond with Jake Wharton
#android
Как использовать геймплей в создании перформящих креативов
Рекомендую пару статей от наших друзей из Rocket10 - про рекламные креативы. Первая часть про теорию, во второй разбираются лучшие рекланые объявления топовых игр разных жанров: Head Ball 2, Fishdom и Pokerist.
Исследование The State of Developer Ecosystem 2023 от JetBrains
Еще к вопросу о популярности языков программирования - вот новое ежегодное исследование от JetBarins, данные опроса 26K+ разработчиков.
1. Самые используемые языки - на картинке сверху.
2. На протяжении многих лет Rust входил в число самых популярных языков для изучения. В 2023 году Rust впервые занял первое место. Rust не только обогнал Go и стал главным выбором для тех, кто хочет перейти на другой язык, но и пользователи Go стали первыми в очереди тех, кто готов перейти на Rust.
3. Потеряв за последние годы две трети своих пользователей, язык Objective-C, похоже, подходит к концу.
4. Использование Kotlin и Swift хоть на 1%, но снизилось.
Beeper Mini — новое приложение для переписки в iMessage с Android (и оно работает)
Beeper Mini - новое приложение от "большого" Beeper, который занимается агрегацией мессенджеров.
1. Ранее все использовали виртуальные Mac для общения в iMessage. Но это создавало очевидные проблемы с безопасностью.
2. Для Beeper Mini сделали реверс инжиниринг протокола, деконструировали конвейер обмена сообщениями Apple от начала и до конца. Самым сложным, по словам автора, было взломать то, что, по сути, является висячим замком Apple на всей системе - проверку, является ли подключенное устройство настоящим продуктом Apple.
3. Интересно, что основой для работы послужил прототип 16-летнего школьника, который доказал саму возможность "проникновения" в iMessage и с которым теперь работает автор Beeper.
4. Код iMessage от Beeper будет с открытым исходным кодом, чтобы другие пользователи могли ознакомиться с ним.
5. Конечно, Apple глубоко защищает iMessage как механизм блокировки для iPhone, и трудно представить, что компания навсегда проигнорирует появление сторонних решений для мессенджера. Но сейчас все отлично работает - и с вожделенными "синими пузырями".
И что: если вы 16-летний школьник - для вас нет ничего невозможного 💬 Будьте как школьник ☺️
Android
• Улучшение производительности Android-приложения NordVPN с помощью плагина Compose Compiler
• Реализация параллакс-карусели из SwiftUI в Jetpack Compose
• mortitech/better-previews-in-compose-with-custom-annotations-dc49b94ff579">Better Previews in Jetpack Compose, Tips and Tricks
• Kotlin Delegation: A Powerful Code Organization Technique for Reusability and Maintainability
• dugguRK/mastery-on-invoke-kotlin-8f1ebb4828d0">Mastery on Invoke Kotlin
• Clean Architecture for Android MVI
• amsavarthan/stealing-api-keys-security-in-android-495dd5285892">Stealing API keys — Security in Android
#android
Собрал все записи собеседований мобильных разработчиков, нечто вроде Awesome Interviews
✅. iOS и Android, с разделением (эфемерным, конечно, но все же) по грейдам - Junior, Middle, Senior. Всего получилось более 60 видео, если есть чем дополнить - можно прямо в личку кидать. По мере выхода новых тоже буду добавлять, так что если интересно - следите за обновлениями.
Разработка
• Онлайн собеседования мобильных разработчиков
• Рынок смарт-часов восстанавливается
• Самые высокооплачиваемые вакансии ноября в сфере разработки приложений
• Автотесты в AvitoTech
• Секреты собеседований с Алеексеем Быковым (Reddit)
• Треш-обзор Geekbrains. Полный разбор курса по Android
• Podlodka #343: что такое Motion Design?
• UI/UX Design: The Fastest Way to Make Your Designs More Interesting
• How Google takes the pain out of code reviews, with 97% dev satisfaction
• How Uber Computes ETA at Half a Million Requests per Second
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в ноябре 2023
• Маркетологи в мобайле: Александра Мареева («Спортмастер»)
• Capsule: новости на основе ИИ и человеческих редакторов
• Threads обгоняет X
Кроссплатформа
• FreeToGame: KMP-проект для Android, iOS, Desktop и Wear OS
• Welcome Fleet with Kotlin Multiplatform Tooling
• Kotlin Multiplatform Development Roadmap for 2024
• Flutter GameDev with Casual Games Toolkit & Flame
iOS
• Swift Utilities — Интеграция SwiftUI в UIKit
• Pow: анимационные эффекты для SwiftUI
• Поваренная книга SwiftUI: создание представления-сетки
• Вопросы с собеседований: в чем разница Weak и Unowned в Swift
• GetInRhythm/building-robust-ios-applications-the-art-of-modularization-a21bf5350c6a">Building Robust iOS Applications: The Art of Modularization
• Apple’s use of AppKit, Catalyst, Swift and SwiftUI in macOS Sonoma
• Using on-demand resources for securely storing API keys in iOS apps
• Observable Architecture Beta
• Easy app walkthroughs with MarkWalkthrough
• AsyncStream in the real world: wrapping an Apple Photos callback
• From viewWillAppear to viewIsAppearing - Perfecting Your iOS View Transitions
#ios
Ускоряем утечки памяти
Вот и новый еженедельный дайджест - про iOS, Android, кроссплатформу и все вокруг. Поставьте 👍 и поделитесь с коллегами! Еще у меня есть канал IT Insights, где новости и статьи про код, технологии и все самое интересное, возможно и за пределом мобайла. Вот, например, "Архитектурные антипаттерны" - распространенные антишаблоны, как их избежать и преодолеть "подводные камни" проектирования.
У Data.ai и Google вышло “практическое” руководство по монетизации приложений. По большей части - делайте хорошо, а плохо не делайте. Из интересного - график средних цен для встроенных покупок, пик которых пришелся на весну, и календарь ключевых моментов на 2024 год с разными праздниками, к которым можно приурочить свои активности. В общем, не обязательно, но местами может быть полезно.
Разработка
• Как мы (не) вкатились в геймдев. Часть 1
• Knowledge Graphs from scratch with Python
Маркетинг
• Как монетизировать приложения - практическое руководство Data.ai и Google
• Лучшие приложения и игры в Google Play 2023
• Лучшие приложения года в App Store Awards 2023
• Повышение Результативности Мобильного Маркетинга: Использование AIGC, Apple Search Ads и Steam Creatives для Повышения Эффективности UA
Кроссплатформа
• Хитрый виджет: разбор тестового Flutter-задания. Детективная нуар-история
• Sharing codebase between platforms — a look at Kotlin and Compose multiplatform
• Flutter + Flame + Tiled = a simple game field prototype for a strategy game
• React Native's New Architecture
• Reactive Programming in Flutter
• shabbir.kody/shimmer-skeleton-effects-in-flutter-b8755b3e57bb">Shimmer & Skeleton Effects In Flutter
iOS
• Working with XcodeKit
• Add Quick Actions to SwiftUI App
• SwiftUI geometryGroup() Guide: From Theory to Practice
• Create Your Own Step Counter SwiftUI App in 5 Minutes
#ios
Объявлены победители App Store Award
Поздравляем победителей!
• Приложение года для iPhone - AllTrails: Hike, Bike & Run
• Приложение года для iPad - Prêt-à-Makeup
• Приложение года для Mac - Photomator – Photo Editor
• Приложение года для Apple Watch - SmartGym: Gym & Home Workouts
• Приложение года для Apple TV - MUBI: Stream Great Cinema
• Лучшая игра для iPhone - Honkai: Star Rail
• Лучшая игра для iPad - Lost in Play
• Лучшая игра для Mac - Lies of P
Приложения, оказавшие наибольшее культурное влияние
• Finding Hannah
• Pok Pok | Montessori Preschool
• Proloquo
• Too Good To Go: End Food Waste
• Unpacking
Ссылки - тут.
Android
• Android. Принять себя или Cookie?
• Вопросы с собеседований: что такое контент-провайдер (Content Provider) в Android
• dugguRK/android-service-vs-intentservice-in-kotlin-edc84aa92305">Android: Service vs IntentService in Kotlin
• android-world/understanding-the-key-function-in-jetpack-compose-34accc92d567">Understanding the Key Function in Jetpack Compose
• artem_shevchenko/the-composable-java-vm-shut-down-issue-ffb29a881306">The Composable Memory Leak And Java VM Shut Down Issue
• Elegant Event Handling in Kotlin — A Refactoring Walkthrough
• Gestures in Jetpack compose — All you need to know
#android
Если вы целый день работаете за компьютером, инвестирование в отличную клавиатуру, как и в лучший монитор, это решение, которое может напрямую повысить качество вашей жизни. Нашел и совсем кратко перевел обзор лучших клавиатур для разработчиков. Лучшая - ASUS Scope 96 Strix II, если что, но мне понравилась Keychron Q6 Pro. В общем, если у вас еще нет желания на Новый год - можно повыбирать ⌨️
Разработка
• Лучшие клавиатуры для программирования 2023
• Бесплатный курс «Современное программирование на C++»
• Доступность игр для людей с ограниченными возможностями: проблемы и их решения
• How to Become a Data Engineer
• Microsoft opens sources ThreadX under MIT license
Маркетинг
• Фальшивый трафик в 2023 году будет стоить рекламодателям $71 млрд
• Roku and Unity team up to transform mobile app marketing
Кроссплатформа
• Как добавить Flutter в нативное приложение iOS и протестировать его на Codemagic (Часть 3)
• Kotlin Multiplatform в мобильной разработке. Рецепты общего кода для Android и iOS
• yamen.abd98/code-generator-using-flutter-source-gen-build-runner-9cc1fe0e2ff2">Code Generator using Flutter
iOS
• Моя малышка любит самолеты — и я сделал для нее радар
• Swift Evolution: Reading and learning from proposals
• Working with custom metadata in mp4 files
• Using on-demand resources for securely storing API keys in iOS apps
• Practical Examples of Swift Extensions
• Top SwiftUI Interview Questions for 2023
• Automating Memory Leak Detection with CI Integration for iOS
#ios
Новостей особых нет, а вот в комментариях появилась интересная тема про исследования - каким спортом вы увлекаетесь? В смысле постоянно следите и более менее знаете нюансы, а не просто смотрите чемпионат мира. Опрос в следующем посте.
Разработка
• Зарплаты за год в IT выросли на 8.5%
• Мыслим как Platform Engineer
• Tracer — альтернатива Crashlytics: другой взгляд на аналитику ошибок в приложениях
• Как качать миллионы фотографий в сутки, выдержать кратный рост и не умереть?
• Насколько реален российский айфон: разговор с Максимом Горшениным.
• Podlodka #347: развитие продукта от 0 до 1
• Размышления о 18 годах работы в Google
• Исследование The State of Developer Ecosystem 2023 от JetBrains
• Что можно улучшить в своем приложении? Крадем как художники у Яндекс.Еды
• A good engineer thinks like a product manager
Маркетинг
• Wasted Ad Spend Report 2024: The Global Impact of Invalid Traffic
Кроссплатформа
• codersangam/top-14-vs-code-extensions-for-fast-flutter-app-development-e41cb86080e5">Top 14 VS Code Extensions for Fast Flutter App Development
• Creating an automated test framework for React Native apps
• Overflow Indicator in Flutter: Mastering UI Responsiveness
iOS
• Поваренная книга SwiftUI: создание круглого представления в SwiftUI
• Variablur: размытие для SwiftUI на основе Metal
• Swift-уроки: Actor
• Как получить международный оффер iOS-разработчику
• SwiftLeeds 2023 Videos
• How to store images in SwiftData
• Refactoring Your iOS AppDelegate
• New to Bitrise: Enhanced Xcode Reporting & Build Annotations
• Months of rewriting code and tests to async/await
• Unit Test the Observation Framework
• Router Pattern for SwiftUI Navigation
#ios
Отладка Google в домашних условиях
Вот и новый еженедельный дайджест - про iOS, Android, кроссплатформу и все вокруг. Поставьте 👍 и поделитесь с коллегами! Еще у меня есть канал IT Insights, где новости и статьи про код, технологии и все самое интересное, возможно и за пределом мобайла. Вот, например, "Спасибо, что подержали мою уточку" - о том, как искать решение проблем просто объясняя их.
Всем кэшбэк! На связи Appbooster 👋
🎁 Наступила долгожданная Чёрная пятница. Продвигайте приложения и возвращайте 50% от суммы пополнения баланса!
🔸Акция действует в период с 24 по 30 ноября 2023 года включительно.
🔸Минимальная сумма пополнения — 50 тыс. рублей.
🔸При пополнение на общую сумму от 50 тыс. рублей кэшбэк составит 50%*.
🔸Учитываются и суммируются все платежи в период акции, то есть можно пополнять баланс несколькими суммами.
Кэшбэк будет начислен через 3-5 дней после окончания акции.
👉 Пополнить баланс прямо сейчас!
*Максимальная сумма возврата составляет 300 тыс. рублей. Акция не суммируется с другими акциями, спецпредложениями и кэшбэками. Предложение действительно только для клиентов, использующих платформу Appbooster на основании договора оферты.