Ссылка на приложение в AppStore
- Большинство возможностей требуют подключения к интернету, но некоторые фичи доступны оффлайн
- Звездочкой отмечены фичи только для авторизованных пользователей
- Авторизация в сервисе (workout.su) под существующей учетной записью
- Восстановление пароля от учетной записи
- Просмотр информации о своем профиле
- Поиск других пользователей по нику
- Просмотр списка друзей
- Просмотр списка площадок, где тренируется пользователь
- Просмотр списка добавленных пользователем площадок
- Просмотр дневников пользователя
- Просмотр черного списка
- Редактирование своего профиля
- Отправка/принятие/отклонение запросов на добавление в друзья
- Добавление/удаление из черного списка других пользователей
- Отправить сообщение другому пользователю с экрана его профиля
- Просмотр площадок на карте или списком, доступно оффлайн
- Фильтр отображаемых площадок по размеру и типу, доступно оффлайн
- Фильтр отображаемых площадок по городу на вкладке со списком, доступно оффлайн
- Создание новой площадки (максимальное количество фото для одной площадки - 15) *
- Изменение/удаление своей существующей площадки *
- Просмотр детальной информации о площадке (название, размер, тип, снепшот карты, список тренирующихся *, фотографии, автор, комментарии)
- Создание мероприятия для выбранной площадки *
- Построение маршрута до выбранной площадки через стандартное приложение «Карты»
- Поделиться ссылкой на площадку
- Создавать/изменять/удалять свои комментарии к площадкам *
- Отправить письмо для обновления данных о площадке по email
- Отправить письмо с жалобой на фото/комментарий к площадке
- Указать, что тренируешься/не тренируешься на площадке *
- Просмотр списка планируемых и прошедших мероприятий
- Создание нового мероприятия (максимальное количество фото для одного мероприятия - 15) *
- Изменение/удаление своего мероприятия *
- Просмотр детальной информации о мероприятии (название, дата и место проведения, снепшот карты, список участников *, фотографии, описание, организатор, комментарии)
- Поделиться ссылкой на мероприятие на экране
- Создавать/изменять/удалять свои комментарии к мероприятиям *
- Отправить письмо с жалобой на фото/комментарий к мероприятию
- Указать, что идешь/не идешь на мероприятие *
- Отправлять сообщения другим пользователям сервиса со страницы их профиля
- Просмотр своих диалогов в формате чатов
- Отправлять новые сообщения в своих диалогах
- Видеть количество непрочитанных сообщений на экране со списком диалогов
К дневникам (при наличии) можно перейти с экрана профиля пользователя.
- Просмотр/комментирование чужих дневников (при наличии доступа к ним)
- Создание/изменение/удаление дневников и записей в своих дневниках
- Изменение настроек доступа для своих дневников
- Изменить тему приложения (светлая/темная/как в системе)
- Изменить язык в приложении (Русский/Английский)
- Отправить обратную связь о приложении по email
- Перейти на сайт с пользовательским соглашением
- Перейти на официальный сайт сервиса
- Перейти в блог разработчика приложения в телеграм
- Поделиться ссылкой на приложение
- Просмотр текущей версии приложения
- Перейти на сайт магазина workout
- Просмотр логов сетевых запросов (только в режиме разработки)
Прежде чем что-то делать, ознакомься с правилами, пожалуйста.
- Проверяем, что установлен Xcode 16+
- Клонируем репозиторий
- В терминале переходим в папку с проектом
cd SwiftUI-WorkoutApp
- Активируем локальные хуки для этого репозитория
git config core.hooksPath ./githooks
- Даем права на выполнение
pre-push
хука
chmod +x githooks/pre-push
- Запускаем в папке с проектом файл
SwiftUI-WorkoutApp.xcodeproj
и ждем загрузки зависимостей - Проект готов к работе!
Хук выполняет двухэтапную проверку перед отправкой изменений:
- Блокирует прямой
push
в веткуmain
- Запускает
SwiftFormat
в режиме линтера: если нарушены правила форматирования кода, вылезет ошибка, подробнее можно почитать тут
- Используем SwiftFormat (0.55.5) для форматирования кода
- Правила форматирования перечислены в файле .swiftformat
- Все правила можно найти тут
- Для запуска форматирования нужно в папке с проектом выполнить команду (точка после пробела тоже нужна):
./swiftformat .
- Перед каждым пушом должен выполняться хук, проверяющий необходимость форматирования кода
- При нарушении правил форматирования кода гит выдаст ошибку и напишет команду, которую нужно выполнить для запуска
SwiftFormat
- Запускаем команду в терминале и выполняется форматирование кода
- Переходим на страницу с релизами
- Скачиваем
swiftformat.zip
- Заменяем в папке с проектом старый файл
swiftformat
на новый - Отправляем PR с изменениями
- Если при первом запуске форматирования после обновления файла система выдает алерт и не запускает скрипт, даем разрешение на запуск этого файла в
системных настройках -> конфиденциальность и безопасность
Xcode -> SwiftUI-WorkoutApp -> Target: SwiftUI-WorkoutApp -> General
Display Name
- название приложения на экране смартфонаVersion
- версия приложения для магазинаBuild
- версия сборки дляTestFlight
- Скачать актуальную версию репозитория
- Если ранее не скачивал, можно скачать по зеленой кнопке сверху с текстом
Code -> Open with Xcode
- Если ранее скачивал, то открываешь
Xcode
, в верхней панели нажатьSource Control -> Pull
- Если ранее не скачивал, можно скачать по зеленой кнопке сверху с текстом
- Открыть
Xcode
и дождаться загрузки зависимостей; при возникновении ошибок можно:- почистить
Derived Data
и память билда (command + shift + k
) - обновить зависимости (
File -> Packages -> Reset/Resolve/Update
)
- почистить
- В верхней панели Xcode сменить девайс на
Any iOS Device
- В верхней панели нажать
Product -> Archive
- Дождаться архивации, в открывшемся окне со сборками выбрать нужную и нажать Distribute App
- Пройти по всем шагам и снять галку с автоматического изменения версии сборки на одном из финальных шагов
- Открыть страницу с приложением в AppstoreConnect
- В левом меню рядом с версией в статусе Готово к продаже нажать
+
и добавить новую версию - Заполнить поле Что нового в этой версии
- Ниже в разделе Сборка выбрать нужную сборку из
TestFlight
- Ниже на странице проверить галки
- Выпустить эту версию автоматически
- Выпустить обновление сразу для всех пользователей
- Сохранить текущую оценку
- Нажать сверху справа кнопку Сохранить
- Отправить приложение на проверку
- Генерируем скриншоты при помощи
Fastlane
(документация) - Настройки для генерации скриншотов находятся в Snapfile (документация)
- Генерация скриншотов выполняется командой в папке с проектом (команда может меняться в зависимости от способа установки
Ruby
/fastlane
)
rbenv exec fastlane snapshot
- Для генерации скриншотов необходимо наличие в Xcode симуляторов с нужной версией iOS в соответствие с настройками в Snapfile
- Если тесты падают с ошибкой при запуске через
fastlane
, нужно убедиться, что при ручном запуске тестов изXcode
они успешно проходят во всех локализациях, используемых для создания скриншотов - Готовые скриншоты сохраняются в папке screenshots
Список площадок | Площадка | Прошедшие мероприятия | Мероприятие | Профиль |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
По состоянию на 2025 год Apple берет за основу скриншоты для диагонали 6.9 (или 6.7) дюймов и масштабирует их под все остальные размеры экранов, то есть при желании можно использовать для скриншотов только один девайс.
Поскольку в этом проекте подключен и работает fastlane snapshot
, используем три девайса:
- iPhone 16 Pro Max
- iPhone 16 pro
- iPhone SE (3rd generation)
Список всех существующих девайсов есть тут.