Как я решал задачу получения доступа к данным банковских приложений на iOS
Вы пользуетесь кешбэком, может даже выбираете категории повышенного кешбэка каждый месяц? Когда у вас несколько карт разных банков с кешбэком, становится непросто запомнить, какую из них лучше использовать для конкретной покупки в этом месяце.
Можно было бы эти категории записывать на листик или куда‑то в заметки, но я решил сделать iOS приложение, в котором можно добавлять выбранные категории кешбэка, а они уже будут выводиться в виде виджета.
Заполнять данные о категориях вручную мне показалось неудобно, поэтому я начал думать, как упростить пользователю получение и ввод этих данных из банковских приложений. О том, как я решил эту задачу, расскажу в этой публикации.
Статья: https://habr.com/ru/articles/840138/
Платформа: iOS
Вы пользуетесь кешбэком, может даже выбираете категории повышенного кешбэка каждый месяц? Когда у вас несколько карт разных банков с кешбэком, становится непросто запомнить, какую из них лучше использовать для конкретной покупки в этом месяце.
Можно было бы эти категории записывать на листик или куда‑то в заметки, но я решил сделать iOS приложение, в котором можно добавлять выбранные категории кешбэка, а они уже будут выводиться в виде виджета.
Заполнять данные о категориях вручную мне показалось неудобно, поэтому я начал думать, как упростить пользователю получение и ввод этих данных из банковских приложений. О том, как я решил эту задачу, расскажу в этой публикации.
Статья: https://habr.com/ru/articles/840138/
Платформа: iOS
Композим иконки. Улучшаем семантику и скорость отрисовки
Во время работы над новыми экранами мне часто приходилось использовать множество различных иконок, разбросанных по всему проекту. Это навело на мысль: было бы здорово собрать все иконки в UI Kit в единственном экземпляре и использовать их только оттуда — по аналогии с тем, как это делают дизайнеры в Figma. И тогда я вспомнил об одной особенности Jetpack Compose. С момента появления в нём существует новый способ отрисовки иконок с помощью кода. На мой взгляд, этот метод отличается удобной семантикой и несколько более высокой производительностью.
Статья: https://habr.com/ru/companies/vk/articles/840862/
Платформа: Android
Во время работы над новыми экранами мне часто приходилось использовать множество различных иконок, разбросанных по всему проекту. Это навело на мысль: было бы здорово собрать все иконки в UI Kit в единственном экземпляре и использовать их только оттуда — по аналогии с тем, как это делают дизайнеры в Figma. И тогда я вспомнил об одной особенности Jetpack Compose. С момента появления в нём существует новый способ отрисовки иконок с помощью кода. На мой взгляд, этот метод отличается удобной семантикой и несколько более высокой производительностью.
Статья: https://habr.com/ru/companies/vk/articles/840862/
Платформа: Android
DDLoggerSwift - терминал, который работает с логами приложений, и который может генерировать общий лог-файл и отладочную информацию, когда реальный смартфон не подключен к Xcode. Вы можете делиться записями, фильтровать логи и выполнять другие операции. Можно использовать SQLite для хранения информации, есть поддержка совместного использования системы и отображения на экране
DDLoggerSwift на GitHub: https://github.com/DamonHu/DDLoggerSwift
Платформа: iOS
⭐️: 33
DDLoggerSwift на GitHub: https://github.com/DamonHu/DDLoggerSwift
Платформа: iOS
⭐️: 33
Основы Jetpack Compose: как обеспечить стабильность вашего кода
По моему опыту, многие кто начинают писать на Compose, делают это интуитивно. Почему? Чтобы привыкнуть, понять, осознать подход к декларативному UI — нужно много времени, и поэтому к пониманию стабильности приходят, как правило, сильно позже. Однако это важно, ведь правильно организованная стабильность уменьшает количество рекомпозиций, что улучшает производительность и плавность работы приложения.
Статья: https://habr.com/ru/companies/yandex/articles/841154/
Платформа: Android
По моему опыту, многие кто начинают писать на Compose, делают это интуитивно. Почему? Чтобы привыкнуть, понять, осознать подход к декларативному UI — нужно много времени, и поэтому к пониманию стабильности приходят, как правило, сильно позже. Однако это важно, ведь правильно организованная стабильность уменьшает количество рекомпозиций, что улучшает производительность и плавность работы приложения.
Статья: https://habr.com/ru/companies/yandex/articles/841154/
Платформа: Android
Может хотя бы один заказать широкий?
В этой статье вы узнаете, как выборочно отключить предложения по автозавершению в Android Studio (IntelliJ IDE).
Статья: https://apptractor.ru/info/articles/izbegaem-lovushek-avtozaversheniya-v-android-studio.html
Платформа: Android
В этой статье вы узнаете, как выборочно отключить предложения по автозавершению в Android Studio (IntelliJ IDE).
Статья: https://apptractor.ru/info/articles/izbegaem-lovushek-avtozaversheniya-v-android-studio.html
Платформа: Android
Memory Guardian - это небольшое приложение для Android, которое повышает уровень конфиденциальности и безопасности пользователей, автоматически очищая буфер обмена через заданные промежутки времени. Это помогает защитить конфиденциальную информацию, например пароли, от возможной утечки в другие приложения.
Memory Guardian на GitHub: https://github.com/hashemi-hossein/memory-guardian
Платформа: Android
⭐️: 373
Memory Guardian на GitHub: https://github.com/hashemi-hossein/memory-guardian
Платформа: Android
⭐️: 373
Проверка доступности языка для перевода в фреймворке Translation
Новый фреймворк Translation использует локальные модели машинного обучения для перевода контента в наших приложениях, но не все языки доступны для перевода. Если пользователь пытается запросить перевод текста с языка, который еще не поддерживается, мы должны правильно с этим справиться.
Статья: https://apptractor.ru/info/articles/proverka-dostupnosti-yazyka-dlya-perevoda-v-freymvorke-translation.html
Платформа: iOS
Новый фреймворк Translation использует локальные модели машинного обучения для перевода контента в наших приложениях, но не все языки доступны для перевода. Если пользователь пытается запросить перевод текста с языка, который еще не поддерживается, мы должны правильно с этим справиться.
Статья: https://apptractor.ru/info/articles/proverka-dostupnosti-yazyka-dlya-perevoda-v-freymvorke-translation.html
Платформа: iOS
Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
Приложение очень крупной, с точки зрения прохождение через нее денежных потоков, компании. Суть приложения в том, чтобы обеспечивать верификацию пользователя при выполнении важных действий со своим счетом. Основное приложение работает на десктопе в браузере. Но, когда необходимо выполнить важную операцию, в браузере появляется запрос на верификацию. Пользователь должен открыть приложение на телефоне, после чего приложением будет собран определенный набор данных и отправлен на сервер. Сервер и решит - настоящий это пользователь или нет. Если нет - то транзакция не пройдет. Я не описываю все тонкости, но основная суть такая.
Приложение защищено и не работает на эмуляторе, на устройствах с root, и вообще, при любом отклонении, выдает сообщение о наличии угрозы и закрывается.
Цель исследования - выяснить возможность автоматического запуска приложения и верификации с заранее заданными параметрами.
Статья: https://habr.com/ru/articles/840920/
Платформа: Android
Приложение очень крупной, с точки зрения прохождение через нее денежных потоков, компании. Суть приложения в том, чтобы обеспечивать верификацию пользователя при выполнении важных действий со своим счетом. Основное приложение работает на десктопе в браузере. Но, когда необходимо выполнить важную операцию, в браузере появляется запрос на верификацию. Пользователь должен открыть приложение на телефоне, после чего приложением будет собран определенный набор данных и отправлен на сервер. Сервер и решит - настоящий это пользователь или нет. Если нет - то транзакция не пройдет. Я не описываю все тонкости, но основная суть такая.
Приложение защищено и не работает на эмуляторе, на устройствах с root, и вообще, при любом отклонении, выдает сообщение о наличии угрозы и закрывается.
Цель исследования - выяснить возможность автоматического запуска приложения и верификации с заранее заданными параметрами.
Статья: https://habr.com/ru/articles/840920/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаем WidgetKit: пишем виджет для Control Center в iOS 18
Архитектура настолько похожа на другие виджеты, что я за пятнадцать минут создал простой элемент управления для своего приложения Fusion, чтобы напрямую воспроизводить станцию в Apple Music.
Статья: https://apptractor.ru/info/articles/izuchaem-widgetkit-pishem-vidzhet-dlya-control-center-v-ios-18.html
Платформа: iOS
Архитектура настолько похожа на другие виджеты, что я за пятнадцать минут создал простой элемент управления для своего приложения Fusion, чтобы напрямую воспроизводить станцию в Apple Music.
Статья: https://apptractor.ru/info/articles/izuchaem-widgetkit-pishem-vidzhet-dlya-control-center-v-ios-18.html
Платформа: iOS
Heat - это нативный клиент с открытым исходным кодом для iOS и macOS, позволяющий взаимодействовать с самыми популярными LLM-сервисами. Фичи:
• Поддержка популярных LLM-провайдеров (OpenAI, Mistral, Anthropic, Gemini)
• Поддержка локальных LLM с открытым исходным кодом с помощью Ollama
• Поддержка генерирования изображений (Stable Diffusion и Dall-e)
• Поиск и просмотр веб-страниц для повышения точности ответов
• Чтение и понимание календаря
• Поиск в файловой системе (только для десктопа)
• Базовое сохранение данных в памяти
• Никаких зависимостей от сервера, кроме доступа к моделям
Heat на GitHub: https://github.com/nathanborror/Heat
Платформа: iOS
⭐️: 201
• Поддержка популярных LLM-провайдеров (OpenAI, Mistral, Anthropic, Gemini)
• Поддержка локальных LLM с открытым исходным кодом с помощью Ollama
• Поддержка генерирования изображений (Stable Diffusion и Dall-e)
• Поиск и просмотр веб-страниц для повышения точности ответов
• Чтение и понимание календаря
• Поиск в файловой системе (только для десктопа)
• Базовое сохранение данных в памяти
• Никаких зависимостей от сервера, кроме доступа к моделям
Heat на GitHub: https://github.com/nathanborror/Heat
Платформа: iOS
⭐️: 201
Ускоряем Android-приложения с помощью Baseline Profiles
Наша команда отвечает за производительность приложения Авито: мы следим за скоростью старта приложения и отрисовки экранов, качеством скролла, отслеживаем сетевые ошибки и занимаемся оптимизациями.
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
Статья: https://habr.com/ru/companies/avito/articles/842218/
Платформа: Android
Наша команда отвечает за производительность приложения Авито: мы следим за скоростью старта приложения и отрисовки экранов, качеством скролла, отслеживаем сетевые ошибки и занимаемся оптимизациями.
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
Статья: https://habr.com/ru/companies/avito/articles/842218/
Платформа: Android
👍1
Утечка памяти: детективная история с Xcode
Недавно я столкнулся с забавной ошибкой, связанной с глубокими ссылками.
Иногда при нажатии на push-уведомление некоторые пользователи сообщали, что целевой экран появляется дважды - приложение открывалось, переходило на нужный экран, но переход между экранами происходил дважды.
Я начал расследование, не подозревая, насколько глубокой окажется эта кроличья нора.
Статья: https://apptractor.ru/info/articles/utechka-pamyati-detektivnaya-istoriya-s-xcode.html
Платформа: iOS
Недавно я столкнулся с забавной ошибкой, связанной с глубокими ссылками.
Иногда при нажатии на push-уведомление некоторые пользователи сообщали, что целевой экран появляется дважды - приложение открывалось, переходило на нужный экран, но переход между экранами происходил дважды.
Я начал расследование, не подозревая, насколько глубокой окажется эта кроличья нора.
Статья: https://apptractor.ru/info/articles/utechka-pamyati-detektivnaya-istoriya-s-xcode.html
Платформа: iOS
❤1
Peristyle - простое приложение-менеджер обоев для Android, созданное с использованием библиотек Material и рекомендаций по дизайну. Фичи - сканирование каталогов, динамическое применение фильтров размытия и цвета к любым обоям, автоматическая смена обоев, простая, но красивая анимация с надлежащей оптимизацией, поддержка биометрической блокировки, Material You дизайн с Edge to Edge.
Peristyle на GitHub: https://github.com/Hamza417/Peristyle
Платформа: Android
⭐️: 196
Peristyle на GitHub: https://github.com/Hamza417/Peristyle
Платформа: Android
⭐️: 196
🔥1
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Эволюция презентационных паттернов SwiftUI•
(iOS En) Custom Keyboards SwiftUI•
(iOS En) SwiftUI - File / Folder & Architecture Setup for New Projects•
(iOS En) iOS 18 SystemFormatStyle and TimeDataSource•
(iOS En) SwiftUI Responsive UI Design - Adaptive Layout•
(And Ru) «Ленивый граф», или Как мы оптимизировали старт приложения•
(And Ru) В сетях сетевого слоя•
(And En) Видео droidcon Berlin 24•
(And En) Compose animations - Android Developers Backstage•
(And En) Navigation Compose meet Type Safety•
(And En) Flow layouts - Jetpack Compose Tips•
(And En) Full Guide to Deep Linking With Type-Safe Jetpack Compose Navigation•
(And En) Upload a File With Progress Bar Using Ktor•
(And En) Building Responsive Applications with RxKotlin•
(Crs Ru) Многомодульное приложение на Flutter•
(Crs Ru) Архитектура white-label на Flutter: тонем в абстракциях•
(Crs En) Cleaner Flutter code with Dart 3•
(Dev Ru) Junior-разработчики — обучение программированию, тестовое задание•
(Dev Ru) Аутсорсинг в IT: взгляд изнутри•
(Dev Ru) Мобильные приложения — кто и как их создаёт?•
(Dev Ru) Тестовый скрининг с карьерным ментором + Какие софт-скиллы необходимы разработчику•
(Dev En) Productivity as a Developer – Full Course#ios #android #mobile #video
Джейлбрейк с помощью ссылки: удаленное выполнение кода на iOS
Это история цепочки эксплойтов Trident: 3 уязвимости нулевого дня в iOS, которые позволили сделать первый удаленный джейлбрейк. Часть первая посвящена внутренностям среды выполнения JavaScriptCore, в которой в WebKit скрывается уязвимость, способная вскрыть ваш iPhone.
Статья: https://jacobbartlett.substack.com/p/jailbreak-enemies-with-a-link-remote-execution
Платформа: iOS
Это история цепочки эксплойтов Trident: 3 уязвимости нулевого дня в iOS, которые позволили сделать первый удаленный джейлбрейк. Часть первая посвящена внутренностям среды выполнения JavaScriptCore, в которой в WebKit скрывается уязвимость, способная вскрыть ваш iPhone.
Статья: https://jacobbartlett.substack.com/p/jailbreak-enemies-with-a-link-remote-execution
Платформа: iOS
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
AnimatedImage - высокопроизводительная библиотека для анимационных изображений. AnimatedImage предварительно декодирует и кэширует все кадры анимации. Оптимизирует количество кадров отрисовки, исходя из размера рисунка и временной метки отрисовки, чтобы размер кэша не стал слишком большим. Библиотека разработана таким образом, чтобы вся обработка не зависела от MainActor. Поддерживает APNG, GIF, WebP. Умеет синхронизировать несколько изображений.
AnimatedImage на GitHub: https://github.com/noppefoxwolf/AnimatedImage
Платформа: iOS
⭐️: 55
AnimatedImage на GitHub: https://github.com/noppefoxwolf/AnimatedImage
Платформа: iOS
⭐️: 55
Пишем простенький DI для Android приложения
Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.
Статья: https://habr.com/ru/articles/843258/
Платформа: Android
Сейчас практически любой проект имеет в своём составе как минимум одну библиотеку или решение для разруливания зависимостей, но далеко не каждый разработчик действительно понимает как устроены эти самые решения. Поэтому в этой статье я хотел бы прояснить некоторые базовые моменты, на которых построены такие известные библиотеки как Dagger, Hilt и Koin, а также показать на практическом примере как можно написать свое DI решение.
Статья: https://habr.com/ru/articles/843258/
Платформа: Android
Вашей компании нужны junior разработчики
В последнее время в BigTech нужны только элитные отряды штатных разработчиков, которые могут «сразу приступить к работе» над большой инициативой (зачастую связанной с ИИ). Уже не раз говорилось о том, что ИИ полностью заменит junior разработчиков. Джуны, в конце концов, это «кодовые обезьянки», которых легко заменить большими языковыми моделями.
Однако так мы упускаем из виду то, зачем нам нужны junior сотрудники. Обучение джунов становится собственным множителем силы для масштабных инноваций. Дело не в дополнительной рабочей силе, а в психологически безопасной культуре, которая ценит преподавание и обучение, а также в инновациях, которые это открывает.
Статья: https://apptractor.ru/info/articles/vashey-kompanii-nuzhny-junior-razrabotchiki.html
Платформа: разработка
В последнее время в BigTech нужны только элитные отряды штатных разработчиков, которые могут «сразу приступить к работе» над большой инициативой (зачастую связанной с ИИ). Уже не раз говорилось о том, что ИИ полностью заменит junior разработчиков. Джуны, в конце концов, это «кодовые обезьянки», которых легко заменить большими языковыми моделями.
Однако так мы упускаем из виду то, зачем нам нужны junior сотрудники. Обучение джунов становится собственным множителем силы для масштабных инноваций. Дело не в дополнительной рабочей силе, а в психологически безопасной культуре, которая ценит преподавание и обучение, а также в инновациях, которые это открывает.
Статья: https://apptractor.ru/info/articles/vashey-kompanii-nuzhny-junior-razrabotchiki.html
Платформа: разработка
❤1
Measure - это инструмент с открытым исходным кодом для мониторинга мобильных приложений.
Что умеет:
• Автоматически фиксирует аварии и ANR
• Отслеживает такие показатели, как время запуска, количество крешей и размер приложений
• Получает скриншоты с отчетами об исключениях
• Дает полную хронологию событий в сессиях с ошибками с автоматическим отслеживанием пользовательских кликов, событий навигации, http-вызовов, использования процессора, памяти и т.д. для более глубокого контекста
• Отслеживает пользовательские события с помощью дополнительных атрибутов
Measure на GitHub: https://github.com/measure-sh/measure
Платформа: аналитика/Android
⭐️: 280
Что умеет:
• Автоматически фиксирует аварии и ANR
• Отслеживает такие показатели, как время запуска, количество крешей и размер приложений
• Получает скриншоты с отчетами об исключениях
• Дает полную хронологию событий в сессиях с ошибками с автоматическим отслеживанием пользовательских кликов, событий навигации, http-вызовов, использования процессора, памяти и т.д. для более глубокого контекста
• Отслеживает пользовательские события с помощью дополнительных атрибутов
Measure на GitHub: https://github.com/measure-sh/measure
Платформа: аналитика/Android
⭐️: 280
Шаблоны проектирования для SwiftUI
Шаблоны проектирования путают умы людей, работающих со SwiftUI. Они задаются такими вопросами, как «Какой паттерн больше подходит для SwiftUI?» или «Нужно ли вообще использовать шаблон?». Apple также предоставила некоторую информацию об использовании паттернов для SwiftUI на WWDC. Давайте рассмотрим некоторые паттерны, которые можно применить в SwiftUI.
1. MVVM (Model-View-ViewModel)
2. Координатор
3. Clean Swift (VIP)
4. MV (Model-View)
Статья: https://apptractor.ru/info/articles/shablony-proektirovaniya-dlya-swiftui.html
Платформа: iOS
Шаблоны проектирования путают умы людей, работающих со SwiftUI. Они задаются такими вопросами, как «Какой паттерн больше подходит для SwiftUI?» или «Нужно ли вообще использовать шаблон?». Apple также предоставила некоторую информацию об использовании паттернов для SwiftUI на WWDC. Давайте рассмотрим некоторые паттерны, которые можно применить в SwiftUI.
1. MVVM (Model-View-ViewModel)
2. Координатор
3. Clean Swift (VIP)
4. MV (Model-View)
Статья: https://apptractor.ru/info/articles/shablony-proektirovaniya-dlya-swiftui.html
Платформа: iOS
👍1