12 KiB
12 KiB
MobileMkch iOS
Нативный iOS клиент для борды mkch.pooziqo.xyz
Скриншоты
Основные возможности
Нативный 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-уведомлений)
Первоначальная настройка
- Скачайте и установите приложение
- Откройте вкладку "Настройки"
- Настройте аутентификацию (при необходимости):
- Введите ключ аутентификации
- Введите passcode для постинга
- Протестируйте подключение кнопками "Тест ключа" и "Тест passcode"
Настройка уведомлений
- Включите нестабильные функции в настройках
- Перейдите в "Настройки уведомлений"
- Включите уведомления и разрешите их в системных настройках
- Выберите интервал проверки (рекомендуется 15-30 мин)
- Подпишитесь на нужные доски переключателями
- Протестируйте кнопкой "Проверить новые треды сейчас"
Архитектура приложения
Основные компоненты
| Файл | Описание |
|---|---|
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 для уведомлений
Поддержка и вклад
Сообщение об ошибках
- Debug информация: 5 тапов по информации об устройстве в настройках
- Скриншот краша (если произошел)
- Шаги воспроизведения ошибки
- Информация об устройстве из настроек
Известные ограничения
- iPad интерфейс требует доработки
- Постинг файлов пока не поддерживается
- Push-уведомления в beta статусе
- Требуется passcode для стабильного постинга
Лицензия
Это приложение разработано для сообщества mkch и распространяется на условиях открытого использования. (0BSD btw)
Автор: w^x (лейн, платон)
Контакт: mkch.pooziqo.xyz
Версия: 2.0.0-ios-alpha (Always in alpha lol)
Дата: Январь 2025
Разработано с <3 на Swift
