uk
Feedback
Мобильная разработка

Мобильная разработка

Відкрити в Telegram

Актуальное по мобильной разработке — Android, iOS, кроссплатформа Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/oVBP

Показати більше

📈 Аналітичний огляд Telegram-каналу Мобильная разработка

Канал Мобильная разработка (@mobi_dev) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 13 146 підписників, посідаючи 9 310 місце в категорії Технології та додатки та 48 820 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 13 146 підписників.

За останніми даними від 06 жовтня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -78, а за останні 24 години на 1, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 9.99%. Протягом перших 24 годин після публікації контент зазвичай збирає 6.25% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 1 314 переглядів. Протягом першої доби публікація в середньому набирає 822 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 2.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як интерфейс, swift, доходность, linux, perfetto.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Актуальное по мобильной разработке — Android, iOS, кроссплатформа Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/o...”

Завдяки високій частоті оновлень (останні дані отримано 07 жовтня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

13 146
Підписники
+124 години
-77 днів
-7830 днів

Триває завантаження даних...

Залучення підписників
жовт '26
жовтень '26
+16
в 0 каналах
вересень '26
+35
в 6 каналах
Get PRO
серпень '26
+37
в 3 каналах
Get PRO
липень '26
+50
в 1 каналах
Get PRO
червень '26
+38
в 0 каналах
Get PRO
травень '26
+47
в 1 каналах
Get PRO
квітень '26
+31
в 3 каналах
Get PRO
березень '26
+43
в 0 каналах
Get PRO
лютий '26
+48
в 2 каналах
Get PRO
січень '26
+73
в 0 каналах
Get PRO
грудень '25
+102
в 1 каналах
Get PRO
листопад '25
+49
в 0 каналах
Get PRO
жовтень '25
+140
в 0 каналах
Get PRO
вересень '25
+33
в 0 каналах
Get PRO
серпень '25
+68
в 1 каналах
Get PRO
липень '25
+169
в 3 каналах
Get PRO
червень '25
+183
в 3 каналах
Get PRO
травень '25
+134
в 3 каналах
Get PRO
квітень '25
+173
в 4 каналах
Get PRO
березень '25
+231
в 5 каналах
Get PRO
лютий '25
+169
в 7 каналах
Get PRO
січень '25
+149
в 7 каналах
Get PRO
грудень '24
+111
в 2 каналах
Get PRO
листопад '24
+81
в 1 каналах
Get PRO
жовтень '24
+105
в 6 каналах
Get PRO
вересень '24
+113
в 1 каналах
Get PRO
серпень '24
+115
в 2 каналах
Get PRO
липень '24
+95
в 5 каналах
Get PRO
червень '24
+121
в 7 каналах
Get PRO
травень '24
+120
в 5 каналах
Get PRO
квітень '24
+170
в 5 каналах
Get PRO
березень '24
+137
в 8 каналах
Get PRO
лютий '24
+111
в 9 каналах
Get PRO
січень '24
+198
в 11 каналах
Get PRO
грудень '23
+254
в 7 каналах
Get PRO
листопад '23
+92
в 7 каналах
Get PRO
жовтень '23
+99
в 8 каналах
Get PRO
вересень '23
+67
в 0 каналах
Get PRO
серпень '23
+79
в 0 каналах
Get PRO
липень '23
+64
в 0 каналах
Get PRO
червень '23
+83
в 0 каналах
Get PRO
травень '23
+83
в 0 каналах
Get PRO
квітень '23
+118
в 0 каналах
Get PRO
березень '23
+94
в 0 каналах
Get PRO
лютий '23
+89
в 0 каналах
Get PRO
січень '23
+185
в 0 каналах
Get PRO
грудень '22
+158
в 0 каналах
Get PRO
листопад '22
+156
в 0 каналах
Get PRO
жовтень '22
+282
в 0 каналах
Get PRO
вересень '22
+169
в 0 каналах
Get PRO
серпень '22
+383
в 0 каналах
Get PRO
липень '22
+315
в 0 каналах
Get PRO
червень '22
+362
в 0 каналах
Get PRO
травень '22
+502
в 0 каналах
Get PRO
квітень '22
+2 326
в 0 каналах
Get PRO
березень '22
+685
в 0 каналах
Get PRO
лютий '22
+1 000
в 0 каналах
Get PRO
січень '22
+852
в 0 каналах
Get PRO
грудень '21
+390
в 0 каналах
Get PRO
листопад '21
+2 348
в 0 каналах
Get PRO
жовтень '21
+2 515
в 0 каналах
Get PRO
вересень '21
+209
в 0 каналах
Get PRO
серпень '21
+458
в 0 каналах
Get PRO
липень '21
+717
в 0 каналах
Get PRO
червень '21
+464
в 0 каналах
Get PRO
травень '21
+129
в 0 каналах
Get PRO
квітень '21
+2 702
в 0 каналах
Get PRO
березень '21
+707
в 0 каналах
Get PRO
лютий '21
+861
в 0 каналах
Get PRO
січень '21
+5 692
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
07 жовтня+1
06 жовтня+1
05 жовтня+3
04 жовтня+3
03 жовтня0
02 жовтня0
01 жовтня+8
Дописи каналу
Как нативные контролы SwiftUI меняются в iOS 26 без правок интерфейса Один бинарник, собранный в Xcode 26.6 с SDK iOS 26.5 и
Как нативные контролы SwiftUI меняются в iOS 26 без правок интерфейса Один бинарник, собранный в Xcode 26.6 с SDK iOS 26.5 и минимальной версией iOS 17, запустили на iOS 17.5 и 26.3. Визуальное сравнение интерфейсов показывает изменения, которые SwiftUI применяет автоматически: добавлять glassEffect() не требуется. Кнопки становятся капсульными, ползунки с шагом получают деления, панель вкладок приподнимается над контентом. У переключателей, сегментированного выбора, панелей инструментов и модальных экранов тоже меняются формы и фон. После обновления SDK стоит пересобрать приложение и проверить основные экраны на старой и новой iOS. Сворачивание панели вкладок и собственные стеклянные эффекты уже требуют дополнительных API.

2
Как собрать стабильную пирамиду тестов для Flutter-приложения Руководство по тестированию Flutter разбирает unit-, widget-, g
Как собрать стабильную пирамиду тестов для Flutter-приложения Руководство по тестированию Flutter разбирает unit-, widget-, golden- и integration-тесты. Логику предлагают выносить из виджетов, связи интерфейса проверять widget-тестами, а запуск, авторизацию, покупки, плагины и платформенные каналы — на устройстве или эмуляторе. pumpAndSettle() ждёт прекращения новых кадров, поэтому бесконечный индикатор приводит к тайм-ауту. Вместо него автор управляет кадрами через pump(), а асинхронным результатом — через Completer. Для golden-тестов разобраны расхождения снимков в macOS и Linux CI: влияют шрифты и окружение. Их лучше оставить для выбранных компонентов и запускать в зафиксированной среде.
601
3
Почему @ObservedObject сбрасывает модель в SwiftUI @ObservedObject следит за изменениями модели, полученной извне, но не хран
Почему @ObservedObject сбрасывает модель в SwiftUI @ObservedObject следит за изменениями модели, полученной извне, но не хранит созданный внутри представления экземпляр. Когда состояние родителя меняется, SwiftUI может заново создать значение дочернего View. Вместе с ним появится новый CounterViewModel, а счётчик вернётся к нулю. Если дочернее представление само создаёт модель, объявляйте её через @StateObject. SwiftUI сохранит экземпляр, пока считает представление тем же самым. Если модель создаёт родитель, он хранит её через @StateObject и передаёт ребёнку как @ObservedObject. Для нового кода под iOS 17 и новее источник предлагает @Observable с @State, но правило владения остаётся тем же. Пример со сбрасывающимся счётчиком и варианты исправления приведены с кодом.
643
4
Как отделить эффект Baseline Profiles от очистки запуска Android-приложения В Compose-приложении автора Baseline Profiles уск
Как отделить эффект Baseline Profiles от очистки запуска Android-приложения В Compose-приложении автора Baseline Profiles ускоряли запуск, но итоговые 18–34% появились после очистки стартового пути. Разбор эксперимента с запуском показывает, как не приписать весь результат профилю. Автор сравнивал запуск без профиля в verify и с ним в speed-profile, каждый раз принудительно останавливая приложение. Затем убрал запуск интерфейса из фонового события, вынес чтение настроек и блокирующий ввод-вывод из критического пути. Кейс пригодится для воспроизводимых замеров старта Android-приложения: цифра ускорения важна вместе с её причиной.
759
5
Как внедрить Maestro в React Native и не дублировать E2E-тесты Команда Add Jam сравнила внедрение Maestro и Detox. Maestro ра
Как внедрить Maestro в React Native и не дублировать E2E-тесты Команда Add Jam сравнила внедрение Maestro и Detox. Maestro работает вне кодовой базы приложения: достаточно установить консольную утилиту и направить её на запущенную сборку. Тесты описываются в YAML, а одни и те же сценарии и проверки запускаются на iOS и Android без изменений. Повторяющиеся действия, например вход и переход к нужному экрану, авторы вынесли в переиспользуемые сценарии. В Detox им прежде требовались нативные зависимости, изменения конфигурации сборки и шаблонный код до первого теста. Ограничения тоже разобраны: селекторы по testID нестабильно находили перекрывающиеся и абсолютно позиционированные элементы. Приходилось нажимать по координатам, из-за чего тест зависел от вёрстки. Ещё виртуальная клавиатура мешала следующим нажатиям, а LogBox перекрывал элементы интерфейса.
761
6
Как ускорить React Native-приложение с картой и Zustand На слабых Android-устройствах карта с сотнями маркеров тормозила, а э
Как ускорить React Native-приложение с картой и Zustand На слабых Android-устройствах карта с сотнями маркеров тормозила, а экраны перерисовывались чаще нужного. Разбор оптимизации рабочего проекта показывает, где команда искала причины. Компоненты вынесли из родительского: иначе React заново монтирует их из-за новой ссылки на функцию. В Zustand компоненты подписали отдельными селекторами только на нужные данные. Маркеры обновляли лишь при изменении счётчика, поиск по массиву заменили заранее собранной Map. Страницы API объединяли перед записью в хранилище, а форматирование перенесли с загрузки данных на чтение.
832
7
Android CLI получил Device Streaming для тестов на реальных смартфонах Google добавила в Android CLI поддержку Device Streami
Android CLI получил Device Streaming для тестов на реальных смартфонах Google добавила в Android CLI поддержку Device Streaming: теперь консоль и ИИ-агенты могут работать с физическими устройствами в облаке. Подключение идет через защищенный ADB over SSL, поэтому удаленный смартфон виден тулчейну так же, как если бы был подключен по USB. Из терминала можно деплоить сборки, выгружать системные логи и трейсы, а также снимать скриншоты в headless-режиме. Параллельно каталог официальных инструкций Android skills вырос до 20+ файлов SKILL.md: от профилирования в PerfettoSQL и миграции на CameraX до аудита правил Google Play. В блоге привели кейс команды FotMob: с навыком по Wear Compose Material 3 инженеры за один день перевели восемь списков на TransformingLazyColumn и убрали рукописный rotary-код. При этом инструкции поймали ошибки модели — забытый contentPadding и хардкод размеров sp. @mobi_dev
1 211
8
Как адаптировать модальные экраны SwiftUI к сгибу iPhone Duo На iPhone Duo модальный экран меняет размер и положение в зависи
Как адаптировать модальные экраны SwiftUI к сгибу iPhone Duo На iPhone Duo модальный экран меняет размер и положение в зависимости от шести состояний устройства. В закрытой портретной ориентации кнопки подтверждения и закрытия переходят на боковую вертикальную панель, на полностью раскрытом экране остаются сверху, а при частичном сгибе в альбомной ориентации сам экран сдвигается на одну половину дисплея. Если в панели нужна только одна кнопка, например Close, вертикальную полосу можно отключить модификатором .toolbarVerticalBehavior(.disabled). Его применяют к содержимому внутри NavigationStack, чтобы освободить ширину формы. Разбор всех шести положений iPhone Duo поможет проверить доступность элементов. Системные sheets, alerts и menus уже отводят интерактивные элементы от изогнутого центра, но собственную вёрстку стоит проверить во всех положениях.
1 439
9
Как проверять другую ветку в Android Studio через Git worktree Git worktree создаёт для ветки отдельную рабочую папку, котора
Как проверять другую ветку в Android Studio через Git worktree Git worktree создаёт для ветки отдельную рабочую папку, которая использует общую историю основного репозитория. Поэтому незакоммиченные изменения текущей задачи можно оставить на месте, а ветку коллеги открыть во втором окне Android Studio. Отдельными будут и рабочие файлы, и каталоги сборки, хотя это само по себе не гарантирует отсутствие повторных сборок Gradle. Новый каталог и ветка создаются командой git worktree add ../myapp-review -b review/fix. Доступные рабочие деревья показывает git worktree list, а после ревью каталог удаляется через git worktree remove ../myapp-review. Одну ветку нельзя одновременно открыть в нескольких worktree. Практическое руководство по Git worktrees также разбирает перенос изменений в основную ветку и организацию параллельной работы без постоянных переключений и stash.
1 299
10
Как заставить VoiceOver озвучивать карточку SwiftUI целиком Составную карточку с иконкой, названием и числом VoiceOver может
Как заставить VoiceOver озвучивать карточку SwiftUI целиком Составную карточку с иконкой, названием и числом VoiceOver может прочитать как набор несвязанных элементов: «изображение, текст, текст». Модификатор .accessibilityElement(children: .combine) объединяет дочерние представления в один логический элемент. После объединения задайте короткое основное описание через .accessibilityLabel(), текущее состояние через .accessibilityValue(), а дополнительный контекст через .accessibilityHint(). Например, карточка со звездой, числом 42 и подписью Favorites вместо трёх отдельных фрагментов будет звучать как «Favorites: 42». Для проверки включите VoiceOver в настройках доступности iOS и пройдите по карточкам свайпами. Каждая должна озвучиваться как законченный объект с понятным названием и состоянием. Код карточки и сценарий проверки VoiceOver помогут сверить реализацию.
1 174
11
Liquid Glass в SwiftUI: как выбрать regular или clear на iOS 26 Модификатор glassEffect() по умолчанию использует вариант .re
Liquid Glass в SwiftUI: как выбрать regular или clear на iOS 26 Модификатор glassEffect() по умолчанию использует вариант .regular. Он сильнее размывает фон и подбирает цвет стандартных надписей и символов под изображение позади панели. В примере с тёмными обоями символы остаются светлыми даже при светлой цветовой схеме интерфейса. Вариант .clear прозрачнее и сохраняет больше деталей фотографии или видео. Но цвет символов у него зависит от светлой или тёмной схемы: на тёмном фоне при Light Mode они могут остаться тёмными и потерять контраст. Для навигации и большинства кнопок стоит выбирать .regular. Если контент под панелью нужно сохранить видимым, подойдёт .clear, но контраст придётся проверить на разных кадрах и при необходимости добавить затемнение. Сравнение вариантов содержит код и примеры для обеих цветовых схем.
1 151
12
Как проверить Auto Layout в iOS 26 на iPhone 17 и Air У iPhone 17 и 17 Pro логическая область экрана составляет 402 × 874 пун
Как проверить Auto Layout в iOS 26 на iPhone 17 и Air У iPhone 17 и 17 Pro логическая область экрана составляет 402 × 874 пункта, у Air: 420 × 912, у Pro Max: 440 × 956. В портретной ориентации ширина у всех относится к классу Compact. В альбомной Air и Pro Max переходят в Regular, а 17 и 17 Pro остаются в Compact. Безопасную область стоит отдельно проверить в альбомной ориентации. Верхний отступ у всех четырёх моделей равен 20 пунктам. У Air боковые отступы составляют 68 пунктов, нижний: 29; у остальных моделей боковые: 62, нижний: 20. Для App Store Connect правило не изменилось: достаточно одного набора скриншотов для iPhone под дисплей 6,9 или 6,5 дюйма, остальные размеры масштабируются. Таблица размеров, классов ширины и безопасных отступов поможет выбрать конфигурации симулятора для проверки Auto Layout.
1 136
13
Как подключать новые API SwiftUI без повышения минимальной версии iOS Если приложению нужен модификатор toolbarVerticalBehavi
Как подключать новые API SwiftUI без повышения минимальной версии iOS Если приложению нужен модификатор toolbarVerticalBehavior из версии 27.1, необязательно сразу менять deployment target для всего проекта. Обёртка Backport проверяет доступность API: на новой системе вызывает модификатор, а на старой возвращает исходное представление без изменений. Так проверки версии собираются в одном месте, а вызовы получают отдельное пространство имён .backport. Для API, поведение которых нужно воспроизвести на старых версиях iOS, в ветке совместимости можно добавить собственную реализацию. Альтернатива пространству имён: префикс ported и аннотация @available. Когда минимальная версия приложения дорастёт до штатного API, компилятор предупредит об устаревшей обёртке. Это помогает сохранить поддержку прежнего deployment target и не забыть удалить временный код.
1 131
14
Как сделать прокрутку LazyVStack в SwiftUI предсказуемее LazyVStack не строит весь список сразу: он загружает элементы у види
Как сделать прокрутку LazyVStack в SwiftUI предсказуемее LazyVStack не строит весь список сразу: он загружает элементы у видимой области, а размеры строк за экраном оценивает по уже размещённым. Когда реальные размеры отличаются, стек уточняет общую высоту и смещение ScrollView. Поэтому логика, привязанная к абсолютному смещению, может срабатывать в разных местах. Для длинной ленты в iOS полезны три правила: задавать предсказуемую высоту строк с переменным текстом; не сдвигать анимацией невидимые элементы в область экрана; отслеживать появление строк через onScrollTargetVisibilityChange, а не по абсолютному смещению. Apple подробно разбирает оценку размеров, загрузку представлений, предзагрузку и программную прокрутку. Доклад рассчитан на разработчиков, уже знакомых с компоновкой стеков в SwiftUI.
1 172
15
Когда SubcomposeLayout в Jetpack Compose оправдывает свою цену Обычный Layout измеряет и размещает готовое дерево. Subcompose
Когда SubcomposeLayout в Jetpack Compose оправдывает свою цену Обычный Layout измеряет и размещает готовое дерево. SubcomposeLayout создаёт компоненты во время измерения, когда уже известны ограничения родителя, поэтому обходится дороже. Он нужен, когда размер определяет состав интерфейса: например, строка тегов создаёт элементы до границы экрана и добавляет счётчик скрытых. В разборе механики и DynamicChipRow показано, почему для расчёта одних размеров обычно достаточно Layout.
1 131
16
Как тестировать App Intents и Spotlight без автоматизации интерфейса На WWDC26 Apple показала AppIntentsTesting для интеграци
Как тестировать App Intents и Spotlight без автоматизации интерфейса На WWDC26 Apple показала AppIntentsTesting для интеграционных тестов App Intents в iOS. Проверки запускают интенты на устройстве через тот же стек, что Siri, Shortcuts и Spotlight, но не зависят от интерфейса приложения или системы. Тесты живут в обычном пакете XCUITest и обращаются к приложению по идентификатору пакета. Можно выполнить интент, проверить результат, прогнать запрос сущностей, связать несколько интентов и проверить индексацию Spotlight. Код приложения импортировать не нужно; приложение и средство запуска тестов должны использовать одну команду разработчика в настройках подписи. В докладе с примерами кода также разбирают подготовку тестовых данных и запуск проверок в CI. Так регрессии интеграций с Siri и Shortcuts можно ловить без ручной проверки интерфейса.
1 163
17
Как связать список и экран деталей анимацией в Jetpack Compose Схема интеграции с Navigation Compose: SharedTransitionLayout
Как связать список и экран деталей анимацией в Jetpack Compose Схема интеграции с Navigation Compose: SharedTransitionLayout размещают над NavHost, а элементам списка и экрана деталей задают одинаковый ключ по ID. Compose сопоставляет их и анимирует положение и размер. Для одного изображения подходит sharedElement, для карточки с меняющимся содержимым — sharedBounds. Не используйте индекс списка как ключ: после перестановки элементы могут связаться неверно. Длительность лучше держать в пределах 300–400 мс и учитывать системное отключение анимаций.
1 179
18
Как ускорить первый кадр камеры в iOS 26 с AVFoundation Apple предлагает разделить запуск камеры: сначала создать превью и кн
Как ускорить первый кадр камеры в iOS 26 с AVFoundation Apple предлагает разделить запуск камеры: сначала создать превью и кнопку затвора, а остальные элементы интерфейса и выходы захвата инициализировать позже. В докладе о быстром запуске камеры Deferred Start сократил ожидание превью примерно вдвое. AVCaptureSession, startRunning и stopRunning блокируют поток, поэтому их не стоит вызывать в главном потоке. Конфигурацию применяют один раз, а при Deferred Start откладывают все выходы, кроме превью. API доступен с iOS 26. При сборке с SDK iOS 26 автоматический режим включён по умолчанию. Первый кадр появится раньше, но фотосъёмка не ускорится, пока не готов её выход.
1 296
19
Как загружать локальный HTML в SwiftUI WebView через свою URL-схему В iOS 26 у SwiftUI появились WebView и WebPage, а собстве
Как загружать локальный HTML в SwiftUI WebView через свою URL-схему В iOS 26 у SwiftUI появились WebView и WebPage, а собственная URL-схема позволяет загружать локальные ресурсы. Например, приложение может открыть quotes://001.html, найти файл в основном пакете и показать страницу без сервера. Обработчик URLSchemeHandler получает запрос, проверяет схему, находит файл, определяет MIME-тип и читает данные. Затем он последовательно передаёт в асинхронный поток URLResponse и содержимое файла, а при ошибке завершает поток с исключением. Обработчик регистрируется в WebPage.Configuration, созданная WebPage передаётся в WebView, а загрузка запускается через page.load. Метод возвращает события, по которым можно отслеживать ход загрузки. Перед внедрением проверьте минимальную версию приложения: этот API доступен начиная с iOS 26.
1 326
20
Как встроить генерацию изображений через Image Playground в iOS-приложение Фреймворк Image Playground позволяет создавать изо
Как встроить генерацию изображений через Image Playground в iOS-приложение Фреймворк Image Playground позволяет создавать изображения в Swift из текста, фотографии, рисунка PencilKit или большого текстового фрагмента. За генерацию отвечает ImageCreator: метод images получает описание, стиль и число результатов, а затем возвращает их по одному через AsyncSequence. Доступны стили animation, illustration и sketch, но конкретный набор зависит от устройства. Перед вызовом стоит проверить availableStyles; создание ImageCreator может завершиться ошибкой, если устройство не поддерживает генерацию. За один запрос система выдаёт не больше четырёх изображений. Примеры на Swift показывают, как передать текст вместе с исходной картинкой и получить CGImage. Минимальную версию ОС и список совместимых устройств статья не называет, поэтому их нужно проверить отдельно перед внедрением.
1 249