56 lines
4.4 KiB
Markdown
56 lines
4.4 KiB
Markdown
# MusicBridge для iPhone
|
|
|
|
Нативный пульт на SwiftUI для MusicBridge.Agent на Windows. Звук играет на ПК.
|
|
Минимальная версия iOS — 17. Зависимостей Swift Package/CocoaPods нет.
|
|
|
|
## Первый вариант
|
|
|
|
- Сопряжение по HTTPS-адресу домашнего ПК, SHA-256 сертификата и коду.
|
|
- Импорт строки `musicbridge://pair?data=…` из QR агента; камера пока не реализована.
|
|
- Проверка закреплённого DER-сертификата до отправки кода и при следующих соединениях.
|
|
- Хранение адреса, отпечатка и токена в Keychain только на этом устройстве.
|
|
- Название, исполнитель, обложка, позиция, play/pause, следующий/предыдущий трек,
|
|
перемотка ползунком, системная громкость и mute.
|
|
- WSS-состояние, переподключение с задержкой, остановка сети в фоне и восстановление
|
|
при возврате. Команды автоматически не повторяются.
|
|
|
|
**Статус:** исходники первого варианта. Сборка Swift и запуск на устройстве ещё
|
|
не подтверждены. Windows не содержит Xcode. Следующий обязательный шаг — первый
|
|
прогон GitHub Actions или Xcode на Mac и исправление обнаруженных ошибок.
|
|
|
|
## Сборка на Mac
|
|
|
|
1. Открыть `MusicBridge.xcodeproj` в Xcode 16 или новее.
|
|
2. Выбрать схему MusicBridge и симулятор iPhone. Run запускает приложение,
|
|
Test выполняет `MusicBridgeTests`.
|
|
3. Для физического iPhone выбрать свою Team в Signing & Capabilities. Сертификаты
|
|
и provisioning profiles не хранить в Git. Bundle ID при необходимости сменить
|
|
в `tools/generate_project.py`, затем повторно сгенерировать проект.
|
|
4. На ПК запустить агент с `--tray --lan`, открыть сопряжение. В приложении
|
|
ввести адрес, отпечаток и код с экрана ПК. Разрешить доступ к локальной сети.
|
|
|
|
Проект уже сгенерирован и включён в Git; Python для обычной сборки не требуется.
|
|
После добавления Swift-файлов выполнить `python3 tools/generate_project.py`.
|
|
Структурная проверка на Windows/macOS: `python tools/validate_project.py`.
|
|
|
|
## GitHub Actions
|
|
|
|
`.github/workflows/ios.yml` собирает приложение и выполняет XCTest на `macos-15`
|
|
при push в main, pull request или ручном запуске. Сохраняет лог, `.xcresult`
|
|
и ZIP приложения **для симулятора**, который нельзя установить на физический iPhone.
|
|
Apple ID и сертификаты для этой проверки не требуются. Первый облачный запуск пока
|
|
не выполнен: нужен GitHub-репозиторий и авторизованный доступ к нему.
|
|
|
|
Основной origin: `ssh://git@dev.yukinoki.ru:2222/musicbridge/ios.git`.
|
|
Для Actions можно добавить отдельный remote `github`, сохранив основной origin.
|
|
Код автоматически не зеркалируется между серверами.
|
|
|
|
## Источники
|
|
|
|
- [Apple: проверка доверия сервера](https://developer.apple.com/documentation/Foundation/performing-manual-server-trust-authentication)
|
|
- [Apple: доступ к локальной сети](https://developer.apple.com/documentation/technotes/tn3179-understanding-local-network-privacy)
|
|
- [GitHub: macOS runners](https://docs.github.com/en/actions/reference/runners/github-hosted-runners)
|
|
- [GitHub: лимиты и оплата Actions](https://docs.github.com/en/billing/concepts/product-billing/github-actions)
|
|
|
|
План и ограничения — в `PLAN.md`. Копия протокола агента — в `PROTOCOL.md`.
|