PD Документация ← На главную

In-App уведомления

Доставляйте уведомления прямо внутри своего приложения — без внешних сервисов.

Настройка не нужна

In-App каналу не нужны учётные данные и внешняя настройка. Просто дайте ему имя и сохраните.

Как это работает

PushData хранит in-app уведомления в своей базе — по одному элементу inbox на контакт. Ваш фронтенд получает и показывает их через публичные эндпоинты inbox с публичным (pk_) ключом приложения.

SEND-шаг воркфлоу / канальная отправка

PushData сохраняет элемент inbox для контакта

Ваш фронтенд опрашивает inbox

Контакт адресуется вашим id пользователя (user_id = externalId контакта).

API inbox

Все вызовы принимают Authorization: Public pk_ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ и идентифицируют пользователя параметром user_id. При включённой проверке идентичности добавьте X-Identity-Hash (см. Аутентификация).

bash
# Последние элементы (limit ≤ 200, по умолчанию 20); unread_only=true для списка непрочитанных
GET /api/v1/public/inbox?user_id=user-123&unread_only=true&limit=20
# → { "items": [ { "id", "notification_id", "title", "body", "data", "deep_link", "read", "read_at", "inserted_at" } ] }

# Счётчик непрочитанных
GET /api/v1/public/inbox/unread_count?user_id=user-123
# → { "unread_count": 3 }

# Отметить один элемент прочитанным
POST /api/v1/public/inbox/ITEM_ID/read      { "user_id": "user-123" }

# Отметить всё прочитанным
POST /api/v1/public/inbox/read_all          { "user_id": "user-123" }
# → { "marked_read": 3 }

Неизвестный user_id даёт пустой inbox, а не ошибку.

Получение уведомлений в приложении

ts
const API = 'https://api.pushdata.ru'
const headers = { 'Authorization': 'Public pk_ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ', 'Content-Type': 'application/json' }

const { items } = await fetch(`${API}/api/v1/public/inbox?user_id=user-123&limit=20`, { headers }).then(r => r.json())

await fetch(`${API}/api/v1/public/inbox/${items[0].id}/read`, {
  method: 'POST',
  headers,
  body: JSON.stringify({ user_id: 'user-123' }),
})

deep_link — это то, что отправка положила в data.deepLink; проверяйте его перед переходом (только http(s) или схема вашего приложения): это данные, заданные при отправке.

Типичные сценарии

  • Колокольчик / inbox уведомлений в вашем дашборде
  • Toast-оповещения по событиям бэкенда
  • Ленты активности