Нативный iOS клиент для борды mkch.pooziqo.xyz
- Tab Bar навигация с тремя вкладками: Доски, Избранное, Настройки
- Адаптивный дизайн для iPhone и iPad
- Темная/светлая тема с автопереключением
- Нативные анимации и жесты iOS
- SwiftUI интерфейс для современного внешнего вида
- Просмотр всех досок mkch с описаниями
- Список тредов с поддержкой сортировки по рейтингу и закрепленным
- Детальный просмотр тредов с комментариями
- Система файлов с поддержкой изображений и видео
- Полноэкранный просмотр изображений с зумом и жестами
- Компактный/обычный режим отображения для экономии места
- Пагинация с настраиваемым размером страницы (5-20 элементов)
- Оффлайн режим: просмотр сохранённых данных без сети
- Добавление тредов в избранное одним тапом
- Отдельная вкладка избранного с быстрым доступом
- Локальное сохранение избранного между запусками
- Управление избранным с возможностью удаления
- Темы: темная/светлая
- Автообновление контента
- Показ файлов (включение/отключение)
- Компактный режим для экономии пространства
- Размер страницы: от 5 до 20 элементов
- Пагинация: включение/отключение
- Нестабильные функции с предупреждением
- Принудительно оффлайн: работа только с кэшем
- Аутентификация по ключу с тестированием подключения
- Аутентификация по passcode для обхода капчи
- Создание новых тредов с заголовком и текстом
- Добавление комментариев в существующие треды
- CSRF защита и автоматическая обработка форм
- Автоочистка кэша после постинга
- Подписка на доски через интуитивные переключатели
- Настраиваемый интервал проверки: 5 мин - 1 час
- Фоновое обновление даже при закрытом приложении
- Принудительная проверка новых тредов
- Умные уведомления: "Новый тред: [название] в /доска/"
- Тестовые уведомления в debug режиме
- Многоуровневое кэширование:
- Доски (TTL: 10 мин)
- Треды (TTL: 5 мин)
- Детали тредов и комментарии (TTL: 3 мин)
- Изображения с NSCache
- Автоочистка кэша по таймеру
- Оптимизация батареи для фоновых задач
- Ленивая загрузка контента
- Graceful error handling с retry логикой
- Дисковый кэш с фолбэком на устаревшие данные при оффлайне
- Crash Handler с детальной диагностикой
- Debug меню (5 тапов по информации об устройстве):
- Тест краша приложения
- Тестовые уведомления
- Live Activity (BETA):
- Отображение треда на экране блокировки/Dynamic Island
- Тикер случайных тредов по доскам с настраиваемым интервалом
- Гибкие опции: заголовок, последний коммент, счётчик
- Управление кэшем:
- Очистка кэша досок
- Очистка кэша тредов
- Очистка кэша изображений
- Полная очистка
- Информация об устройстве с детальной диагностикой
- Сброс настроек до заводских
- iOS 15.0 или новее
- iPhone/iPad с поддержкой SwiftUI
- Разрешение на уведомления (для push-уведомлений)
- Скачайте и установите приложение
- Откройте вкладку "Настройки"
- Настройте аутентификацию (при необходимости):
- Введите ключ аутентификации
- Введите passcode для постинга
- Протестируйте подключение кнопками "Тест ключа" и "Тест passcode"
- Включите нестабильные функции в настройках
- Перейдите в "Настройки уведомлений"
- Включите уведомления и разрешите их в системных настройках
- Выберите интервал проверки (рекомендуется 15-30 мин)
- Подпишитесь на нужные доски переключателями
- Протестируйте кнопкой "Проверить новые треды сейчас"
- Требования: iPhone c iOS 16.1+ (на iPad до iPadOS 18 Live Activity не показываются; на симуляторе поддержка ограничена)
- Включите: Настройки -> Уведомления -> Live Activity
- Отдельный тред: откройте тред и включите тумблер в правом верхнем углу
- Тикер:
- В Настройки -> Уведомления включите "Тикер случайных тредов"
- Выберите случайную борду или укажите код борды
- Задайте интервал (5–120 сек)
- Кнопки "Старт тикера" / "Стоп тикера"
- Ограничения платформы: бегущая строка в Live Activity недоступна. Контент обновляется дискретно через интервал. Частота обновлений в фоне ограничивается iOS.
- Откройте вкладку "Настройки"
- Включите тумблер "Принудительно оффлайн"
- На экранах появится баннер "Оффлайн режим. Показаны сохранённые данные"
- Загрузка из сети отключается, используются данные из кэша (если есть)
- Отключите тумблер для возврата в онлайн
| Файл | Описание |
|---|---|
MobileMkchApp.swift |
Точка входа приложения с crash handler |
MainTabView.swift |
Tab Bar с навигацией и избранным |
Models.swift |
Структуры данных (Board, Thread, Comment, etc.) |
APIClient.swift |
HTTP клиент с CSRF и аутентификацией |
Settings.swift |
Система настроек с JSON сериализацией |
Cache.swift |
Многоуровневое кэширование с TTL |
LiveActivityManager.swift |
Управление Live Activity и тикером |
| Файл | Описание |
|---|---|
BoardsView.swift |
Список досок с ошибками и загрузкой |
ThreadsView.swift |
Треды с пагинацией и избранным |
ThreadDetailView.swift |
Детали треда с комментариями |
CreateThreadView.swift |
Форма создания треда |
AddCommentView.swift |
Форма добавления комментария |
SettingsView.swift |
Настройки с debug меню |
FileView.swift |
Просмотр файлов с полноэкранным режимом |
NotificationSettingsView.swift |
BETA настройки уведомлений |
| Файл | Описание |
|---|---|
FavoritesWidget/FavoritesWidget.swift |
Конфигурация виджета и UI Live Activity |
FavoritesWidget/FavoritesWidgetBundle.swift |
Регистрация виджета и Live Activity |
FavoritesWidget/AppIntent.swift |
Intent-конфигурация виджета |
FavoritesWidget/Info.plist |
Ключ NSSupportsLiveActivities |
| Файл | Описание |
|---|---|
NotificationManager.swift |
Push-уведомления и подписки |
BackgroundTaskManager.swift |
Фоновое обновление |
CrashHandler.swift |
Обработка крашей |
ImageLoader.swift |
Асинхронная загрузка изображений |
NetworkMonitor.swift |
Монитор сети и принудительный оффлайн |
AppGroup.swift |
Общие UserDefaults для app ↔ widget |
GET /api/boards/- список досокGET /api/board/{code}- треды доскиGET /api/board/{code}/thread/{id}- детали тредаGET /api/board/{code}/thread/{id}/comments- комментарииPOST /boards/board/{code}/new- создание тредаPOST /boards/board/{code}/thread/{id}/comment- комментарий
- Key auth:
/key/auth/с CSRF токенами - Passcode auth:
/passcode/enter/для обхода капчи - User-Agent:
MobileMkch/[VERSION]
- Доски: 10 минут (редко меняются)
- Треды: 5 минут (часто обновляются)
- Детали: 3 минуты (могут изменяться)
- Изображения: NSCache с лимитами памяти
- Оффлайн фолбэк: при ошибке сети или включённом оффлайне данные берутся из дискового кэша, если доступны
- Xcode 15.0+
- macOS 13.0+
- Apple Developer Account (для распространения) (я все равно не использую)
# Клонируйте репозиторий
git clone <repository-url>
cd MobileMkch-iOS
# Откройте в Xcode
open MobileMkch.xcodeproj
# Выберите устройство и запустите
# Cmd+R для сборки и запуска# 1. Выберите "Any iOS Device"
# 2. Product -> Archive
# 3. Distribute App:
# - App Store Connect (для App Store)
# - Ad Hoc (для тестирования)
# - Development (для разработки)P.S. Костыль через Payload/MobileMkch.app в зипе и переименовании ее в .ipa будет работать почти всегда
- Live Activity (BETA): тумблер в треде, тикер в "Настройки -> Уведомления"
- Добавлен оффлайн режим (тумблер в настройках)
- Дисковый кэш и фолбэк на сохранённые данные
- Оффлайн-баннеры в списках и деталях
- Добавлены push-уведомления
- Добавлены фоновые задачи
- Добавлены уведомления о новых тредах
- Добавлены уведомления о новых комментариях
- Добавлены уведомления о новых файлах
- Добавлены уведомления о новых досках
p.s. я не уверен работает ли оно, но оно работает по крайней мере на моем устройстве
- Полная переработка UI на SwiftUI
- Система избранного с локальным сохранением
- Push-уведомления с фоновым обновлением
- Полноэкранный просмотр изображений с жестами
- Crash handler с детальной диагностикой
- Многоуровневое кэширование с TTL
- Debug меню для разработчиков
- Компактный режим интерфейса
- Нестабильные функции с предупреждениями
- Поддержка загрузки файлов при постинге
- Поиск по тредам и комментариям
- Темы оформления (кастомные цвета)
- Статистика использования (мб и не будет, я не знаю мне лень)
- Экспорт/импорт настроек
- SwiftUI - современный UI фреймворк
- Combine - реактивное программирование
- Foundation - базовые возможности
- UserNotifications - push-уведомления
- BackgroundTasks - фоновое обновление
- MVVM с ObservableObject
- Dependency Injection через EnvironmentObject
- Repository Pattern для API и кэша
- Observer Pattern для уведомлений
- Debug информация: 5 тапов по информации об устройстве в настройках
- Скриншот краша (если произошел)
- Шаги воспроизведения ошибки
- Информация об устройстве из настроек
- iPad интерфейс требует доработки
- Постинг файлов пока не поддерживается
- Push-уведомления в beta статусе
- Требуется passcode для стабильного постинга
Это приложение разработано для сообщества mkch и распространяется на условиях открытого использования. (0BSD btw)
Автор: w^x (лейн, платон)
Контакт: mkch.pooziqo.xyz
Версия: 2.1.1-ios-alpha (Always in alpha lol)
Дата: Август 2025
Разработано с <3 на Swift
