uk
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

Відкрити в Telegram

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.

Показати більше
2 167
Підписники
-124 години
-27 днів
-430 днів
Залучення підписників
вересень '26
вересень '26
+11
в 0 каналах
серпень '26
+24
в 1 каналах
Get PRO
липень '26
+39
в 1 каналах
Get PRO
червень '26
+31
в 1 каналах
Get PRO
травень '26
+42
в 1 каналах
Get PRO
квітень '26
+26
в 1 каналах
Get PRO
березень '26
+35
в 1 каналах
Get PRO
лютий '26
+23
в 1 каналах
Get PRO
січень '26
+45
в 2 каналах
Get PRO
грудень '25
+43
в 3 каналах
Get PRO
листопад '25
+46
в 1 каналах
Get PRO
жовтень '25
+132
в 1 каналах
Get PRO
вересень '25
+38
в 1 каналах
Get PRO
серпень '25
+40
в 1 каналах
Get PRO
липень '25
+31
в 1 каналах
Get PRO
червень '25
+33
в 1 каналах
Get PRO
травень '25
+41
в 1 каналах
Get PRO
квітень '25
+54
в 2 каналах
Get PRO
березень '25
+162
в 1 каналах
Get PRO
лютий '25
+42
в 1 каналах
Get PRO
січень '25
+40
в 1 каналах
Get PRO
грудень '24
+50
в 1 каналах
Get PRO
листопад '24
+65
в 1 каналах
Get PRO
жовтень '24
+52
в 1 каналах
Get PRO
вересень '24
+48
в 1 каналах
Get PRO
серпень '24
+81
в 2 каналах
Get PRO
липень '24
+48
в 1 каналах
Get PRO
червень '24
+41
в 1 каналах
Get PRO
травень '24
+29
в 1 каналах
Get PRO
квітень '24
+18
в 1 каналах
Get PRO
березень '24
+26
в 2 каналах
Get PRO
лютий '24
+25
в 1 каналах
Get PRO
січень '24
+36
в 1 каналах
Get PRO
грудень '23
+49
в 2 каналах
Get PRO
листопад '23
+20
в 2 каналах
Get PRO
жовтень '23
+35
в 2 каналах
Get PRO
вересень '23
+25
в 0 каналах
Get PRO
серпень '23
+16
в 0 каналах
Get PRO
липень '23
+16
в 0 каналах
Get PRO
червень '23
+27
в 0 каналах
Get PRO
травень '23
+99
в 0 каналах
Get PRO
квітень '23
+34
в 0 каналах
Get PRO
березень '23
+28
в 0 каналах
Get PRO
лютий '23
+62
в 0 каналах
Get PRO
січень '23
+31
в 0 каналах
Get PRO
грудень '22
+21
в 0 каналах
Get PRO
листопад '22
+13
в 0 каналах
Get PRO
жовтень '22
+25
в 0 каналах
Get PRO
вересень '22
+11
в 0 каналах
Get PRO
серпень '22
+9
в 0 каналах
Get PRO
липень '22
+16
в 0 каналах
Get PRO
червень '22
+23
в 0 каналах
Get PRO
травень '22
+38
в 0 каналах
Get PRO
квітень '22
+65
в 0 каналах
Get PRO
березень '22
+29
в 0 каналах
Get PRO
лютий '22
+48
в 0 каналах
Get PRO
січень '22
+60
в 0 каналах
Get PRO
грудень '21
+26
в 0 каналах
Get PRO
листопад '21
+26
в 0 каналах
Get PRO
жовтень '21
+19
в 0 каналах
Get PRO
вересень '21
+27
в 0 каналах
Get PRO
серпень '21
+35
в 0 каналах
Get PRO
липень '21
+22
в 0 каналах
Get PRO
червень '21
+20
в 0 каналах
Get PRO
травень '21
+11
в 0 каналах
Get PRO
квітень '21
+46
в 0 каналах
Get PRO
березень '21
+34
в 0 каналах
Get PRO
лютий '21
+44
в 0 каналах
Get PRO
січень '21
+32
в 0 каналах
Get PRO
грудень '20
+1 148
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
16 вересня0
15 вересня0
14 вересня0
13 вересня0
12 вересня+2
11 вересня+1
10 вересня+1
09 вересня+1
08 вересня+2
07 вересня+1
06 вересня0
05 вересня0
04 вересня+2
03 вересня0
02 вересня+1
01 вересня0
Дописи каналу
Учим Siri говорить о вашем любимом приложении: пример Walk Mate В посте на прошлой неделе я рассказал, как Walk Mate начал пе
Учим Siri говорить о вашем любимом приложении: пример Walk Mate В посте на прошлой неделе я рассказал, как Walk Mate начал передавать избранные маршруты в Spotlight. Добавляете маршрут в избранное и задаёте ему название. Ищете в Spotlight, нажимаете — маршрут открывается на карте. Для этого использовались App Intents без особых изысков: IndexedEntity для избранного маршрута, OpenIntent для его загрузки и небольшой маршрутизатор, чтобы нажатие в Spotlight попадало в тот же редьюсер, что и нажатие внутри приложения. Фраз для Siri тогда ещё не было. Spotlight уже знает, что прогулка существует. Теперь Siri в iOS 27 должна уметь говорить о ней. В прошлый раз Spotlight мог находить избранный маршрут. Теперь я делаю так, чтобы Siri могла говорить о нём, передавать его в Карты и открывать голосом. Статья: https://apptractor.ru/info/articles/uchim-siri-govorit-o-vashem-lyubimom-prilozhenii-primer-walk-mate.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

