Mobile Development by AppTractor
11K subscribers
1.87K photos
38 videos
11 files
4.67K links
Цифры, советы и все интересное о разработке мобильных приложений и сервисов. Комментарии и вопросы можно писать прямо @lbogolubov

• Аудитория https://t.me/apptractor/1066
• Сайт https://apptractor.ru/
Download Telegram
Большинство пользователей уходит по тихому. Они перестают открывать приложение. Уведомления игнорируются. И однажды… они долго жмут на иконку и нажимают «Удалить». Для большинства приложений это конец истории. А для остальных? Это возможность еще раз обратиться к человеку. Тут экраны, которые появляются у популярных приложений сразу после долгого нажатия на иконку приложения. Эти меню создают своеобразные препятствия для удаления и дают причину остаться. Даже 5–10% не удаливших на этом этапе может обернуться для больших приложений неплохой выгодой. Этот последний момент — золотая жила. Используйте его с умом, и вы сможете вернуть пользователя, прежде чем он уйдет навсегда.

Разработка

Кроссплатформа против ИИ: меняющаяся экономика мобильной разработки
Как ретроигры подняли retention? Опыт внедрения геймификации в МТС
Mistakes I see engineers making in their code reviews
UI-UX 2025 DESIGN TRENDS

Маркетинг

Как лучшие приложения работают с удалением
Apple выиграла антимонопольное дело 2011 года

Кроссплатформа

Hivefy — музыкальный плеер в стиле Spotify на Flutter
Saving User Preferences in Kotlin Multiplatform the Right Way
6👍2
Не ну логично же
😁45💯9🌚4👍1🤡1
iOS

Многие интервью на iOS начинают с простого вопроса: «Что происходит, когда ты нажимаешь на иконку приложения?» На первый взгляд — тривиальный, но он вскрывает глубину знаний об архитектуре iOS, которые не зависят от Swift, UIKit или SwiftUI. Автор отмечает: даже разработчики с опытом «в продакшене» часто застывают на этом вопросе. Даже если вы написали десятки экранов, API знакомы — понимание, что происходит «внутри» ОС, часто оказывается неполным.

Поставьте 👍, если хотите эту статью на русском.

Анализ производительности для ускорения сборки в Xcode 2025
ScrollView snapping in SwiftUI
The Most Asked iOS Interview Question — Where Even Senior Devs Get Stuck
I Tried to Reduce My App Size by 50%. Here’s What Actually Worked
👍321
Android

Однажды на собеседовании мы обсуждали с кандидатом кусочек кода, связанный с Kotlin Flow. Кандидату нужно было найти причину бага. И при помощи нейросети или своих глубоких познаний наш визави стал говорить о синхронности и асинхронности emit и tryEmit, которые используются для передачи новой порции данных в SharerFlow. К сути проблемы его размышления не относились, однако я получил сигнал, что здорово было бы поглубже разобраться, как это работает. В статье разберём разницу между emit() и tryEmit(), для каких случаев подходят эти операторы, а также обсудим влияние параметров replay и bufferCapacity на работу MutableSharedFlow.

Плавная анимация в Jetpack Compose — простое решение с animateDpAsState
Eblan Launcher — быстрый настраиваемый и безопасный лаунчер для Android
Исследуем SharedFlow: emit vs tryEmit, как использовать replay и bufferCapacity
The Functional Way to Build Reliable Apps — Arrow’s Either
Keep Android Open
What We Talk About When We Talk About Sideloading
👍3😁1
Вспомним о Pascal! Но не как о «языке из прошлого», а как о кандидате для веб-разработки. В статье «Web Development In… Pascal?» показано, что с помощью современных инструментов вроде Free Pascal и FCL-Web можно писать полноценные веб-приложения: CGI, FastCGI или даже встроенные серверы — просто меняя один модуль в коде. Паскаль даёт строгую типизацию, хорошую производительность и аккуратный код — редкое сочетание для веба. Однако остаются ограничения: мало библиотек и сообщество куда меньше, чем у Python или JavaScript. Но как отмечает автор, именно в этом и прелесть — Pascal можно рассматривать как чистую, дисциплинированную альтернативу, особенно если хочется вырваться из хаоса npm-экосистемы.

