AppFiles - Mobile Development
Відкрити в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Показати більше2 171
Підписники
Немає даних24 години
+57 днів
+830 день
Архів дописів
Виртуализация 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Новый подход к безопасному управлению состояниями в Kotlin-приложениях
Вот уже несколько лет я занимаюсь разработкой высокопроизводительных, полностью асинхронных, реактивных, мультиплатформенных приложений. За это время я успел наткнуться на несколько довольно тонких и трудно отлаживаемых проблем с управлением состояниями. В этой статье я хотел бы поделиться с вами своим опытом, который поможет вам сэкономить множество часов и нервных клеток, и предложить новый подход к управлению состояниями, который лично я никогда раньше не встречал и который навсегда избавит вас от этих проблем.
Статья: https://habr.com/ru/companies/otus/articles/847888/
Платформа: Android
Как реализовать спойлер-эффект как в Telegram на Swift?
Спойлеры стали неотъемлемой частью общения в мессенджерах и социальных сетях. Они позволяют скрывать часть информации до тех пор, пока пользователь не захочет ее увидеть. В Telegram спойлер-эффект сопровождается красивой анимацией рассыпающихся точек. В этой статье мы рассмотрим, как реализовать подобный спойлер-эффект в iOS-приложении на Swift, используя CAEmitterLayer и UITextView.
Статья: https://habr.com/ru/articles/847236/
Платформа: iOS
Как реализовать спойлер-эффект как в Telegram на Swift?
Спойлеры стали неотъемлемой частью общения в мессенджерах и социальных сетях. Они позволяют скрывать часть информации до тех пор, пока пользователь не захочет ее увидеть. В Telegram спойлер-эффект сопровождается красивой анимацией рассыпающихся точек. В этой статье мы рассмотрим, как реализовать подобный спойлер-эффект в iOS-приложении на Swift, используя CAEmitterLayer и UITextView.
Каждое приложение в App Store должно содержать такие важные ссылки, как политика конфиденциальности и, если применимо, условия использования (для покупок в приложениях), чтобы соответствовать требованиям Apple. Многие приложения решают эту задачу, добавляя в настройках раздел «Ссылки», в котором содержатся дополнительные полезные ссылки, такие как рейтинги приложений, часто задаваемые вопросы и варианты поддержки.
Именно здесь на помощь приходит LinksKit: он предлагает простое, готовое к использованию решение для работы со всеми этими распространенными ссылками, которое сэкономит вам кучу времени. Будь то юридические, справочные или рекламные ссылки, LinksKit справится с этой задачей. А для macOS он даже поддерживает добавление этих ссылок прямо в меню «Справка».
LinksKit на GitHub: https://github.com/FlineDev/LinksKit
Платформа: iOS
⭐️: 16
Почему ваша задача выполняется в главном потоке?
Задача (Task) - это единица асинхронной работы в Swift Concurrency. Создание задачи - это самый простой способ внедрить асинхронный контекст в ваш код:
func setupView() {
Task {
self.data = await fetchData()
}
}
Используя Task, мы можем вызывать await и получать данные асинхронно, даже если сама функция setupView() не помечена как async.
Поскольку мы инициализируем их с помощью замыкания, стандартное* поведение при создании Task не сразу становится очевидным: они будут выполняться в том же потоке, в котором были созданы.
Давайте рассмотрим, как это повлияет на наш код.
Статья: https://apptractor.ru/info/articles/pochemu-vasha-zadacha-vypolnyaetsya-v-glavnom-potoke.html
Платформа: iOS3 совета для улучшения читабельности кода
В этой статье вы узнаете 3 простых совета, которые помогут сделать вашу кодовую базу более качественной и читабельной:
• Используйте ранние возвраты
• Избегайте отрицаний в условных выражениях
• Создавайте значения и переменные как можно позже
Статья: https://apptractor.ru/info/articles/3-soveta-dlya-uluchsheniya-chitabelnosti-koda.html
Платформа: программирование
Как устроен сборщик метрик Android-проекта
Меня зовут Даниил, я Android-разработчик в команде VK ID SDK в VK. Наша команда создала легковесный SDK для авторизации через приложения экосистемы VK. Он состоит из кнопки One Tap для входа в один клик, кнопки входа в другую учётную запись и виджета для авторизации через Mail или Одноклассники.
Работая над продуктом, мы поняли, что необходимо оценивать его техническое качество: считать размер SDK, тестового покрытия, скорость сборки и многое другое. Нам был нужен сборщик метрик качества кода.
Я расскажу, как мы писали плагин для сбора метрик и с какими проблемами столкнулись. Вы узнаете, как устроен наш сборщик изнутри, и даже сможете потестить его в своём проекте.
Статья: https://habr.com/ru/companies/vk/articles/847416/
Платформа: Android
Быстрый доступ к VPN в iOS с помощью App Intents
Меня зовут Антон Долганов, я iOS-разработчик в компании Контур. Я работаю над инфраструктурными модулями и параллельно поддерживаю наше приложение Контур.Коннект, которое используется для подключения к внутреннему VPN и даёт доступ к корпоративным сервисам.
Недавно мы выпустили обновление Коннекта, добавив поддержку Быстрых команд (Shortcuts). Теперь можно включать и отключать VPN, даже не заходя в приложение. В этой статье я расскажу, как я это реализовал и почему это полезно.
Статья: https://habr.com/ru/companies/skbkontur/articles/846366/
Платформа: iOS
Repost from Mobile Development by AppTractor
Приглашаем на Mobile PeerLab #2 — камерную встречу для мобильных разработчиков
10 октября в Москве во второй раз пройдет PeerLab от экспертов Райдтеха Яндекс Go. Специалисты разберут кейсы, которые предложат участники: поговорят о DI-архитектуре, легаси и скорости сборки, сравнят KMP и Flutter, объяснят, чем отличаются техлиды от фичалидов, и поделятся советами о тестировании фичей.
После разбора кейсов гостей ждет afterparty, feature dev консультация и активности в реальной качалке — будем тренировать прогерские мышцы!
Реальные кейсы и ответы экспертов Яндекса на ваши вопросы о мобильной разработке — регистрируйтесь и зовите коллег!
Количество мест ограничено. После регистрации обязательно дождитесь подтверждения заявки
Библиотека Texty создана на основе базового текста Jetpack Compose. Это высококонфигурируемая библиотека Compose Multiplatform, которая позволяет отображать текст в различных стилях и обладает разными полезными функциями, вроде скроллинга или постепенного раскрытия. Независимо от того, создаете ли вы Android, iOS, настольное или веб-приложение, она предоставляет единый API для создания динамичных и визуально привлекательных текстовых меток.
Texty на GitHub: https://github.com/ArjunJadeja/Texty
Платформа: Android/кроссплатформа
⭐️: 38
Стартовые профили: быстрое решение для болезненно медленных стартов приложений
Стартовый профиль - это часть Baseline профиля, направленная на улучшение запуска приложений. Профиль главным образом организует и приоритизирует код в DEX-файлах, чтобы обеспечить более эффективную компиляцию и выполнение кода, необходимого для запуска приложения. Такая реорганизация сокращает время, необходимое для компиляции и интерпретации необходимых путей кода, что приводит к более быстрому запуску приложения.
Статья: https://proandroiddev.com/startup-profiles-the-quick-fix-for-painfully-slow-app-startups-2f1c9c0a8fd9
Платформа: Android
Поставьте 👍, если хотите эту статью на русском.