2
Appstore PPP Prices - цены встроенных покупок по покупательной способности Appstore PPP Prices — бесплатная утилита с открыты
Appstore PPP Prices - цены встроенных покупок по покупательной способности Appstore PPP Prices — бесплатная утилита с открытым исходным кодом, которая приносит PPP-цены (паритет покупательной способности, ППС) в App Store. Она массово обновляет цены встроенных покупок и подписок сразу в 175+ странах: берёт коэффициенты из ВВП на душу населения, при желании подстраивает их через GPT под тип вашего приложения и записывает цены напрямую через App Store Connect API. Одна команда вместо вечера кликов по территориям. Фичи:  • Лёгкая установка — одна строка на macOS, Windows или Linux. Свой Python не нужен. • Дружелюбно для ИИ-агентов — Claude Code, Codex или Cursor поставят, настроят и запустят всё за вас. • Безопасно по умолчанию — --dry-run печатает все 174 цены до того, как применится хоть одна. • Ключ API не покидает вашу машину — ни аккаунта, ни загрузки, ни посредника. • 175+ территорий одной командой — и встроенные покупки, и подписки. • Реальные ценовые точки Apple — каждая цена в местной валюте и принимается App Store Connect. • Бесплатно и с открытым кодом (MIT) — подписка на утилиту для подписок не нужна. Appstore PPP Prices на GitHub: https://github.com/duceum/appstore-ppp-pricing-agent-skill Платформа: iOS ⭐️: 46 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
130
3
Norch - скрипт, который прячет чёлку MacBook Репозиторий нашего читателя: Я долгое время пользовался бесплатным приложением T
Norch - скрипт, который прячет чёлку MacBook Репозиторий нашего читателя: Я долгое время пользовался бесплатным приложением TopNotch, которое прячет чёлку на MacBook. После обновления на macOS 27 оно перестало работать. Автор обещал исправление, но через пару недель, а ждать не хотелось. Поэтому я вместе с Claude написал простой бесплатный скрипт на Swift, который делает то же самое. Работает так: даёшь ему картинку для обоев, а он добавляет сверху чёрную полосу под строкой меню и скругляет углы. Так решаются сразу две проблемы: чёлку не видно, и обои не выглядывают из-за углов окон, развёрнутых на весь экран. Размеры и радиус скругления скрипт берёт из системы, настраивать ничего не нужно, и в фоне ничего не висит. Norch на GitHub: https://github.com/mezhevikin/norch Платформа: iOS ⭐️: 4 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
145
4
Нативная разработка снова стала будущим мобильных приложений в Shopify Мы не держимся за решение только потому, что когда-то
Нативная разработка снова стала будущим мобильных приложений в Shopify Мы не держимся за решение только потому, что когда-то оно было успешным. Когда меняется одна из ключевых предпосылок, мы готовы вернуться назад и спросить себя, остаётся ли это решение правильным. LLM изменили одну из основных предпосылок, лежавших в основе нашего решения 2020 года, поэтому мы заново оценили наш мобильный стек, начиная с фундаментальных принципов. То, что мы обнаружили, привело нас обратно к нативной разработке. Статья: https://apptractor.ru/info/articles/nativnaya-razrabotka-snova-stala-buduschim-mobilnyh-prilozheniy-v-shopify.html Платформа: кроссплатформа 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
149
5
Compose Recomposition Highlighter - тепловая карта рекомпозиций Compose Recomposition Highlighter — это инструмент для разраб
Compose Recomposition Highlighter - тепловая карта рекомпозиций Compose Recomposition Highlighter — это инструмент для разработчиков, не создающий дополнительной нагрузки на систему и позволяющий разработчикам и QA-инженерам визуально выявлять избыточные рекомпозиции, нестабильные параметры и бесконечные циклы рендеринга непосредственно на физических устройствах в виде тепловых карт, без привязки к Layout Inspector в Android Studio. Compose Recomposition Highlighter на GitHub: https://github.com/zakayothuku/compose-recomposition-highlighter Платформа: Android ⭐️: 15 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
226
6
Рекомпозиции, которых не было Недавно я глубоко погрузился в профилирование, пытаясь понять, почему один экран Compose в прод
Рекомпозиции, которых не было Недавно я глубоко погрузился в профилирование, пытаясь понять, почему один экран Compose в продакшене ощущался тяжелее, чем должен. То, что начиналось как обычная проверка производительности, быстро превратилось во что-то большее: Layout Inspector и Memory Profiler показывали совершенно разные картины происходящего. Вот что я обнаружил, что исправил и что хотел бы знать раньше. Статья: https://apptractor.ru/info/articles/rekompozitsii-kotoryh-ne-bylo.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
420
7
Как я перестал платить за macOS-минуты: перенос iOS-сборки с GitHub Actions на Xcode Cloud, с цифрами Есть один факт про GitH
Как я перестал платить за macOS-минуты: перенос iOS-сборки с GitHub Actions на Xcode Cloud, с цифрами Есть один факт про GitHub Actions, который многие мобильные разработчики узнают только из счёта: одна минута на macOS-раннере стоит десять минут на Linux. Не в деньгах — в «бесплатных» минутах, которые входят в тарифный план. Ваш пятиминутный iOS-архив съедает из квоты столько же, сколько пятьдесят минут Linux-тестов. И пока Android-джоба тратит 6 минут квоты, её соседка по воркфлоу тратит 45. Ниже — история одного переезда: как я вынес iOS-деплой из GitHub Actions в Xcode Cloud, что при этом сломалось (семь раз), что измерил и почему теперь iOS-релиз стоит мне ноль минут GitHub Actions и 6 минут оплачиваемого compute-времени Apple при 25 бесплатных часах в месяц. Статья: https://habr.com/ru/articles/1076692/ Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
398
8
Lucide Swift - типобезопасные Lucide иконки с векторным рендерингом Lucide Swift - библиотека для использования иконок Lucide
Lucide Swift - типобезопасные Lucide иконки с векторным рендерингом Lucide Swift - библиотека для использования иконок Lucide с поддержкой векторной графики и типобезопасностью, нативная для SwiftUI. Более 2112 иконок (1738 обычных + 374 экспериментальных Lab), отображаемых как настоящие векторные фигуры из данных SVG-путей, без каких-либо зависимостей в рантайме. Фичи:  • Настоящий векторный рендеринг: SVG-пути преобразуются в нативные SwiftUI Shape, поэтому иконки можно масштабировать до любого размера без пикселизации. • Типобезопасный API: 1 738+/1 792 enum-вариантов с полной поддержкой автодополнения Xcode. Проверка на этапе компиляции предотвращает ошибки вида «иконка не найдена» во время выполнения. • Поддержка Lucide Lab: полная интеграция 374+ экспериментальных иконок из репозитория Lucide Lab. • Ноль зависимостей: чистая реализация на Swift без внешних runtime-зависимостей — только Swift и SwiftUI. • Нативная интеграция со SwiftUI: библиотека построена на протоколе SwiftUI Shape и поддерживает стандартные модификаторы, включая .stroke(), .fill(), .frame() и другие. • Поддержка нескольких платформ: iOS 14+, macOS 11+, tvOS 14+, watchOS 7+, visionOS 1+. • Настраиваемая толщина линии: толщину обводки можно задавать через параметр strokeWidth. • Абсолютная толщина линии: absoluteStrokeWidth позволяет сохранять одинаковую толщину обводки независимо от размера иконки. • Интеграция с Label: нативная поддержка SwiftUI Label для меню, панелей инструментов и кнопок. • Высокая производительность: поиск иконки через enum примерно в 7 раз быстрее подходов на основе Bundle, а рендеринг через Shape — примерно в 2 раза быстрее растеризации PDF. Lucide Swift на GitHub: https://github.com/ajaxjiang96/lucide-swift Платформа: iOS ⭐️: 38 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
319
9
Arkive - плагин Gradle для генерации веб-каталога экранов Arkive превращает ваши первью Compose и XML-представлений в просмат
Arkive - плагин Gradle для генерации веб-каталога экранов Arkive превращает ваши первью Compose и XML-представлений в просматриваемый каталог экранов вашего приложения — запись производится на JVM с помощью Roborazzi (или, при желании, Paparazzi), без использования устройств или эмуляторов, без написания тестового кода. Arkive на GitHub: https://github.com/infinum/arkive Платформа: Android ⭐️: 17 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
288
10
Разработка на Авроре под Аврору: разворачиваем Coder в облаке и пишем плагин для VS Code Среди веб-решений (GigaIDE, GitLab W
Разработка на Авроре под Аврору: разворачиваем Coder в облаке и пишем плагин для VS Code Среди веб-решений (GigaIDE, GitLab Web IDE и другие) мне больше всего нравится code-server (coder) — полноценная веб-версия Visual Studio Code, которая поддерживает большинство привычных плагинов. В статье я подробно расскажу, как развернуть облачную среду разработки, привязать ее к планшету и написать собственный плагин для автоматизации сборки под «Аврору ОС». Статья: https://habr.com/ru/companies/selectel/articles/1074074/ Платформа: разработка 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
401
11
Как я написал круговой лаунчер на Jetpack Compose: тригонометрия свайпов и системные грабли Большинство лаунчеров для Android
Как я написал круговой лаунчер на Jetpack Compose: тригонометрия свайпов и системные грабли Большинство лаунчеров для Android повторяют одну и ту же концепцию сетки иконок. Чтобы открыть приложение, нужно листать бесконечные рабочие столы и тянуться пальцем до нужной иконки (а она может быть и в верхнем углу экрана, поэтому часто приходится использовать вторую руку). Я решил сделать SwipeLauncher — открытый лаунчер с круговыми меню, где любое действие или вложенное меню открывается одним свайпом из любой точки экрана. Статья: https://habr.com/ru/articles/1075198/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
334
12
📺 Видео и подкасты за неделю • (iOS En) AI-Assisted TDD in Practice (Swift + AI) • (iOS En) Vibe Coding a macOS App in Xcode
📺 Видео и подкасты за неделю • (iOS En) AI-Assisted TDD in Practice (Swift + AI) • (iOS En) Vibe Coding a macOS App in Xcode 27 • (iOS En) Apple Music Reactions Emoji Picker • (And Ru) AI-агент Android-разработчика: как вынести его на сервер и выполнять задачи 24/7 • (And En) Beginner's Guide to Continuous Integration (CI) for Android with GitHub Actions • (And En) Is TDD the next big thing for agentic development on Android? • (And En) Reflection is Evil • (Crs En) Developing Music Creation Apps for Web, Desktop and Android • (Crs En) Advanced Kotlin Native Integration • (Dev Ru) «Чё ты такой серьёзный?» Как юмор помогает продуктовым командам • (Dev Ru) Анастасия Терёхина. Гадание на собеседовании: можно ли за час «технички» предсказать работу на годы вперед • (Dev En) Redefining Machine Learning with Kotlin A Device First Approach to AI • (Dev En) Teaching Kotlin for the AI Era: Tips, Tools, and Practical Insights • (Mtr Ru) «Считаем то, что важно» – практический гид по метрикам в продукте Прошлогодние видео: • (iOS Ru) Стратегия автотестирования для iOS приложений • (iOS Ru) 5 вопросов для iOS разработчика • (iOS Ru) Борьба с утечками памяти: от задачи до победы • (And Ru) Google закрывает свободу на Android • (And Ru) 5 уроков из опыта реализации pixel-perfect тестирования дизайн-системы в Android • (And Ru) Gradle-сборка. Измеряем самое важное • (And Ru) Шифруем файлы в Android • (Crs Ru) Kotlin Multiplatform в большом проекте • (Dev Ru) Как «думают» LLM: внутренняя механика языковых моделей • (Dev Ru) Как AI научился рассуждать — Reinforcement learning, reasoning models 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
2 358
13
Повышение качества Android-приложений: сокращение использования памяти и улучшение миграции на другие устройства Google объяв
Повышение качества Android-приложений: сокращение использования памяти и улучшение миграции на другие устройства Google объявил о двух новых требованиях к качеству приложений в Google Play: ограничениях по использованию памяти и обязательном восстановлении авторизации при переносе приложения на новый Android-смартфон. Новые правила начнут реально влиять на публикацию приложений в 2027 году. Статья: https://apptractor.ru/develop/povyshenie-kachestva-prilozheniy-sokraschenie-ispolzovaniya-pamyati-i-uluchshenie-migratsii-na-drugie-ustroystva.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
260
14
SwiftUIBackportKit - обратная совместимость с современными SwiftUI API с поддержкой более старых версий iOS Небольшой, не тре
SwiftUIBackportKit - обратная совместимость с современными SwiftUI API с поддержкой более старых версий iOS Небольшой, не требующий зависимостей Swift-пакет для поддержки нескольких версий iOS в SwiftUI — без нарушения цепочек модификаторов, дублирования целых представлений или разброса проверок #available по всему коду. Подробнее об использовании библиотеки вы можете прочитать в статье.  SwiftUIBackportKit на GitHub: https://github.com/EmadBeyrami/SwiftUIBackportKit Платформа: iOS ⭐️: 21 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
259
15
Как создать сверхперсонализированный пейвол с помощью Apple Foundation Models Chorus — приложение для определения птиц по гол
Как создать сверхперсонализированный пейвол с помощью Apple Foundation Models Chorus — приложение для определения птиц по голосу и отслеживания прогулок, которое я создаю для Shipaton 2026. Во время онбординга оно узнаёт, зачем пользователь вообще открыл приложение и что могло бы заставить его чаще выходить на прогулки. Приложение спрашивает о птице мечты, с кем человек обычно гуляет, когда он выходит на прогулку, что действительно могло бы мотивировать его чаще выходить из дома. Эта статья — о том, что происходит дальше: как использовать локальный фреймворк Foundation Models от Apple, чтобы в момент предложения подписки вернуть пользователю его собственную мотивацию, прямо внутри удалённо конфигурируемого пейвола RevenueCat. И самое приятное — это бесплатно. Статья: https://apptractor.ru/marketing-monetization/engagement/kak-sozdat-sverhpersonalizirovannyy-peyvol-s-pomoschyu-apple-foundation-models.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
306
16
Kwery - управление серверными данными для Android-приложения Kwery — это библиотека для управления серверным состоянием в And
Kwery - управление серверными данными для Android-приложения Kwery — это библиотека для управления серверным состоянием в Android-приложении. По смыслу она очень похожа на TanStack Query/React Query, только для Kotlin/Android. Она не заменяет Retrofit, Ktor или OkHttp, а работает поверх них. Автор формулирует идею так: "Room хранит данные, которыми владеет приложение. Kwery управляет данными, которыми владеет сервер". Kwery предлагает взять на себя значительную часть типовой логики между UI и сетевым клиентом. При этом сам HTTP-запрос всё равно делает Retrofit/Ktor/OkHttp. Kwery однако решает, когда его вызывать, нужно ли вообще вызывать, можно ли отдать уже имеющиеся данные и как показывать состояние запроса. Основные вещи, которые она делает: • Кэширует ответы сервера. Если экран повторно запрашивает те же данные, Kwery может вернуть существующий результат вместо нового HTTP-запроса. • Дедупликация запросов. Если несколько экранов/компонентов одновременно запросили один ресурс, не обязательно делать несколько одинаковых запросов. • Управляет состояниями loading/success/error. • Делает retry при ошибках. • Может обновлять данные в фоне. • Управляет устареванием кэша. • Поддерживает offline-сценарии, в том числе управляет записью данных без сети и затем синхронизацией при ее появлении. • Может переиспользовать один результат между несколькими подписчиками. • Использует корутины Kotlin + Flow. • Есть интеграция с Compose. Kwery на GitHub: https://github.com/dbjpanda/kwery Платформа: Android ⭐️: 16 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
281
17
Один код для многих платформ - вот что вам никто не расскажет о KMP Привет, Kotlin-разработчики. Скажу честно. Когда я начал
Один код для многих платформ - вот что вам никто не расскажет о KMP Привет, Kotlin-разработчики. Скажу честно. Когда я начал разрабатывать своё приложение для разделения расходов на Kotlin Multiplatform, я подумал: «Напиши один раз, запускай везде. Что может быть сложного?» Оказалось, может быть очень сложно. Но и невероятно полезно. Это не очередной туториал «как начать работу с KMP». Таких и без того полно. Это скорее статья, которую я сам хотел бы прочитать до начала работы: реальные проблемы, реальные ошибки и реальные решения. Всё основано на моём опыте создания ExpenseSplitter KMP — полноценного приложения для совместного учёта расходов, которое работает на Android, Desktop и Web из одной общей кодовой базы. Вот как всё было на самом деле. Статья: https://apptractor.ru/info/articles/odin-kod-dlya-mnogih-platform-vot-chto-vam-nikto-ne-rasskazhet-o-kmp.html Платформа: кроссплатформа 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
319
18
Android CameraX: детекция лица в реалтайме для биометрии Представим ситуацию: клиент хочет перевести большую сумму, используя
Android CameraX: детекция лица в реалтайме для биометрии Представим ситуацию: клиент хочет перевести большую сумму, используя мобильное приложение. Внутренние системы видят подозрительную активность и запрашивают проверку по селфи, человек наводит камеру на лицо — получает отказ. А все из-за того, что на бэкенде была получена размытая фотография потолка с кусочком лица пользователя, по которому никак не понять, действительно ли это владелец счета хочет провести операцию. Клиент звонит в поддержку, злится. Банк теряет доверие. Именно такие сценарии заставили нас серьезно заняться качеством записываемого фото. Статья: https://habr.com/ru/companies/tbank/articles/900136/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
308
19
Kadr - декларативное создание видео для платформ Apple SwiftUI для видео. Компонуйте, трансформируйте и экспортируйте видео н
Kadr - декларативное создание видео для платформ Apple SwiftUI для видео. Компонуйте, трансформируйте и экспортируйте видео на Swift — так, как действительно хочется писать код. Kadr - cовременная декларативная библиотека на Swift для создания видеокомпозиций на платформах Apple. Видео собираются с помощью DSL на основе result builder, а асинхронная работа построена на async/await. Поддерживаются многодорожечные временные шкалы, переходы, наложения, фильтры с анимацией по ключевым кадрам, собственные покадровые композиторы, привязанный ко времени звук с плавными перекрёстными переходами — всё это поверх AVFoundation и без сторонних зависимостей. Kadr на GitHub: https://github.com/SteliyanH/kadr Платформа: iOS ⭐️: 48   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
281
20
Надежное выполнение фоновых задач в iOS: часть 1 Можно подумать, что если у вас в кармане лежит суперкомпьютер, то он уж точн
Надежное выполнение фоновых задач в iOS: часть 1 Можно подумать, что если у вас в кармане лежит суперкомпьютер, то он уж точно должен уметь надёжно выполнять разные рутинные задачи в фоне, пока вы занимаетесь своими делами. Примерно так же, как  cron в Unix-системах делает это ещё с 1970-х. В первой статье этой серии из трёх частей я расскажу о начале своего пути с BGTaskScheduler — фреймворком Apple для запуска фоновых задач на iOS. А также о том, как методом проб, ошибок и наблюдений мне удалось добиться достаточно хорошей надёжности в моём приложении Calendar Copilot, которое я использую для синхронизации событий между календарями. Сразу раскрою итог: BGTaskScheduler не настолько надёжен, как cron, но добиться достаточно стабильного расписания можно. Правда, есть важная оговорка — вам или вашим пользователям придётся открывать приложение хотя бы раз в неделю или две. Если этого не делать, iOS со временем начинает реже запускать фоновые задачи, а затем вообще прекращает это делать ради экономии батареи. Статья: https://apptractor.ru/info/articles/nadezhnoe-vypolnenie-fonovyh-zadach-v-ios-chast-1.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
347