Files
ios/PLAN.md
T
ros 6174be5610
iOS build and tests / simulator (push) Has been cancelled
Add native SwiftUI player and macOS CI
2026-09-10 09:11:55 +03:00

4.9 KiB
Raw Blame History

MusicBridge iOS — план

Обновлено: 2026-09-10. Пользователь разрешил начать нативное iOS-приложение. Репозиторий: C:/Users/areso/iOS MusicBridge; origin — dev.yukinoki.ru/musicbridge/ios. Windows-агент — соседний проект C:/Users/areso/MusicBridge/MusicBridge.Agent.

Правила проекта

  • SwiftUI, без веб-клиента. Музыка играет на Windows.
  • Сверять контракт с Windows PROTOCOL.md; не менять серверный протокол молча.
  • Токены только в Keychain, проверка сертификата до сопряжения, запрет redirect.
  • Не повторять команды автоматически после потери ответа.
  • Не называть проверки Python сборкой Swift или запуском XCTest.
  • После этапа обновлять этот файл: реализация, проверки, ограничения, следующий шаг.

Реализовано в исходниках, требует Xcode-проверки

  • Проект Xcode, shared scheme, iOS 17+, SwiftUI, без внешних зависимостей.
  • Модели состояния и команд v1; валидация HTTPS IPv4 домашней сети и QR-строки.
  • Ручное сопряжение, импорт приглашения, проверка SHA-256 DER-сертификата.
  • Keychain: адрес, отпечаток и bearer-токен; удаление локального сопряжения.
  • HTTPS-команды, обложка до 2 МиБ, поток WSS с ограничением размера сообщения.
  • Экран трека, возможности кнопок, прогресс, перемотка, громкость, mute.
  • Переподключение 1…16 секунд, watchdog потока, отключение в фоне, возврат.
  • XCTest исходники: диапазоны адресов, отказ опасным URL, отпечатки, QR/срок/коды, JSON Windows, расчёт позиции, формат команд.
  • GitHub Actions: сборка/тесты симулятора, логи, xcresult и артефакт приложения.

Проверки и следующие шаги

  • Первый успешный xcodebuild + XCTest на macOS. На текущем Windows Swift/Xcode нет.
  • Подключить выбранный пользователем GitHub remote и запустить Actions.
  • Интеграционные тесты TLS: верный/чужой/истёкший сертификат, redirect, WSS.
  • Проверить 401 и отзыв устройства, Keychain после переустановки/блокировки.
  • Настроить подпись и установку на физический iPhone.
  • Проверить LAN/плеер/команды/обложку с настоящим Windows-агентом.
  • Камера для QR, системные разрешения и обработка отказа.
  • Bonjour-поиск _musicbridge._tcp, список ПК и обновление адреса при смене IP.
  • Улучшить ошибки сопряжения по серверным кодам; повтор загрузки обложки после 404.
  • Иконка приложения, визуальная проверка разных размеров экрана и Dynamic Type.
  • Live Activities / Dynamic Island / App Intents — отдельный последующий этап.

Ограничения: хранится один ПК; при смене его IP пока нужно повторное сопряжение. Нет фонового воспроизведения, App Store/TestFlight и подписанной IPA. Потеря ответа на успешное сопряжение может оставить устройство на ПК: удалить его в окне агента перед повтором. Облачный runner не имеет доступа к домашней LAN.

Карта

  • MusicBridge/Models.swift: контракт и проверка входных данных.
  • BridgeClient.swift: сертификат, HTTPS, WSS, ограничения ответов.
  • KeychainStore.swift: хранение сопряжения.
  • PlayerStore.swift: состояние, команды, жизненный цикл и восстановление.
  • ContentView.swift: подключение и плеер.
  • MusicBridgeTests/: XCTest и пример Windows JSON.
  • tools/: генератор проекта, структурные проверки, выбор симулятора для CI.
  • .github/workflows/ios.yml: CI на macOS.