Разработка


Отличительные особенности RED OS Mode
Apple выпустила исследовательский датасет для обучения моделей редактирования изображений
Web Development In… Pascal?

Кроссплатформа


8 More Flutter Widgets You’re Probably Not Using (But Should Be)
😁4🤡2
Cahier - пример современного блокнота для Android от Google

Google выпустил новое референсное приложение. Cahier ("блокнот" на французском) — это многофункциональное offline-first приложение для ведения заметок, и призванное продемонстрировать лучшие практики современной разработки Android с использованием Kotlin, Jetpack Compose, Material 3 и набора библиотек Jetpack, таких как Ink API. Оно служит референсным примером Google для создания надежных, адаптивных и увлекательных приложений для повышения производительности на Android.

Этот пример может послужить отличным источником информации для создания приложения для больших экранов. Он демонстрирует лучшие практики разработки подобных интерфейсов, ускоряя понимание и освоение разработчиками соответствующих мощных API и методов:

• Универсальное создание заметок: демонстрирует, как реализовать гибкую систему создания контента, поддерживающую различные форматы в одной заметке, включая текст, рисунки свободной формы и прикреплённые изображения.
• Инструменты для креативного рисования: реализует высокопроизводительный процесс рисования с малой задержкой с помощью Ink API. В примере представлен практический пример интеграции различных кистей, палитры цветов, функций отмены/повтора действий и ластика.
• Интеграция гибкого контента с перетаскиванием: демонстрирует, как обрабатывать входящий и исходящий контент с помощью перетаскивания. Это включает в себя прием изображений из других приложений и возможность перетаскивания контента из вашего приложения для удобного обмена.
• Организация заметок: добавляйте заметки в избранное для быстрого доступа. Фильтруйте представление для поддержания порядка.
• Offline first архитектура: приложение построено на Offline first архитектуре с использованием Room, что гарантирует локальное сохранение всех данных и полную функциональность приложения без подключения к Интернету.
• Мощная поддержка многооконности и многоэкземплярности: демонстрирует, как поддерживать многоэкземплярность, позволяя запускать приложение в нескольких окнах, чтобы пользователи могли работать с разными заметками одновременно, повышая производительность и творческий потенциал на больших экранах.
• Адаптивный пользовательский интерфейс для всех экранов: Пользовательский интерфейс легко адаптируется к различным размерам и ориентациям экрана с помощью ListDetailPaneScaffold и NavigationSuiteScaffold, обеспечивая оптимизированный пользовательский интерфейс на телефонах, планшетах и ​​складных устройствах.
• Глубокая системная интеграция: проект предоставляет руководство по тому, как сделать ваше приложение приложением по умолчанию для создания заметок на Android 14 и более поздних версиях, реагируя на общесистемные намерения Notes, что позволяет быстро захватывать контент из различных системных точек входа.
👍7
Google открывает внешние оплаты в Play Store в США

В июле Апелляционный суд США отклонил апелляцию Google в затянувшемся судебном разбирательстве с Epic Games, в котором присяжные постановили, что компания эксплуатирует Play Store и его платёжную систему как незаконную монополию. Теперь, чтобы выполнить решение суда, Google вносит существенные изменения в работу Play Store в США.

Разработчики теперь могут напрямую сообщать о более выгодных предложениях на свои приложения или подписки, доступных вне Google Play. Они также могут предоставлять ссылки на эти предложения или другие версии своих приложений, размещенные в других местах. Более того, разработчики могут предлагать варианты оплаты, выходящие за рамки Google Play Billing, например, прямые платежи кредитными картами, PayPal или собственные системы.

Эти изменения вступят в силу с 29 октября 2025 года и только для пользователей из США.

До сих пор правила Google запрещали разработчикам приложений продвигать внешние способы оплаты или ссылаться на них в своих приложениях, что и легло в основу иска Epic. Судебный запрет обязывает Google отказаться от этого контроля, по крайней мере, на время действия постановления до 1 ноября 2027 года.

