README: раздел про RuStore Push и структура классов пуша
This commit is contained in:
44
README.md
44
README.md
@@ -12,6 +12,7 @@
|
|||||||
- **Автоопределение дня недели** — будни/выходные.
|
- **Автоопределение дня недели** — будни/выходные.
|
||||||
- **Полное расписание** — по кнопке раскрывается вся таблица
|
- **Полное расписание** — по кнопке раскрывается вся таблица
|
||||||
(4 остановки: Кандалакша · ПЗ→Зашеек · Зашеек · ПЗ→Кандалакша).
|
(4 остановки: Кандалакша · ПЗ→Зашеек · Зашеек · ПЗ→Кандалакша).
|
||||||
|
- **Пуш-уведомления** — через RuStore Push, см. раздел ниже.
|
||||||
- Тёмная тема, живые часы МСК, подсветка ближайших рейсов (< 15 мин).
|
- Тёмная тема, живые часы МСК, подсветка ближайших рейсов (< 15 мин).
|
||||||
|
|
||||||
## Технические данные
|
## Технические данные
|
||||||
@@ -24,6 +25,42 @@
|
|||||||
| Сборка | Gradle 8.6 + AGP 8.2.2 |
|
| Сборка | Gradle 8.6 + AGP 8.2.2 |
|
||||||
| Подпись | keystore `~/bus127.keystore` (alias `bus127`) |
|
| Подпись | keystore `~/bus127.keystore` (alias `bus127`) |
|
||||||
|
|
||||||
|
## Пуш-уведомления (RuStore)
|
||||||
|
|
||||||
|
Приложение интегрировано с [RuStore Push SDK](https://www.rustore.ru/help/sdk/push-notifications)
|
||||||
|
(аналог Firebase Cloud Messaging). Проект в консоли RuStore привязан к пакету
|
||||||
|
`ru.ua1zbe.bus127` и подписи release-keystore; пока подпись не меняется, перерегистрация не нужна.
|
||||||
|
|
||||||
|
Для доставки на устройстве должен быть установлен и авторизован **RuStore**.
|
||||||
|
|
||||||
|
Рассылка выполняется с сервера через API RuStore:
|
||||||
|
|
||||||
|
```
|
||||||
|
POST https://vkpns.rustore.ru/v1/projects/{project_id}/messages:send
|
||||||
|
Authorization: Bearer {service-token}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"message": {
|
||||||
|
"token": "{push-token устройства}",
|
||||||
|
"notification": {
|
||||||
|
"title": "Автобус 127",
|
||||||
|
"body": "Ближайший рейс через 5 мин"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `project_id` и `service-token` берутся в консоли RuStore: **Push-уведомления > Проекты**.
|
||||||
|
В приложение попадает только `project_id`; сервисный токен в APK не хранится.
|
||||||
|
- `push-token` устройства приходит в `onNewToken` (лог `RuStorePush`) и сохраняется
|
||||||
|
в `SharedPreferences` `bus127_push`.
|
||||||
|
- Приложение подписывается на топик `bus127` — топик должен существовать в консоли.
|
||||||
|
Сообщения без поля `topic` приходят всем устройствам проекта.
|
||||||
|
- Если в запросе есть секция `notification` — уведомление показывает сам SDK;
|
||||||
|
если переданы только `data` (`title`/`body`, необязательный `url`) — приложение
|
||||||
|
показывает его само и открывает ссылку по клику.
|
||||||
|
|
||||||
## Структура
|
## Структура
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -32,7 +69,12 @@ apk-webview/ # исходники APK (WebView)
|
|||||||
│ ├── build.gradle
|
│ ├── build.gradle
|
||||||
│ └── src/main/
|
│ └── src/main/
|
||||||
│ ├── AndroidManifest.xml
|
│ ├── AndroidManifest.xml
|
||||||
│ ├── java/ru/ua1zbe/bus127/MainActivity.java
|
│ ├── java/ru/ua1zbe/bus127/
|
||||||
|
│ │ ├── MainActivity.java # WebView + запрос разрешения на уведомления
|
||||||
|
│ │ ├── Bus127App.java # инициализация RuStore Push SDK
|
||||||
|
│ │ ├── PushMessagingService.java # приём уведомлений
|
||||||
|
│ │ ├── PushIntents.java # переход по клику
|
||||||
|
│ │ └── push/PushStore.java # хранение push-токена
|
||||||
│ ├── assets/index.html # интерфейс (HTML/JS)
|
│ ├── assets/index.html # интерфейс (HTML/JS)
|
||||||
│ └── res/values/strings.xml
|
│ └── res/values/strings.xml
|
||||||
└── settings.gradle, build.gradle, gradle.properties
|
└── settings.gradle, build.gradle, gradle.properties
|
||||||
|
|||||||
Reference in New Issue
Block a user