AppFiles - Mobile Development
الذهاب إلى القناة على Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
إظهار المزيد2 168
المشتركون
+524 ساعات
+27 أيام
+530 أيام
أرشيف المشاركات
TinyStorage - простая и легкая замена UserDefaults (не обертка, а именно замена, лишенная некоторых недостатков нативного фреймворка) с более надежным доступом и встроенной поддержкой типов Codable.
Как писал автор в этой статье, в последнее время у UserDefaults все чаще возникают проблемы с возвратом нулевых данных, когда устройство заблокировано и iOS предварительно «разогревает» ваше приложение. В сочетании с API, который не очень хорошо раскрывает эту информацию, вы можете легко оказаться в ситуации с трудноотслеживаемыми ошибками и потерей данных. Эта библиотека стремится решить эту проблему, не шифруя файл и обеспечивая более надежный доступ к сохраненным данным (хотя и менее безопасный, так что не храните конфиденциальные данные), и добавляя к этому некоторые приятные мелочи.
Как и UserDefaults, TinyStorage предназначен для использования с относительно небольшими значениями. Не храните в TinyStorage массивные базы данных, так как он не оптимизирован для этого, но он достаточно быстр для извлечения сохраненных типов Codable. В качестве ориентира, размер хранилища не должен превышать 1 МБ.
TinyStorage на GitHub: https://github.com/christianselig/TinyStorage
Платформа: iOS
⭐️: 182
Видео и подкасты за неделю @AppFiles
•
(iOS Ru) Собеседование iOS-разработчика: проектирование и лайфкодинг (+ все собеседования)
• (iOS En) Improve Scroll Transitions | SwiftUI
• (iOS En) Grid Multi-Selection using Pan Gesture | SwiftUI
• (iOS En) How to Fix UIKit and SwiftUI Menu Buttons (make them easier to tap)
• (iOS En) TDD Basics with SwiftUI
• (iOS En) Adopt iPhone 16 Camera Control into your SwiftUI App
• (iOS En) WWDC22: Design protocol interfaces in Swift
• (And En) Now in Android: 110 - Android 15, Credential Manager, Android Studio Koala, Compose for TV
• (And En) FULL Guide to Kotlin's Inline Keyword (inline, crossinline & noinline)
• (And En) Micro Open Source: From Passion to Pet Project Publication
• (Crs Ru) Flutter Web глазами мобильного разработчика
• (Crs En) Build a Book Library App for Android & iOS using ROOM KMP (MVVM)
• (Dev Ru) Мобильная разработка в Алисе и YaOS: как это работает
• (Dev Ru) Путь тестировщика: ошибки, опыт, деньги
• (Dev Ru) Перформанс мобильных приложений
• (Dev Ru) Дизайн-система 2.0: менеджеры нужны
• (Dev Ru) Двое за ноутом, не считая copilot’а, или Как внедрить парное программирование
• (Dev Ru) Так много тимлидов хороших и разных. А я какой?
• (Dev Ru) Стартап мечты превратился в кошмар
• (Dev En) Databases In-Depth – Complete Course
• (Dev En) Electron Course - Code Desktop Applications (inc. React and Typescript)
• (Dev En) AWS Certified AI Practitioner (AIF-C01) – Full Course to PASS the Certification Exam
#ios #android #mobile #videoMusicSearch - приложение для Android, позволяющее просматривать песни, исполнителей и все, что с ними связано, используя MusicBrainz API.
Мультиплатформенные дистрибутивы находятся в разработке. Только приложение для Android считается стабильным.
MusicSearch на GitHub: https://github.com/lydavid/MusicSearch
Платформа: Android
⭐️: 40
Остерегайтесь UserDefaults: история о трудно понимаемых ошибках и потерянных данных
Оказывается, иногда вы можете запросить сохраненные данные из UserDefaults, а он... просто не захочет их получать! Это довольно большая проблема для системы, которая должна надежно хранить данные для вас.
Это может привести к еще более серьезной проблеме - к безвозвратной потере данных.
Статья: https://apptractor.ru/info/articles/osteregaytes-userdefaults.html
Платформа: iOS
Пишите на Swift как Apple
В этой статье я продемонстрирую некоторые из кодовых соглашений, которых я теперь придерживаюсь, непосредственно переняв подход Apple к программированию в Swift.
• Булево значение должно определять условие
• Не заботьтесь о длине имени типа, уточните намерение
• Прошедшее время для метода, настоящее время или глагол для замыкания
• Избегайте прямого указания объекта, используйте Enum или Static для объявления типа
• Словарь с перечислением в качестве ключа
• Вложенный тип — это нормально
• Протокол — это поведение: найдите нужное существительное, используйте суффикс -able, если оно не найдено
Статья: https://apptractor.ru/info/articles/pishite-na-swift-kak-apple.html
Платформа: iOS
DevTutor for SwiftUI - это приложение, предназначенное для помощи разработчикам в создании исключительных приложений с использованием SwiftUI. Оно предлагает воспроизводимые примеры кода и соответствующие предварительные просмотры пользовательского интерфейса, чтобы упростить процесс программирования. Кроме того, приложение включает локальный офлайн-доступ к официальной документации по языку программирования Swift на китайском и английском языках.
DevTutor for SwiftUI на GitHub: https://github.com/jaywcjlove/devtutor
Платформа: iOS
⭐️: 145
Реверс инжиниринг кормушки для кошек для повышения производительности разработки
После ночных покупок в Amazon я получил PetKit FreshElement Solo. У меня было две проблемы, которые он мог решить: низкая мотивация к побочному проекту и слишком большая любовь к миндалю с морской солью в темном шоколаде от Target. Я помешан на коде — так почему бы не подкормить мой обезьяний мозг, когда я пушу код? Так и возник мой проект — при каждом коммите кормушка для кошек выдает мне порцию конфет.
Статья: https://apptractor.ru/info/devices/revers-inzhiniring-kormushki-dlya-koshek-dlya-povysheniya-proizvoditelnosti-razrabotki.html
Платформа: разработка
10 причин НЕ использовать Jetpack Compose (с комментариями)
Jetpack Compose — это отличный набор инструментов для создания пользовательского интерфейса, который был тепло встречен сообществом Android-разработчиков. Мне нравится Jetpack Compose, но, как и любая другая технология, он имеет ряд недостатков. В этой статье мы узнаем, в каких случаях лучше использовать систему View и почему.
Статья: https://apptractor.ru/info/articles/10-prichin-ne-ispolzovat-jetpack-compose.html
Платформа: Android
Перевод в текст живого звука с помощью фреймворка Speech
К концу этой статьи вы поймете, как получить доступ к звуковому буферу микрофона, а затем сделать его доступным для обработки и преобразования в текст средствами распознавания речи.
Статья: https://www.createwithswift.com/transcribing-audio-from-live-audio-using-the-speech-framework/
Платформа: iOS
Поставьте 10 👍 если хотите эту статью на русском.
Паря в космосе: анимации с помощью Compose и Canvas
В своей предыдущей статье «Рисуя звезды: рисование с помощью Compose и Canvas» я рассказала о том, как я хотела улучшить свои навыки работы с Canvas и Compose и создала иллюстрацию с планетами и звездами. В этой статье я расскажу, как анимировать эти элементы.
Статья: https://apptractor.ru/info/articles/parya-v-kosmose-animatsii-s-pomoschyu-compose-i-canvas.html
Платформа: Android
Transcribro - это приватная клавиатура и сервис распознавания речи для Android-устройств. Он использует whisper.cpp для запуска семейства моделей OpenAI Whisper и Silero VAD для распознавания голосовой активности.
В приложении есть клавиатура голосового ввода, позволяющая набирать текст с помощью речи. Оно также может использоваться другими приложениями либо явно, либо при установке в качестве выбранного пользователем приложения для преобразования речи в текст.
Transcribro на GitHub: https://github.com/soupslurpr/Transcribro
Платформа: Android
⭐️: 370
Виртуализация iOS на Apple Silicon
В этой статье я рассказываю о том, как мне удалось добиться виртуализации iOS на компьютерах Apple Mac, попутно исследуя многие внутренние компоненты.
Статья: https://nickb.website/blog/virtualizing-ios-on-apple-silicon
Платформа: iOS
Реализация Shared With You в SwiftUI
Эта функция была введена в iOS 16, но лишь немногие приложения используют ее в своих интересах. Как вы скоро увидите, ее очень легко реализовать, поэтому если в вашем приложении есть контент, которым можно поделиться, я настоятельно рекомендую добавить эту функцию в ваше приложение.
Статья: https://apptractor.ru/info/articles/shared-with-you.html
Платформа: iOS
Как перехватывают зашифрованный HTTS-трафик на мобильном устройстве
Реверс-инжиниринг VPN-сервиса Onavo Protect под Android позволил определить методы, которые можно использовать для перехвата зашифрованного HTTPS-трафика на мобильном устройстве. Если вкратце, злоумышленник должен поставить на телефон собственное приложение и сертификат УЦ (удостоверяющего центра).
Например, в РФ вступил в действие закон, который требует с 2025 года обязательной предустановки на все смартфоны конкретных приложений. Теоретически, при наличии уязвимостей это может угрожать безопасности многих пользователей.
Статья: https://habr.com/ru/companies/globalsign/articles/848632/
Платформа: Android
Восстановление базы для миллионов пользователей
Это история о приложении для обмена сообщениями, которым пользуются миллиарды пользователей.
Приложение придерживается чрезвычайно строгой модели конфиденциальности. Приложение никогда не хранит данные пользователя на серверах. Все сообщения end-to-end шифруются.
Многие пользователи этого приложения, особенно на Android, регулярно удаляли и переустанавливали его. Чтобы предотвратить потерю сообщений, их резервное копирование осуществляется на SD-карту пользователя. В модели безопасности Android SD-карта является общедоступным местом хранения данных, доступным всем приложениям. Поэтому, чтобы сохранить конфиденциальность сообщений, резервные копии зашифровались.
И вдруг неожиданно поступил всплеск жалоб от пользователей на то, что приложение не смогло восстановить их сообщения. Хотя у нас были некоторые внутренние показатели, подтверждающие это, не было возможности отладить ошибку без доступа к некоторым образцам для воспроизведения ситуации.
Статья: https://apptractor.ru/info/articles/vosstanovlenie-bazy-dlya-millionov-polzovateley.html
Платформа: разработка
Swipe Cell SwiftUI - это простое swipe-to-reveal представление. Оно поддерживает iOS/iPadOS 14 или более поздние версии. Цель - заменить стандартный модификатор SwiftUI List .onDelete(perform: ...), поскольку его функциональность ограничена только удалением и работает только со строками списка. Кроме того, строки в iOS 14 LazyVStack по умолчанию не поддерживают пролистывание для раскрытия кнопок. Swipe Cell SwiftUI позволяет добавлять несколько кнопок меню с левой и правой стороны, а также поддерживает функцию смахивания (например, для удаления).
Swipe Cell SwiftUI на GitHub: https://github.com/DominikButz/SwipeCellSUI
Платформа: iOS
⭐️: 61
Как Discord сократил Websocket трафик на 40%
В Discord мы постоянно думаем о том, как улучшить наши сервисы и повысить производительность. Ведь чем быстрее работает наше приложение, тем быстрее вы сможете вернуться к своим друзьям и разговорам!
В течение последних шести месяцев мы работали над снижением трафика в каналах связи, используемых нашими клиентами, особенно на iOS и Android, надеясь, что уменьшение передаваемых данных приведет к более быстрому отклику.
Статья: https://apptractor.ru/info/articles/kak-discord-sokratil-websocket-trafik-na-40.html
Платформа: разработка
Создание уведомлений на языке Kotlin
Недавно мне нужно было добавить в мое мобильное приложение уведомление, которое писало бы определенный текст в 9 утра. Я потратила некоторое время на чтение документации и разговор с чатом, чтоб понять как и что делать, и я думаю таким же начинающим программистам будет интересно или полезно почитать мои заметки и разбор кода.
Статья: https://habr.com/ru/articles/847020/
Платформа: Android
KLogX - это библиотека логирования Kotlin, разработанная для обеспечения гибкого и эффективного способа протоколирования сообщений в вашем приложении. Она поддерживает различные уровни регистрации (INFO, WARN, ERROR и т.п.) и цели (INTERNAL, EXTERNAL, REMOTE), а также позволяет регистрировать пользовательские функции для обработки сообщений лога на основе фильтра.
KLogX на GitHub: https://github.com/mohsenoid/KLogX\
Платформа: Android
⭐️: 8
Видео и подкасты за неделю @AppFiles
•
(iOS Ru) Как мы запекали 3D-пиццу
• (iOS Ru) Есть ли ORM круче SwiftData
• (iOS Ru) Макросы спустя полгода: не все так гладко
• (iOS Ru) DriverKit: гоняем данные по проводу без мам, пап и MFi
• (iOS En) Recreate Apple's Stopwatch: Mastering Millisecond Precision in SwiftUI
• (iOS En) Видео SwiftCraft 2024
• (iOS En) Alternative App Icons in Xcode 16
• (iOS En) New in Xcode16: the macro @Previewable
• (iOS En) SwiftUI - Support Prior iOS Versions - Backward Compatibility
• (iOS En) Embedded Swift and 16x16 LED Matrix Animation Overview
• (iOS En) Preview Updates in Xcode 16
• (iOS En) Auto Scrolling Infinite Carousel - iOS 18
• (And En) Integrating the Gemini API in Android
• (And En) How to Navigate From ViewModels With a Custom Navigator
• (And En) Android Application with Microsoft Identity Platform
• (And En) Applying the Factory Method and Abstract Factory Patterns in Kotlin
• (Crs En) Multiplayer drawing with Flutter and Serverpod. Full tutorial.
• (Dev Ru) Уволить нельзя терпеть
• (Dev Ru) Lua – идеальный встраиваемый язык
• (Dev En) The reality of the developer job market with ex-Googler YK Sugi
#ios #android #mobile #video
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
