AppFiles - Mobile Development
رفتن به کانال در Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
نمایش بیشتر2 165
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
+130 روز
آرشیو پست ها
Творческая переработка MVVM и TCA на примере iOS
За основу мы взяли архитектуру MVVM (Model—View—ViewModel), в которой View отвечает за графическое представление данных, вся бизнес логика сосредоточена внутри ViewModel. ViewModel обрабатывает запросы от View, обновляет свои данные, и View посредством data binding автоматически обновляет своё представление, что очень удобно. Model — модель для хранения и передачи данных.
Статья: https://habr.com/ru/companies/gri/articles/913610/
Платформа: iOS
Swift в Apple: перенос службы мониторинга паролей с Java
Swift широко используется в проде для создания облачных сервисов в Apple, давая невероятные результаты. В прошлом году сервис Password Monitoring был переписан на Swift и теперь обрабатывает миллиарды запросов в день с устройств по всему миру. По сравнению с предыдущим сервисом на Java, обновленный бэкенд обеспечивает 40% увеличение производительности, а также улучшенную масштабируемость, безопасность и доступность.
Статья: https://apptractor.ru/info/articles/swift-v-apple-perenos-sluzhby-monitoringa-paroley-s-java.html
Платформа: Swift/разработка
Tomoyo — это приложение Kotlin Multiplatform. С одной стороны, это функциональная копия веб-сайта, позволяющая реализовать некоторые его функции на мобильных и десктопных платформах. С другой стороны, оно служит примером для общих функций, таких как навигация, сокеты (для чата), видео, аудио и база данных в Kotlin Multiplatform.
Tomoyo на GitHub: https://github.com/AsterCass/Tomoyo
Платформа: Android/кроссплатформа
⭐️: 65
Live Updates в Android 16 — исследуем новые уведомления
Начиная с Android 16, у нас появился новый стиль уведомлений Notification.ProgressStyle, который мы можем использовать для создания уведомлений, ориентированных на отображение прогресса выполнения задач.
В этой статье мы узнаем, как использовать этот новый стиль для предоставления конечным пользователям оперативных обновлений.
Статья: https://apptractor.ru/info/articles/live-updates-v-android-16-issleduem-novye-uvedomleniya.html
Платформа: Android
Уникальные значения - удаление дубликатов из массива в Swift
Удаление дубликатов для получения уникальных значений из массива может быть распространенной задачей. В таких языках, как Ruby, есть встроенные методы, например
uniq, но в Swift нам приходится создавать такие методы самостоятельно. Стандартная библиотека не предоставляет простого способа для этого.
Существует много способов достичь того же результата, и у каждого из них есть свои плюсы и минусы. Давайте рассмотрим их и посмотрим, какие методы лучше всего подходят для вашего случая.
Статья: https://apptractor.ru/info/articles/unikalnye-znacheniya-udalenie-dublikatov-iz-massiva-v-swift.html
Платформа: iOSChessKit - пакет Swift для эффективной реализации шахматной логики (не игры самой, а именно логики). Реализует представление доски и всех игровых фигур, проверку правильности хода, ветвление ходов и вариации, состояний игры (шах, мат, пат, ничья) и т.п.
ChessKit на GitHub: https://github.com/chesskit-app/chesskit-swift
Платформа: iOS
⭐️: 14
Марширующие муравьи - делаем кастомный модификатор для границ
Граница в виде "марширующих муравьев" — распространенный элемент пользовательского интерфейса, используемый для обозначения «выбранного» элемента, но предоставляемый Compose модификатор border() не справляется с этой задачей.
Поэтому давайте создадим свой собственный!
И по ходу дела мы многое узнаем о Paths, измерении путей, рисовании путей и эффектах!
Статья: https://apptractor.ru/info/articles/marshiruyuschie-muravi-delaem-kastomnyy-modifikator-dlya-granits.html
Платформа: Android
SmartCaptcha Yandex на iOS: инструкция по внедрению
Настройка Yandex SmartCaptcha на первый взгляд может показаться простой задачей, но на практике она требует внимательности, точной настройки и понимания архитектуры приложения. Я поделюсь личным опытом внедрения этого инструмента, объясню, какие нюансы стоит учесть, а также как избежать ошибок.
Материал предназначен для iOS-разработчиков, у которых уже есть базовые знания мобильной разработки, и кто хочет быстро и корректно внедрить капчу от Яндекса в свое iOS-приложение.
Статья: https://habr.com/ru/companies/simbirsoft/articles/914178/
Платформа: iOS
Автоматизация проверки стиля кода с помощью KtLint в Android проекте
Мне повезло участвовать в большом стартапе и начать проект самостоятельно. И в моем проекте я решил покончить с Code Review в привычном понимании.
Что мне было необходимо? Нужен был инструмент, который бы приводил код к единому стилю и избавил меня и других участников команды от необходимости проверять стиль кода. Сюда входит правила расстановки новых строк, именования методов, отступы и тд. Необходимо чтоб инструмент подсвечивал места где стиль не соблюдается и исправлял автоматически такие места.
В данной статье я рассмотрю только анализ стиля Kotlin кода и его автоматическое исправления согласно выработанным правилам в проекте.
Статья: https://habr.com/ru/articles/914250/
Платформа: Android
Для чего я написал собственный аудиопроигрыватель
Раздосадованный ограниченностью возможностей, я решил взяться за разработку. Если уж я купил вычислительное устройство (в данном случае iPhone), то что мешает мне просто создать необходимое мне при помощи кода? В этой статье я расскажу о своих разочарованиях по пути к реализации базовой функциональности музыкального плеера: загрузки аудиофайлов, их упорядочивания и воспроизведения. Но больше всего мне хотелось напомнить себе, что это просто компьютер, и у меня должна быть возможность заставить его выполнять нужные мне задачи.
Статья: https://habr.com/ru/companies/ruvds/articles/912886/
Платформа: iOS
ReadMoreTextView - библиотека реализует сворачиваемый виджет Text с «Читать дальше» в свернутом состоянии и «Читать меньше» в развернутом. Поддерживает Android View и Jetpack Compose.
ReadMoreTextView на GitHub: https://github.com/webtoon/ReadMoreTextView
Платформа: Android
⭐️: 180
📺 Видео и подкасты за неделю на @AppFiles
•
(iOS Ru) Ускоряем приложение эффективно
• (iOS Ru) Swift Concurrency в iOS SDK Яндекс Доставки
• (iOS Ru) Как мы доверили качество наших приложений AI
• (iOS En) iOS Interview Question: Build a World Clock App in SwiftUI
• (iOS En) 6 Useful SwiftUI Modifiers - Xcode 16
• (iOS En) How to Run Automated UI Tests in iOS with XCUITest
• (iOS En) Elevate Your SwiftUI Lists with iOS 18’s New Container Features
• (iOS En) SwiftUI iOS Localization Tutorial: Master String Catalogs in Xcode 16
• (iOS En) How Task Cancellation Really Works in Swift (Behind the Scenes)
• (iOS En) Re-creating iMessage Morph-Menu Effect Using SwiftUI
• (And Ru) История одного бизнес-желания
• (And Ru) Наглядный пример, когда не следовать best practices for coroutines от Google
• (And Ru) Кто является Senior разработчиком?
• (And En) What’s new in Jetpack Compose
• (And En) Google Home APIs, tools, and Gemini capabilities for your apps
• (And En) KotlinConf'25 - Keynote
• (And En) Everything you need to know about NEW Navigation 3
• (Crs Ru) Борьба с лишним весом, или Методы оптимизации размеров Flutter-приложений
• (Crs En) Hot Reload In Compose Multiplatform (CMP) - THIS Is All You Have to Know
• (Dev Ru) Анатомия энергопотребления
• (Dev Ru) От J2ME до супераппов: 20 лет разработки глазами техдиректор
• (Dev Ru) Вадим Чистяков — Global Talent Visa, переезд в Лондон, работа в IT
• (Dev Ru) Мнемотехника: запомнить всё — развитие памяти, насмотренность, саморазвитие
• (Dev En) Announcing Gemma 3n Preview: Powerful, Efficient, Mobile-First AI
• (Dev En) Learn Python for Data Science – Full Course for Beginners
Прошлогодние видео:
• (iOS Ru) Как писать игры на Swift для Playdate
• (iOS Ru) Мок-собеседование iOS-разработчика. SwiftUI (+ все собеседования)
• (iOS Ru) Макросы Swift: проще, чище, быстрее
• (iOS Ru) Мы решили все проблемы работы в модульном проекте. Хотите так же?
• (And Ru) Оптимизация Compose: проблемы, опыт, тактика, стратегия
• (Crs Ru) 5 лет с Flutter: эволюция кроссплатформенности
• (Crs Ru) Flutter-диета. Как сбросить вес, выпиливая модули
• (Dev Ru) Прокачиваем Code Review: как выжать максимум?ObservableDefaults - библиотека Swift, которая легко интегрирует UserDefaults и NSUbiquitousKeyValueStore (iCloud Key-Value Storage) с фреймворком Observation в SwiftUI. Он предоставляет два мощных макроса (@ObservableDefaults для локального управления UserDefaults и @ObservableCloud для облачного синхронизированного хранения данных), которые упрощают сохранение данных, автоматически связывая объявленные свойства с соответствующими системами хранения. Это позволяет точно и эффективно реагировать на изменения данных, независимо от того, происходят ли они внутри приложения, извне или на нескольких устройствах.
ObservableDefaults на GitHub: https://github.com/fatbobman/ObservableDefaults
Платформа: iOS
⭐️: 152
Выразительные анимации для всех
По мере изучения возможностей Material 3 Expressive одним из первых компонентов, которые я собираюсь внедрить, станут кнопки-переключатели. Благодаря новой выразительной системе движений и визуальных эффектов мне не терпится увидеть, как эти кнопки могут стать более динамичными, плавными и эмоционально привлекательными - выйти за рамки статичных элементов пользовательского интерфейса и стать тем, что действительно реагирует на взаимодействие с пользователем.
Статья: https://apptractor.ru/info/articles/vyrazitelnye-animatsii-dlya-vseh.html
Платформа: Android
Скриншот-тестирование для превью Compose
Скриншот-тестирование - эффективный способ проверить, как ваш пользовательский интерфейс выглядит для пользователей. Инструмент Compose Preview Screenshot Testing сочетает в себе простоту и возможности composable превью с повышением производительности при выполнении скриншот-тестов на собственном компьютере. Compose Preview Screenshot Testing разработан для того, чтобы быть таким же простым в использовании, как и сами composable превью.
Статья: https://apptractor.ru/info/articles/skrinshot-testirovanie-dlya-prevyu-compose.html
Платформа: Android
Как мы распилили монолит Tinder
Tinder поделился опытом преодоления проблем, связанных с монолитной архитектурой в iOS-приложении. Они столкнулись с трудностями, такими как медленные сборки, отсутствие четкой ответственности за модули и сложности в тестировании. Чтобы решить эти проблемы, команда Tinder применила стратегию модульности, разделив монолит на независимые Swift-модули.
Ключевые аспекты подхода Tinder:
1. Сокращение критического пути сборки: Путем «уплощения» графа зависимостей, то есть устранения ненужных зависимостей между модулями, они добились возможности параллельной компиляции, что значительно ускорило процесс сборки.
2. Модульность как средство управления зависимостями: Разделение кода на модули позволило явно определить контракты между частями системы, уменьшить использование анти-паттернов, таких как синглтоны и циклические зависимости, и улучшить читаемость и поддержку кода.
3. Автоматизация процесса: С учетом масштабов проекта (более 1000 файлов и 150 000 строк кода), ручная модульность была бы неэффективной. Tinder разработал инструменты для автоматического рефакторинга, что обеспечило масштабируемость и последовательность изменений.
Этот опыт демонстрирует, как переход от монолитной архитектуры к модульной может значительно улучшить производительность, упростить поддержку и ускорить разработку в крупных проектах.
Статья: https://medium.com/tinder/how-we-decomposed-tinders-monolith-48dcf01a6066
Платформа: iOS
Pixel Weather App - многофункциональное погодное приложение для Android с уникальным пиксель-арт пользовательским интерфейсом, разработанное в качестве дипломного проекта. Приложение не только отображает стандартные прогнозы погоды из OpenWeatherMap API, но и использует локальную модель TensorFlow Lite для прогнозирования температуры «ощущается как».
Внутри Kotlin, Jetpack Compose, MVVM, корутины и Flow, Hilt, Room, TensorFlow Lite, Gradle.
Pixel Weather App на GitHub: https://github.com/ArtemZarubin/PixelArtWeatherML
Платформа: Android
⭐️: 29
Что такое static в Swift — вопросы с собеседований
Swift — современный язык программирования, который сочетает в себе мощь и безопасность, предоставляя разработчикам разнообразные инструменты для написания выразительного и безопасного кода. Ключевое слово
static в Swift играет важную роль в определении свойств и методов, принадлежащих самому типу, а не его экземпляру. Хотя концепция может показаться знакомой тем, кто имел дело с языками вроде Java или C++, в Swift она имеет свои особенности, тонкости и области применения, которые важно понимать, чтобы использовать язык на полную мощность.
Статья: https://apptractor.ru/info/articles/static-swift.html
Все: вопросы с собеседований
Платформа: iOSИнституциональные покупки: понимание и обнаружение
Всплеск загрузок, вызванный институциональными покупками (Institutional Purchases), видимыми в App Store Connect, приводит в замешательство многих разработчиков приложений. Несколько сообщений на Reddit или форумах Apple пытаются ответить на вопрос, что это такое, но путаницы с ними по-прежнему много. Программа Apple Volume Purchase Program (VPP) имеет отношение к институциональным покупкам и приводит к измененному поведению вашего приложения.
Что такое институциональные покупки и что вы должны делать с ними по-другому?
Статья: https://apptractor.ru/info/articles/institutsionalnye-pokupki-ponimanie-i-obnaruzhenie.html
Платформа: iOS
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
