MobileMkch-iOS/README.md
2025-08-07 13:27:12 +03:00

12 KiB
Raw Blame History

MobileMkch iOS

Нативный iOS клиент для борды mkch.pooziqo.xyz

Version iOS Swift

Скриншоты

screenshots

Основные возможности

Нативный iOS интерфейс

  • Tab Bar навигация с тремя вкладками: Доски, Избранное, Настройки
  • Адаптивный дизайн для iPhone и iPad
  • Темная/светлая тема с автопереключением
  • Нативные анимации и жесты iOS
  • SwiftUI интерфейс для современного внешнего вида

росмотр контента

  • Просмотр всех досок mkch с описаниями
  • Список тредов с поддержкой сортировки по рейтингу и закрепленным
  • Детальный просмотр тредов с комментариями
  • Система файлов с поддержкой изображений и видео
  • Полноэкранный просмотр изображений с зумом и жестами
  • Компактный/обычный режим отображения для экономии места
  • Пагинация с настраиваемым размером страницы (5-20 элементов)

Система избранного

  • Добавление тредов в избранное одним тапом
  • Отдельная вкладка избранного с быстрым доступом
  • Локальное сохранение избранного между запусками
  • Управление избранным с возможностью удаления

Гибкие настройки

  • Темы: темная/светлая
  • Автообновление контента
  • Показ файлов (включение/отключение)
  • Компактный режим для экономии пространства
  • Размер страницы: от 5 до 20 элементов
  • Пагинация: включение/отключение
  • Нестабильные функции с предупреждением

Полная поддержка постинга

  • Аутентификация по ключу с тестированием подключения
  • Аутентификация по passcode для обхода капчи
  • Создание новых тредов с заголовком и текстом
  • Добавление комментариев в существующие треды
  • CSRF защита и автоматическая обработка форм
  • Автоочистка кэша после постинга

Push-уведомления (BETA)

  • Подписка на доски через интуитивные переключатели
  • Настраиваемый интервал проверки: 5 мин - 1 час
  • Фоновое обновление даже при закрытом приложении
  • Принудительная проверка новых тредов
  • Умные уведомления: "Новый тред: [название] в /доска/"
  • Тестовые уведомления в debug режиме

Оптимизации и производительность

  • Многоуровневое кэширование:
    • Доски (TTL: 10 мин)
    • Треды (TTL: 5 мин)
    • Детали тредов и комментарии (TTL: 3 мин)
    • Изображения с NSCache
  • Автоочистка кэша по таймеру
  • Оптимизация батареи для фоновых задач
  • Ленивая загрузка контента
  • Graceful error handling с retry логикой

Дополнительные функции

  • Crash Handler с детальной диагностикой
  • Debug меню (5 тапов по информации об устройстве):
    • Тест краша приложения
    • Тестовые уведомления
  • Управление кэшем:
    • Очистка кэша досок
    • Очистка кэша тредов
    • Очистка кэша изображений
    • Полная очистка
  • Информация об устройстве с детальной диагностикой
  • Сброс настроек до заводских

Установка и настройка

Системные требования

  • iOS 15.0 или новее
  • iPhone/iPad с поддержкой SwiftUI
  • Разрешение на уведомления (для push-уведомлений)

Первоначальная настройка

  1. Скачайте и установите приложение
  2. Откройте вкладку "Настройки"
  3. Настройте аутентификацию (при необходимости):
    • Введите ключ аутентификации
    • Введите passcode для постинга
    • Протестируйте подключение кнопками "Тест ключа" и "Тест passcode"

Настройка уведомлений

  1. Включите нестабильные функции в настройках
  2. Перейдите в "Настройки уведомлений"
  3. Включите уведомления и разрешите их в системных настройках
  4. Выберите интервал проверки (рекомендуется 15-30 мин)
  5. Подпишитесь на нужные доски переключателями
  6. Протестируйте кнопкой "Проверить новые треды сейчас"

Архитектура приложения

Основные компоненты

Файл Описание
MobileMkchApp.swift Точка входа приложения с crash handler
MainTabView.swift Tab Bar с навигацией и избранным
Models.swift Структуры данных (Board, Thread, Comment, etc.)
APIClient.swift HTTP клиент с CSRF и аутентификацией
Settings.swift Система настроек с JSON сериализацией
Cache.swift Многоуровневое кэширование с TTL

UI компоненты

Файл Описание
BoardsView.swift Список досок с ошибками и загрузкой
ThreadsView.swift Треды с пагинацией и избранным
ThreadDetailView.swift Детали треда с комментариями
CreateThreadView.swift Форма создания треда
AddCommentView.swift Форма добавления комментария
SettingsView.swift Настройки с debug меню
FileView.swift Просмотр файлов с полноэкранным режимом
NotificationSettingsView.swift BETA настройки уведомлений

Системные сервисы

Файл Описание
NotificationManager.swift Push-уведомления и подписки
BackgroundTaskManager.swift Фоновое обновление
CrashHandler.swift Обработка крашей
ImageLoader.swift Асинхронная загрузка изображений

API интеграция

Endpoints

  • 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 будет работать почти всегда

Версии и обновления

Версия 2.0.0-ios-alpha (Текущая)

  • Полная переработка UI на SwiftUI
  • Система избранного с локальным сохранением
  • Push-уведомления с фоновым обновлением
  • Полноэкранный просмотр изображений с жестами
  • Crash handler с детальной диагностикой
  • Многоуровневое кэширование с TTL
  • Debug меню для разработчиков
  • Компактный режим интерфейса
  • Нестабильные функции с предупреждениями

Планы развития

  • Поддержка загрузки файлов при постинге
  • Офлайн режим чтения
  • Поиск по тредам и комментариям
  • Темы оформления (кастомные цвета)
  • Статистика использования (мб и не будет, я не знаю мне лень)
  • Экспорт/импорт настроек

Технологии

Основной стек

  • SwiftUI - современный UI фреймворк
  • Combine - реактивное программирование
  • Foundation - базовые возможности
  • UserNotifications - push-уведомления
  • BackgroundTasks - фоновое обновление

Архитектурные паттерны

  • MVVM с ObservableObject
  • Dependency Injection через EnvironmentObject
  • Repository Pattern для API и кэша
  • Observer Pattern для уведомлений

Поддержка и вклад

Сообщение об ошибках

  1. Debug информация: 5 тапов по информации об устройстве в настройках
  2. Скриншот краша (если произошел)
  3. Шаги воспроизведения ошибки
  4. Информация об устройстве из настроек

Известные ограничения

  • iPad интерфейс требует доработки
  • Постинг файлов пока не поддерживается
  • Push-уведомления в beta статусе
  • Требуется passcode для стабильного постинга

Лицензия

Это приложение разработано для сообщества mkch и распространяется на условиях открытого использования. (0BSD btw)


Автор: w^x (лейн, платон)
Контакт: mkch.pooziqo.xyz
Версия: 2.0.0-ios-alpha (Always in alpha lol)
Дата: Январь 2025

Разработано с <3 на Swift