Неудивительно, что Google предпринимает шаги по прекращению свободного распространения приложений - в 2026 году Google вводит новое «требования проверки разработчика» для всех приложений, устанавливаемых на устройства Android, независимо от источника (реакция F-Droid). Компания будет проверять личность всех разработчиков, распространяющих приложения для Android, даже если эти приложения не представлены в магазине Play. По заявлению Google, это добавляет «важный уровень ответственности в экосистему» ​​и призвано «защитить пользователей от вредоносных программ и финансового мошенничества».
🔥31
iOS

Вчерашняя статья. Оказывается, что "самый" вопрос - что происходит, когда вы нажимаете на иконку приложения в iPhone? (вкратце, если вы не знали: SpringBoard обнаруживает нажатие → launchd создает процесс → dyld линкует фреймворки → Стартует UIApplicationMain → Инициализируется AppDelegate/SceneDelegate → Загружается RootViewController → Приложение становится активным) Странно, что автор назвал его самым частым, ну да ему виднее.

Самый задаваемый вопрос на iOS-собеседовании, на котором застревают даже Senior разработчики
SwiftUI Onboarding — онбординг, как в приложениях Apple
Быстрее, чище, стабильнее: как мы ускорили UI-тесты в iOS в 2,5 раза
Droppath 6.0: Our Path to Liquid-Glass
Organizing SwiftUI Views with ToolbarContent and @ToolbarContentBuilder
Turning a Menu into a Mini Settings Panel in SwiftUI
👍42
Android

В статье рассказывают, как программисты из Турции обнаружили странную ошибку: сборка Kotlin-проекта выдавала сообщение «Unknown compiler message tag: INFO», и выяснилось, что дело в локали системы. Оказалось, что методы вроде toLowerCase() и capitalize() в компиляторе работали с учётом языка системы, и на турецкой раскладке буква «I» приводилась к «ı» (без точки) — из-за этого часть алгоритма не находила нужные ключи. Ошибка проявлялась не сразу, но с ростом сложностей (например, при корутинах и примитивных массивах) стала серьёзной. Команда Kotlin изменила библиотеку, чтобы использовать инвариантную локаль (например, Locale.US), и в версии 1.5 баг наконец окончательно закрылся. Вывод: даже самая банальная строковая операция может оказаться уязвимой из-за языковых нюансов и настроек локали. Стоит помнить, что код работает в мире, где культура, алфавит и система имеют значение — и тестировать не только в «английской» среде.

Cahier — пример современного блокнота для Android от Google
Gradle для QA-инженера
The Country That Broke Kotlin
Under the Hood of Suspension: Tracing the State Machine Behind Kotlin Coroutines
👍21
App Store тоже улучшается! Во-первых, теперь вы можете отправлять дополнительные материалы на рассмотрение независимо от существующей заявки. Это касается событий, функций Game Center, критических обновлений. Вто-вторых, Custom Product Pages теперь стало 70. Теперь вы можете назначать ключевые слова каждой кастомной странице, чтобы ее было легче найти в App Store. Страницы с назначенными им ключевыми словами могут отображаться в результатах поиска по выбранным ключевым словам вместо страницы продукта по умолчанию. В третьих, промо-коды уходят. Теперь вместо них оффер-коды. И они поддерживают все типы покупок внутри приложения, включая расходуемые, нерасходуемые и непродлеваемые подписки, а также расширенную поддержку для автоматически продлеваемых подписок.

Разработка

Octoverse 2025: ежегодный отчет от GitHub
Маленькая RAM vs новые фичи: как мы повышаем детализацию Карт и сохраняем стабильность
10 UI/UX Cheat Codes for INSTANTLY Better Designs
Google Launches Mangle: A New Language That Could Change How We Work With Databases

Маркетинг

Google открывает внешние оплаты в Play Store в США
Улучшения в App Store — больше проверок и оффер коды для всего
Скопировал неудачную идею, исправил ее и превратил в SaaS-проект на $30K

Кроссплатформа

Подстраиваемся под новые требования Google: переходим на 16 KB memory page (гайд для разработчиков React Native)
Когда .arb не тянет: как я подключаю TMS к Flutter-проекту
Advanced Flutter Tools Used by Senior Developers
Building a Premium Glassmorphism Flutter Login
🐳3👍2
📺 Видео и подкасты за неделю @AppFiles

