Skip to content

Repository files navigation

Private Music

Private Music — неофициальный клиент VK Музыки для iPhone, написанный на SwiftUI. Проект развивает decoder-dev.

Возможности

  • вход в VK через изолированное веб-окно и хранение сессии в Keychain;
  • главная с историей, рекомендациями, миксами и плейлистами VK;
  • единый поиск с предсказуемой навигацией на всех поддерживаемых версиях iOS;
  • поиск треков и исполнителей с историей запросов;
  • медиатека, плейлисты, очередь и восстановление воспроизведения;
  • перестановка следующих треков в очереди и очистка предстоящих треков без остановки текущего; очистка отключает автодобавление до новой очереди;
  • поиск по всей медиатеке с догрузкой страниц и повтором при ошибке;
  • офлайн-загрузка треков и плейлистов, уже сохранённые локальные файлы воспроизводятся без сети;
  • edge-to-edge плеер без системных чёрных полей, фоновое аудио, экран блокировки, AirPlay и Bluetooth;
  • companion-пульт для Apple Watch (watchOS 10+): обложка, прогресс, очередь, лайк, пауза/воспроизведение, предыдущий и следующий трек через WatchConnectivity; последнее состояние остаётся на часах, если iPhone временно недоступен;
  • пауза при снятии наушников / AirPods по Responding to audio route changes (routeChangeNotification, oldDeviceUnavailable) и Automatic Ear Detection;
  • тексты песен из VK, LRCLIB и Genius;
  • ручная прокрутка текста песни с возвратом к текущей строке и возможностью отключить автопрокрутку;
  • 10-полосный эквалайзер и настройки воспроизведения;
  • отправка настоящего MP3- или M4A-файла через системное меню «Поделиться» без подмены ссылкой — основной способ сохранить трек в текущей сборке;
  • чёрная и белая темы;
  • единая панель навигации Liquid Glass и мини-плеер, которые резервируют место над контентом на iOS 17–27;
  • интерфейс на русском и английском языках;
  • Privacy Manifest без аналитики и отслеживания.
  • готовность к сборке на Xcode 27 / iOS 27 SDK: scene lifecycle (TN3187) объявлен в Info.plist и AppDelegate.

Сборка

Для локальной сборки нужен macOS с Xcode 27 и XcodeGen:

brew install xcodegen
git clone https://github.com/decoder-dev/PrivateMusic2.git
cd PrivateMusic2
bash ./scripts/bootstrap.sh
open PrivateMusic.xcodeproj

CI прогоняет unit-тесты и собирает watchOS-пульт на Xcode 26.5, затем собирает релизный IPA на GitHub-hosted runner xcode-27 с iOS 27 SDK.

Для установки на физический iPhone укажите свою команду разработчика в Signing & Capabilities. Репозиторий также собирает неподписанный IPA через GitHub Actions. Такой архив перед установкой необходимо подписать собственным сертификатом: сначала вложенный Watch bundle, затем приложение iPhone. Для companion-приложения нужны два App ID и provisioning profile одной команды: com.dec.privatemusic2.watchkitapp и com.dec.privatemusic2. Сторонний подписыватель должен сохранить и подписать PlugIns/PrivateMusicWatch.app; подпись только внешнего iPhone-приложения установит телефонную версию без версии для часов. При включённой настройке Watch → «Основные» → «Автоустановка приложений» companion устанавливается автоматически, иначе он появляется в Watch → «Доступные приложения».

Структурные проверки можно запустить на Windows, Linux или macOS:

python scripts/validate_project.py
python scripts/validate_localizations.py

Важно

Символы для диагностики крэшей

Release генерирует dSYM для iPhone и Apple Watch. CI сверяет UUID каждого бинарника приложения с символами и публикует PrivateMusic-VERSION-SHA-dSYMs.zip вместе с IPA. В ZIP находится build-manifest.json с коммитом, версиями и UUID. Выбирайте символы по UUID из отчёта о крэше: одинаковая версия приложения не гарантирует одинаковую сборку. Архив dSYM не нужно устанавливать на iPhone. Ручной запуск workflow на main также публикует пререлиз после тестов. Уже опубликованные версии не перезаписываются: повторная сборка сохраняется только в Actions artifacts. Для нового выпуска нужно поднять версию в project.yml.

Private Music не содержит паролей, пользовательских токенов или чужих client_secret. Приватные методы VK Музыки не являются публичным стабильным API и могут измениться. Используйте только собственную учётную запись и не публикуйте полученный токен.

Проект не связан с VK и не распространяет музыкальные файлы. Экспорт работает только для потока, доступ к которому уже получен текущей пользовательской сессией. Офлайн-загрузка поддерживает как прямые аудиофайлы, так и HLS через системный загрузчик AVFoundation. HLS-пакет предназначен только для локального воспроизведения: его нельзя простым переименованием превратить в MP3. Поэтому «Поделиться» отправляет прямой MP3 либо экспортирует доступный незашифрованный поток в M4A. Защищённый DRM-поток не обходится и не маскируется под аудиофайл.

About

Private Music — неофициальный SwiftUI-клиент VK Музыки с фоновым плеером, текстами, эквалайзером и Liquid Glass.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages