Мобильная разработка за неделю #518 (4 — 10 декабря)
В нашем новом дайджесте устройство протокола iMessage и новое приложение Beeper Mini (которое уже не работает), бесплатный Xcode Cloud, новый ИИ от Google в Android, создание простого калькулятора, интернационализация от i до n, конец плоского дизайна и многое другое.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Использование on-demand ресурсов для безопасного хранения ключей API в iOS-приложениях
• Как устроен протокол iMessage
• Swift Utilities — Интеграция SwiftUI в UIKit
• Идеальный REST клиент iOS
• Swift Utilities — Работа со SwiftData в Background
• Разработчики будут бесплатно получать 25 часов Xcode Cloud в месяц
• Поваренная книга SwiftUI: создание кастомного модификатора представления + создание сетки представлений
• 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
• Testing private functions in Swift
• Future-Proofing Your Projects for Swift 6: A Comprehensive Guide
• SwiftUI for Jetpack Compose developers — State
• Easily Change the Language of the Simulator to Test Your App
• 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
• Handling new Enum cases in Swift. UnknownCaseDecodable protocol
• Distributing a Swift Macro using CocoaPods
• GPT«s specifically for Apple Frameworks
• Mastering in SwiftUI
• Stop abusing value type
• How To Create A Tic Tac Toe Game in Xcode 15 (SwiftUI)
• Interactive Widgets — Intents
• SwiftUI Complex Hero Animation With Synchronized ScrollViews
• Create your first app with SwiftUI and SwiftData
• Swift Data Many to Many relationships
• How To Create And Use A Card View in Xcode 15 (SwiftUI)
• ColorfulX: градиенты с Metal
• IMSwitch: графические переключатели для SwiftUI
Android
• Gemini — новая основа для искусственного интеллекта в Android
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Создание простого калькулятора в Android Studio
• Улучшение производительности Android-приложения NordVPN с помощью плагина Compose Compiler
• Переход на Gradle 8 Android проекта
• Как интегрировать Dynamic Features в Android-приложение
• Вопросы с собеседований: для чего нужны сервисы в Android-приложении
• 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
• First look at AndroidX Bluetooth
• Better Previews in Jetpack Compose, Tips and Tricks
• Kotlin Delegation: A Powerful Code Organization Technique for Reusability and Maintainability
• Mastery on Invoke Kotlin
• Clean Architecture for Android MVI
• Stealing API keys — Security in Android
• Android Interview Cheat Sheet
• Live Mosaic at Droidcon London 2023
• 100% Flakiness-free UI test automation with Kaspresso and Allure Testops
• KSP2 Preview: Kotlin K2 and Standalone Source Generator
• Improve Your Android App Performance With Baseline Profiles
• Kotlin under the hood: The nuances of using annotations in Kotlin
• Enhancing Jetpack Compose app performance
• Latest Updates to Google Play, New APIs in Jetpack Compose, and more dev news!
• mutableStateOf () VS. mutableIntStateOf () — Auto-Boxing Explained
• Is it okay to use runBlocking?
• Tusky: Android-клиент для Mastodon
• CountryCP: выбор страны в Compose
Кроссплатформа
• Flutter Web умер. Да здравствует Flutter Web
• Инструкция: как быстро настроить GitLab CI/CD на Flutter-проекте
• Как я стал Google Developer Expert по Flutter
• PWA vs. нативные приложения: когда и как выбрать?
• Welcome Fleet with Kotlin Multiplatform Tooling
• Kotlin Multiplatform Development Roadmap for 2024
• Flutter GameDev with Casual Games Toolkit & Flame
• Handling Asynchronous Data in Flutter with Generic Classes
• Building a Spreadsheet Interface in Flutter: A Quick Guide
• Why Flutter is «NOT» the Best Mobile App Development Tool
• How to implement push notifications in Kotlin Multiplatform
• Calling Platform-Specific Dependencies in Kotlin Multiplatform
• Safeguarding Your Flutter Apps
• Flutter GameDev with Casual Games Toolkit & Flame
• Practical Functional Programming in Dart and Flutter
• FreeToGame: KMP-проект для Android, iOS, Desktop и Wear OS
Разработка
• Интернационализация от i до n: как мы переводим интерфейсы в Фантехе Яндекса
• Мода на плоский дизайн наконец-то прошла?
• 10 тёмных паттернов в UX-дизайне и как их избежать
• 9 советов, которые облегчат путь до мидла
• Операционные системы — Как это работает
• Как зарабатывать на обучении в IT?
• TypeScript убил JavaScript?
• Microsoft открыла Terminal Chat
• 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
• How psychology design products that win customers
• Data Quality Score: The next chapter of data quality at Airbnb
• Are your engineering «best practices» just developer dogmas?
• Your GitHub pull request workflow is slowing everyone down
• How to Build a Personal Brand as a Developer
• How the first gen iPod was reverse engineered to run Rockbox
Аналитика, маркетинг и монетизация
• Как продвигать приложение детской одежды в VK Рекламе и Яндекс Директе — кейс Gulliver Market и Rocket10
• Дизайн А/Б-тестов
• 5 прогнозов для мобильных приложений 2024
• Discord провел редизайн мобильного приложений с акцентом на сообщения
• Beeper Mini — новое приложение для переписки в iMessage с Android (и уже не работает)
• Bumble For Friends использует ИИ для написания первого сообщения
• Animate Anyone приближает создание видео-дипфейков
• Самые скачиваемые и зарабатывающие приложения в России в ноябре 2023
• Маркетологи в мобайле: Александра Мареева («Спортмастер»)
• Capsule: новости на основе ИИ и человеческих редакторов
• Threads обгоняет X
• France in three charts: Installs, sessions, and retention rates
• How to implement gamification and enhance your app«s user experience
AI, Устройства, IoT
• О троице, которая хакнула настоящий поезд. Даже целых 30 поездов
• Технологии прошлого и настоящего: как я сделал Nixie Clock с самодельным драйвером на ESP8266
• Создаём сортировщик деталей Lego Technic, распознающий объекты в реальном времени
• Pimento использует ИИ для превращения брифов в креативные мудборды
• Apple выпустила библиотеки машинного обучения для Apple Silicon
• Google выпустил AlphaCode 2 на основе Gemini
• Amazon выпустил Q, своего помощника с искусственным интеллектом
• Рынок смарт-часов восстанавливается
• MLOps Course — Build Machine Learning Production Grade Projects
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.