В новом выпуске отслеживаем состояние переключателя тихого режима, изучаем макросы Swift и Android-разработку, катим фичи без релизов, собираем слезы вкатунов, отказываемся от скромности и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/uc/fz/yr/ucfzyr5w3mljamguw5sln1xdyvi.jpeg)
iOS
• iOS: Узнать и отслеживать состояние физического переключателя тихого режима
• Изнутри: Swift макрос — #Preview
• Макросы в Swift
• Swift 5.9. Что нового?
• Жизненный цикл объектов SwiftUI
• Фил Шиллер «должен убрать свои руки от App Store»
• Apple обновила ресурсы для дизайнеров
•
Implementing Carousel Slider Inspired From Material Carousel
•
SwiftUI Glassmorphism — Glass Background Effect
•
Easily Add Filtering In SwiftData Using Searchable
•
I screwed up one key accessibility behavior, and now I’m on a mission to do better
•
iOS 17: Notable UIKit Additions
•
The debut of the ButtonRepeatBehavior view modifier
•
A Deep Dive Into Observation: A New Way to Boost SwiftUI Performance
•
The Power of Function Builder: Swift VS SwiftUI
•
#Preview SwiftUI Views using Macros
•
Creating a Joystick Control in SwiftUI
•
Scalable Navigation With Deep Links in SwiftUI
•
Revamping Trendyol’s iOS App: A Modularization Success Story
•
All about Silent Push Notifications. Step-by-Step Guide
•
Recreating iMessage’s Sticker Peel-Off Effect
•
Agile Architecture in Swift
•
Effective Task cancellation in Swift by leveraging Combine’s AnyCancellable
•
Writing a modern iOS Networking Library with Swift Concurrency
•
Libraries with resources optimized for build time and application size
•
How to use String Catalogs for localization in Swift
•
Unleashing Xcode’s Potential: 6 Uncommon Xcode Extensions for Senior iOS Engineers
•
Implementing location search by address into the iOS app
•
How to set up Gitlab CI/CD with Fastlane for iOS-project on a Mac mini
•
Working with C callback functions in Swift
•
Mapbox Maps SDK iOS: интерактивные настраиваемые карты
•
ReSwift: однонаправленный поток данных в Swift
•
iOS Starter Kit: примеры для начинающих
Android
• Как самому научиться Android-разработке
• Тестирование мобильных игр перед релизом: инструменты и лучшие практики в Google Play
• Как мы снизили время запуска FullStory на Android на 75%
• Обзор библиотек для скриншот-тестирования Android проектов. Часть 1
• Android: смотрите на больших экранах
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Google обновляет дизайн логотипа Android
•
Location location location, revisited — Android Developers Backstage
•
Intents & Intent Filters — Android Basics 2023
•
Resources & Qualifiers — Android Basics 2023
•
Seal the Deal with Kotlin — A Look at Sealed Classes and Sealed Interfaces
•
Exploring Jetpack Compose Anchored Draggable Modifier
•
Lindy effect in surnames problem
•
I re-wrote Grab Android App. Do I regret it?
•
Server-Sent Events in Android (with Node.js)
•
Modularizing Our Driver App For Android
•
MockResponseInterceptor: Simplifying Retrofit API Response Mocking in Android
•
Dropbox rebuilt its search experience 40% faster with Jetpack Compose
•
How to create a welcoming codebase
•
Simplify Testing Kotlin Flows with Turbine
•
Understanding memory leaks
•
Talkback Ordering in Android Jetpack Compose
•
Performance With Jetpack Compose
•
Tools and tips I wish I knew when I started Android development
•
Records in Android Studio Flamingo
•
Avoid Java double brace initialization
•
Jetpack compose — How to implement Custom Pager Indicators
•
TranslationPlugin: перевод текста в IntelliJ/Android Studio
•
Flagfit: флаги функций для Android и Kotlin
Кроссплатформа
• Dart для бэкэндеров. Часть 1
• Flutter meetup от Evrone
•
Creating Kotlin Multiplatform SDK
•
Demystifying Local AAR Usage in Flutter: Step-by-Step Guide for Flutter Plugins and Projects
•
Modularizing Flutter UI with Factory Constructors
•
Flutter — Learn the Importance of Constraints in Layout Creation
•
Write unit tests and UI tests in your Kotlin Multiplatform app!
•
Migration to go_router — dev’s story
•
Unifying our workflow: the journey to monorepo with Kotlin Multiplatform Mobile
•
Flutter — iOS App Release on AppStore using Bitbucket Pipeline
•
Sealed Classes in Dart: Unlocking Powerful Features
Разработка
• Как катить фичи без релизов. Часть 2: про низкоуровневый Server Driven UI
• Одна строчка кода, которая стоила $8,000
• Как мы делаем тестирование прозрачным. Всё об инфраструктуре QA
• JTBD-метод на практике для решения тестового задания
• Автотесты: кому они крайне необходимы, а кто может без них обойтись?
• Как дизайнеру спасти ситуацию с помощью исследования. За пару часов, $4 и без разработки
• Топ-10 самых востребованных у работодателей языков программирования
• Видео Yandex BDUI Conf
• СЛЕЗЫ ВКАТУНА: Реальная история входа в IT в 2023
• Avito Design Talk: дизайнер vs. продакт
• Охэхэнный подкаст: кто такой тимлид
• Niantic снова проводит увольнения
• Tesla добавляет поддержку сторонних приложений
• Только четверть программистов однозначно счастливы, работая в IT
• Не будьте скромным разработчиком
• 4 ошибки, которых следует избегать, чтобы построить бизнес из одного человека
•
Nokia is finally making news with its new UI language
•
Where Do Old Programmers Go?
•
How Spotify’s design optimizes for sign-up conversions
•
12 Mobile App UI/UX Design Trends 2023
•
How We Scaled to 100 Million Active Users Using Kafka and Golang — Eventual Consistency
•
Nobody Listens to UX
•
I Wish I Knew These 10 Software Architectural Styles Before the Interview
•
To Be A Great Software Developer — You Need a System
Аналитика, маркетинг и монетизация
• Социальная сеть IRL, получившая $200 млн инвестиций, сообщила о закрытии
• Как попасть в фичеринг
• MyTracker запустила инструмент для оценки портрета аудитории сайта или приложения
• Корейский Alwayz пытается сделать шоппинг веселым и социальным
• Реклама Facebook* в Европе позволит скачивать приложения напрямую
• Категория «Здоровье и фитнес» в 2022 — отчет AdQuantum и Sensor Tower
• В AppMetrica появились кастомные дашборды
• TikTok закрывает свой клон BeReal
• Траты россиян на мобильные игры в крупнейших магазинах приложений упали втрое
• Загрузки переходят на летний режим
• Помогли запустить приложение для помощи детям в экстренных ситуациях
AI, Устройства, IoT
• Как я написал конвертер 3D-моделей из подручных средств
• Prompt-инженер как новый тренд. Требования и зарплаты у специалистов
• Zabbix-мониторинг устройств IoT метеостанции с помощью Repka Pi
• Device Twins в 5G и Edge Computing
• Разгоняем BLE
• ChatGPT запустили на Windows 3.1
• Google отменил свои AR-очки Project Iris и переключился на создание платформы
• Google запустил обучающий курс по генеративному ИИ
•
Embedchain: создание LLM чат-ботов на основе собственных данных
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/uc/fz/yr/ucfzyr5w3mljamguw5sln1xdyvi.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• iOS: Узнать и отслеживать состояние физического переключателя тихого режима
• Изнутри: Swift макрос — #Preview
• Макросы в Swift
• Swift 5.9. Что нового?
• Жизненный цикл объектов SwiftUI
• Фил Шиллер «должен убрать свои руки от App Store»
• Apple обновила ресурсы для дизайнеров
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Как самому научиться Android-разработке
• Тестирование мобильных игр перед релизом: инструменты и лучшие практики в Google Play
• Как мы снизили время запуска FullStory на Android на 75%
• Обзор библиотек для скриншот-тестирования Android проектов. Часть 1
• Android: смотрите на больших экранах
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Google обновляет дизайн логотипа Android
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Dart для бэкэндеров. Часть 1
• Flutter meetup от Evrone
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как катить фичи без релизов. Часть 2: про низкоуровневый Server Driven UI
• Одна строчка кода, которая стоила $8,000
• Как мы делаем тестирование прозрачным. Всё об инфраструктуре QA
• JTBD-метод на практике для решения тестового задания
• Автотесты: кому они крайне необходимы, а кто может без них обойтись?
• Как дизайнеру спасти ситуацию с помощью исследования. За пару часов, $4 и без разработки
• Топ-10 самых востребованных у работодателей языков программирования
• Видео Yandex BDUI Conf
• СЛЕЗЫ ВКАТУНА: Реальная история входа в IT в 2023
• Avito Design Talk: дизайнер vs. продакт
• Охэхэнный подкаст: кто такой тимлид
• Niantic снова проводит увольнения
• Tesla добавляет поддержку сторонних приложений
• Только четверть программистов однозначно счастливы, работая в IT
• Не будьте скромным разработчиком
• 4 ошибки, которых следует избегать, чтобы построить бизнес из одного человека
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Социальная сеть IRL, получившая $200 млн инвестиций, сообщила о закрытии
• Как попасть в фичеринг
• MyTracker запустила инструмент для оценки портрета аудитории сайта или приложения
• Корейский Alwayz пытается сделать шоппинг веселым и социальным
• Реклама Facebook* в Европе позволит скачивать приложения напрямую
• Категория «Здоровье и фитнес» в 2022 — отчет AdQuantum и Sensor Tower
• В AppMetrica появились кастомные дашборды
• TikTok закрывает свой клон BeReal
• Траты россиян на мобильные игры в крупнейших магазинах приложений упали втрое
• Загрузки переходят на летний режим
• Помогли запустить приложение для помощи детям в экстренных ситуациях
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Как я написал конвертер 3D-моделей из подручных средств
• Prompt-инженер как новый тренд. Требования и зарплаты у специалистов
• Zabbix-мониторинг устройств IoT метеостанции с помощью Repka Pi
• Device Twins в 5G и Edge Computing
• Разгоняем BLE
• ChatGPT запустили на Windows 3.1
• Google отменил свои AR-очки Project Iris и переключился на создание платформы
• Google запустил обучающий курс по генеративному ИИ
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.