docs(rustore-spec): добавить кнопку SOVA (дип-линк, только sideload)

This commit is contained in:
nk
2026-06-08 13:38:23 +03:00
parent 56d96382fa
commit 6159cc13cc

View File

@@ -175,6 +175,36 @@ api.radiola.nexaweb.su {
В sideload остаётся как сейчас. Код тестирования (`SettingsViewModel.startTesting`, В sideload остаётся как сейчас. Код тестирования (`SettingsViewModel.startTesting`,
`StationTestStatus`) остаётся в `main`, просто не показывается в store. `StationTestStatus`) остаётся в `main`, просто не показывается в store.
## H. Кнопка дип-линк-поиска в SOVA V RE (только sideload)
SOVA V RE — неофициальный мод клиента ВК (на базе VK 6.12), которым пользователь
пользуется лично. **В RuStore-сборку кнопку НЕ включаем** (риск отклонения за
продвижение пиратского мода) — показываем только в sideload-флейворе (тем же
flavor-механизмом, что и dev-tools/тестер: фильтруем список сервисов).
### Архитектура (расширение дип-линков)
Сейчас `DeeplinkService` = `(serviceId, displayName, searchUrlTemplate)`,
`DeeplinkNavigator.openSearch` строит web-URL и открывает через системный chooser.
Для стороннего приложения нужно открывать **напрямую в его пакете**:
- Добавить в `DeeplinkService` опциональное поле `packageName: String? = null`.
- `DeeplinkNavigator`: если `packageName != null` и приложение установлено —
`intent.setPackage(packageName)` (открыть прямо в нём); если не установлено —
фолбэк (chooser/web ВК) или Toast «Установите SOVA». Для остальных сервисов
поведение не меняется (`packageName == null`).
- Добавить запись `SOVA("sova", "SOVA", <url>, packageName=<пакет SOVA>)`.
### Что уточнить на этапе реализации (нужен телефон по adb)
- **Точный пакет** SOVA (`pm list packages -3` на телефоне). Как мод VK 6.12 —
вероятно `com.vkontakte.android` или вариант.
- **Какой URL/схему** SOVA перехватывает как поиск музыки (мод VK обычно ловит
`https://vk.com/...` и `vk://`). Проверить на устройстве, что кнопка реально
открывает поиск в SOVA, а не главный экран. Шаблон поиска подобрать по факту.
### Гейтинг по флейвору
В store-сборке `SOVA` отфильтровывается из списка сервисов (и в настройках, и в
ряду кнопок плеера). В sideload — присутствует. Механизм — `BuildConfig` флаг
флейвора (как у dev-tools).
## Вне области (YAGNI / не сейчас) ## Вне области (YAGNI / не сейчас)
- AAB-сборка (подаём APK). - AAB-сборка (подаём APK).
- proguard/minify (оставляем выключенным). - proguard/minify (оставляем выключенным).
@@ -206,6 +236,8 @@ api.radiola.nexaweb.su {
5. Код: gate `checkUpdate()` за `BuildConfig.ENABLE_SELF_UPDATE`; baseUrl/BASE_URL → https. 5. Код: gate `checkUpdate()` за `BuildConfig.ENABLE_SELF_UPDATE`; baseUrl/BASE_URL → https.
Чистка настроек: убрать тумблер «Запись эфира» (G1); тестер станций под Чистка настроек: убрать тумблер «Запись эфира» (G1); тестер станций под
`BuildConfig.SHOW_DEV_TOOLS` (G2). `BuildConfig.SHOW_DEV_TOOLS` (G2).
Кнопка SOVA (H): расширить `DeeplinkService`/`DeeplinkNavigator` (packageName),
добавить SOVA, отфильтровать в store. Пакет/схему уточнить на телефоне.
6. Keystore: пользователь генерирует, кладёт `keystore.properties`. 6. Keystore: пользователь генерирует, кладёт `keystore.properties`.
7. Сборка `storeRelease`, проверка критериев готовности. 7. Сборка `storeRelease`, проверка критериев готовности.
8. Текст политики конфиденциальности. 8. Текст политики конфиденциальности.