(iOS En) Optimize your app's speed and efficiency
(iOS En) Modern SwiftUI Callbacks using AsyncStream
(iOS En) How hard can it be to send a postcard?
(iOS En) Beyond Xcode
(iOS En) Building Complex Scroll Animations - Custom Bottom Sheet Interaction
(iOS En) Keychain Unlocked: Mastering Advanced Security for Smarter, Safer Apps
(iOS En) SwiftUI Alert With Progress View
(iOS En) iMessage Style Photo Picker Using SwiftUI
(And Ru) ART Memory Management
(And Ru) Kotlin и контекстно-ориентированное мышление
(And Ru) VK Звонки в лесу: звоним в плохих сетях
(And En) TheAndroidShow: live from Droidcon, with Agents in Android Studio, Android XR and more!
(And En) Google Play Console: Streamlining workflows, from testing to growth
(And En) Building for Samsung Galaxy XR, featuring Calm's blueprint to Android XR development
(And En) Android XR #AskAndroid
(And En) Explaining Google's Guide to App Architecture In Simple Terms
(And En) FAB Menu In Material3 Expressive
(And En) From Java to Kotlin: Mercedes-Benz.io’s Journey
(And En) Merge Queue at Uber Scale
(And En) From 25 Minutes to 2.5: Okta's Journey to Faster Builds
(Crs Ru) Что не так с Dart и Flutter в 2025 году?
(Crs Ru) KMP для ОС Аврора
(Crs Ru) Backend-Driven UI как ответ на рост числа платформ
(Dev Ru) Как устроена мобильная разработка сегодня
(Dev Ru) Как вас взламывают через Open Source — DevSecOps и безопасная разработка

Прошлогодние видео:

(iOS Ru) Как устроена библиотека AppMetrica
(iOS Ru) Здесь куют Metal
(iOS Ru) Как iOS-разработчику выжить на проекте с KMP?
(And Ru) Android cookbook: готовим WebView правильно
(And Ru) Kotlin Coroutines. Устройство и возможности использования
(And Ru) Фреш на полке, фреш в стеке
(Dev Ru) От натива до SDUI через гибрид
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Octoverse 2025

У GitHub вышел ежегодный отчет Octoverse. Из более или менее интересного:

TypeScript впервые стал самым используемым языком на GitHub, обогнав Python. Это завершает десятилетнюю тенденцию перехода разработчиков на типизированный JavaScript и сигнализирует о новом стандарте для современной разработки.
• Рост популярности типизированных языков свидетельствует о том, что ИИ не только меняет скорость написания кода, но и влияет на то, каким языкам разработчики доверяют внедрение кода, сгенерированного ИИ, в эксплуатацию.
Luau стал самым быстрорастущим в процентном отношении языком. Luau — это язык программирования постепенной типизации, используемый в Roblox, что тоже отражает более широкую тенденцию отрасли к типизированной гибкости.
• На первый квартал 2025 года Kotlin находился на 15 месте по популярности на GitHub, Swift на 17, Objective-C на 18, Dart на 22.
👍41
Приложения, вышедшие в сентябре, и заработавшие больше $50,000

По данным AppMagic, в августе было выпущено всего 4 приложения, которые заработали более $50,000 (в августе было 6).

1. Tea App for Women: TeaOnHim ($150,147) - видимо перезапуск приложения, которое Apple на прошлой неделе удалила из App Store. Новая версия вышла 24 октября и уже заработала больше 150К. 

2. TruthSeek: AI People Search ($75,915) - декларируется как поиск людей в социальных сетях. Что делает ИИ в нем не очень понятно, но видимо без него сейчас никуда.

3. Vidoo: AI Video Generator ($68,105) - Android-обертка для Sora, Veo 3, Kling, Hailuo и Genova, генерящая видео. 

4. True Heritage & Ancestry: EDNA ($58,024) - определение происхождения человека по селфи (wat?), плюс генерация старинных фото и прочих генеалогических историй. Судя по 90% однозвездочных отзывов (при средней оценке 4.7) что-то не очень работающее. 

Что можно повторить в одно лицо? Скорее всего, все, кроме первого (хотя и первое при должном бюджете на продвижение). Во втором случае возникнет вопрос доступа к социальным сетям и интерпретации социального графа, в четвертом этичности работы. А третье реализуется вполне просто, вопрос, опять же, упирается в бюджет и/или виральность. Можно сделать "заготовку" и быстро обновить при появлении следующей ИИ-модели.

Приложения за август и июль.

AppGrowth про инди, пет и монетизацию
👍5🔥31🤩1
Apple обновила веб-версию App Store

Apple запустила новый веб-интерфейс App Store. Теперь вы можете пользоваться всеми функциями App Store прямо в браузере.

Раньше домен Apple «apps.apple.com» просто перенаправлял вас на общую страницу App Store на сайте Apple. Теперь он перенаправляет вас на полноценную версию App Store, которую вы можете просматривать на своем компьютере.

Веб-версия App Store теперь предлагает полную копию вкладки «Сегодня», которую вы знаете по iPhone. Доступен удобный доступ к текущим специальным мероприятиям, топам, редакционным обзорам и многому другому.

Редизайн также распространяется на страницы приложений. Страницы приложений теперь имеют насыщенный медиа-интерфейс с новой иконографией для таких элементов, как категории, награды, мероприятия и многое другое.

Также появился новый интерфейс поиска, который позволяет быстро найти нужное приложение. Раньше единственным способом сделать это было ввести название приложения в Google, а затем открыть страницу продукта из результатов поиска Google.
👍3
Купим прилы. Дорого. Звучит как скам?

ZM app market — новая программа для вас, уважаемые разработчики iOS-приложений, где ваш труд не просто высоко ценится, но и монетизируется на всей дистанции жизни аппки.

Никакого байта и скама, предлагаем win-win:
Фикс оплата за выкуп (вверх по рынку) + Revshare за установки.

Есть готовая прила? Или вы готовы разработать аппку специально под наши требования? Ни слова больше.

Система проста как мир:
1️⃣Вы отправляете приложение на оценку ➡️ @mikezmapps
2️⃣ Мы оцениваем его по ZM app index — нашей системе метрик качества
3️⃣ При одобрении — мы выплачиваем фиксу за выкуп и начинаем отслеживать инсталлы.
4️⃣Вы получаете ревшару за все установки до конца жизни прилы — сверки и выплаты по расписанию.

Вопрос: работает ли это? Да, уже есть кейсы.

Остались вопросы? Сомнения? Или даже возражения? Пишите нашему менеджеру ➡️ @mikezmapps. Он готов ко всему.

Заинтересованы? Значит, нужно делать. С ZM app market в выигрыше останутся все.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡16🌭5👍1
Новые инструменты в Google Play

Google представил новый набор инструментов и программ, разработанных для повышения производительности разработчиков и ускорения роста приложений. От упрощения технической интеграции и локализации до предоставления более глубокого анализа и создания новых эффективных способов взаимодействия с аудиторией, эти функции помогут оптимизировать ваш жизненный цикл разработки.

Что нового:

• Проверка диплинков с помощью встроенного эмулятора: вы можете использовать встроенный эмулятор для тестирования глубокой ссылки и сразу же увидеть ожидаемый пользовательский опыт, как если бы кто-то щелкнул URL-адрес на реальном устройстве.
• Локализация на базе Gemini в Google Play: этот сервис автоматически переводит новые бандлы приложений на выбранные языки, ускоряя выход приложения на новые рынки.
• Быстрая аналитика с помощью автоматизированных сводок по графикам: новая функция Gemini на странице «Статистика» автоматически генерирует описания ваших диаграмм.
• Доступ к метрикам, связанным с целями, и практическим советам для расширения аудитории: новая обзорная страница «Рост пользователей» уже доступна, предоставляя вам комплексное, персонализированное представление, которое поможет вам привлекать новых пользователей и расширять охват.
• Повторное взаимодействие с помощью вкладки «Вы»: разработчики приложений могут воспользоваться этим персонализированным разделом, интегрировав его с Engage SDK
• Оптимизируйте свою стратегию монетизации и отслеживайте эффективность: теперь вы можете предлагать товары в приложении в качестве аренды на ограниченный срок и зарегистрироваться в программе раннего доступа, чтобы начать оформлять предварительные заказы.
Упростите управление каталогом для разовых товаров
• Анализ влияния и эффективности промоакций Play Points: новая страница позволяет увидеть общий доход, количество покупателей и конверсий, полученных в результате всех промоакций Play Points.
👍5
iOS

Apple представила в iOS 26 новую технологию Language Discovery, которая помогает приложениям понимать реальные языковые предпочтения пользователя, а не просто выбранный язык интерфейса. Система с помощью машинного обучения анализирует, на каких языках человек пишет, читает и общается — всё локально и с сохранением приватности. Новый API Locale.preferredLocales возвращает богатую информацию о локалях: язык, регион, систему чисел, направление письма, календарь и т.д. Для разработчиков это шанс сделать приложения более персональными и инклюзивными. Вместо статичного списка языков можно показывать сначала те, что реально важны пользователю, адаптировать формат дат и чисел под его культуру и сделать интерфейс комфортнее для мультиязычной аудитории. Подробности — в статье.

Apple обновила веб-версию App Store
StoreKit Helper — обертка StoreKit2 для SwiftUI
Snapshot-тесты для дизайн-системы hh.ru
Understanding Apple’s Retention Messaging API
SwiftUI Custom URL Schemes
Turning a Menu into a Mini Settings Panel in SwiftUI
A deep dive into Collections, Sequences, and Iterators in Swift
Making Apps More Personal with Language Discovery
Building a License Plate Recognition App on iOS with CreateML and Vision Framework
👍1
Android

Антон Николаев из Okko рассказывает о JSON Schema и как они используют эту спецификацию на проекте, а также о библиотеке kotlinx.serialization и том, как упростила нам работу со схемами. Статья будет полезна разработчикам, которые интересуются библиотекой kotlinx.serialization и хотят глубже узнать её устройство.

Новые инструменты в Google Play
Nice Toast — красивы и настраиваемые тосты для Android
ART Memory Management
Kotlin и контекстно-ориентированное мышление
VK Звонки в лесу: звоним в плохих сетях
Кастомная сериализация с помощью kotlinx.serialization
Finding Order in the Mayhem: A Novel Concurrency Testing Tool that Improved the Kotlin Compiler
ML Kit’s Prompt API: Unlock Custom On-Device Gemini Nano Experiences
8 steps to success with Gemini in Android Studio
We Put Kotlin Coroutines Against Java Virtual Threads — And One Got Wrecked at 1M Requests
🔥5
А в этой статье автор рассказывает, как превратить инструменты на основе ИИ для программирования (автодополнение, ассистенты, генерация кода) в действительно полезных партнёров по разработке — если грамотно составлять запросы (промпты). Он подчёркивает: качество ответа ИИ сильно зависит от того, какой запрос мы ему задаём — контекст, цель, детали имеют решающее значение. Применение этих принципов может серьёзно повысить вашу эффективность. Впрочем, в статье упоминается, что промпт-инженерия это скорее ремесло, чем строгий набор правил.
Разработка

Как создать первую дизайн-систему для твоего стартапа
Backend-Driven UI как ответ на рост числа платформ
Как устроена мобильная разработка сегодня
Как вас взламывают через Open Source — DevSecOps и безопасная разработка
Руководство по промпт-инжинирингу для программистов
Пишем свою мобильную ОС с нуля на Rust
Создать мобильное приложение с zero опыта! Рассказываю, как сделал свой первый проект на Java
Microdosing AI for Mobile Dev
Architectural debt is not just technical debt

Маркетинг

Письмо от «Будущего Я»
Google и Epic заключат мировое соглашение, которое положит конец многолетней борьбе за Play Store
Рост Suno — магия ИИ-музыки
Финтех-приложения в 2025: рынок перестал гнаться за объёмом — побеждают измеримость и точность
Приложения, вышедшие в сентябре, и заработавшие больше $50,000

Кроссплатформа

Что не так с Dart и Flutter в 2025 году?
KMP для ОС Аврора
KMP Starter — шаблон кроссплатформенного приложения на KMP
Публикация PWA в App Store и Play Store на github actions
Liquid Glass Components in Compose Multiplatform
Swift Android Gradle Plugin
The most desired missing features of Flutter
😁3🐳1