Интеграция с Push Protocol (уведомления Web3)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с Push Protocol (уведомления Web3)
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция с Push Protocol (уведомления Web3)

Email и push-уведомления в dApp — стандарт Web2. В Web3 проблема: у пользователя нет email-адреса, только кошелёк. Push Protocol (ранее EPNS) решает это: уведомления привязаны к адресу кошелька, пользователь подписывается на каналы и получает уведомления в Push-совместимых приложениях или через SDK прямо в dApp.

Создание канала и отправка уведомлений

Канал — on-chain сущность, задеплоенная в Ethereum или Polygon. Создание через Push SDK или UI. После создания — отправка уведомлений через backend SDK:

import { PushAPI, CONSTANTS } from '@pushprotocol/restapi';
import { ethers } from 'ethers';

const signer = new ethers.Wallet(process.env.CHANNEL_PRIVATE_KEY!);
const user = await PushAPI.initialize(signer, {
    env: CONSTANTS.ENV.PROD,
});

// Отправить уведомление конкретному адресу
await user.channel.send(['0xUserAddress...'], {
    notification: {
        title: 'Позиция под ликвидацией',
        body: 'Ваш health factor упал до 1.05. Пополните залог.',
    },
    payload: {
        title: 'Liquidation Warning',
        body: 'Health factor: 1.05',
        cta: 'https://app.yourprotocol.com/positions',
        img: 'https://cdn.yourprotocol.com/alert.png',
    },
    channel: `eip155:1:${CHANNEL_ADDRESS}`,
    type: 3, // Targeted (конкретный адрес)
});

Типы уведомлений: 1 — Broadcast (всем подписчикам), 3 — Targeted (один адрес), 4 — Subset (список адресов).

Подписка пользователя в dApp

import { useAccount } from 'wagmi';
import { PushAPI, CONSTANTS } from '@pushprotocol/restapi';

const { address } = useAccount();

const subscribe = async () => {
    // Пользователь подписывает сообщение (бесплатно, без транзакции)
    const pushUser = await PushAPI.initialize(signer, { env: CONSTANTS.ENV.PROD });
    await pushUser.notification.subscribe(`eip155:1:${CHANNEL_ADDRESS}`);
};

// Получение уведомлений для отображения в dApp
const { data: notifications } = useQuery({
    queryKey: ['push-notifications', address],
    queryFn: () => PushAPI.user.getFeeds({
        user: `eip155:1:${address}`,
        env: CONSTANTS.ENV.PROD,
    }),
    enabled: !!address,
    refetchInterval: 30_000,
});

Типичные use cases

  • DeFi: уведомление при приближении к ликвидации, исполнении limit order, окончании lock периода
  • NFT: продажа листинга, получение bid, mint открыт
  • DAO: новый пропозал, голосование заканчивается через 24 часа, результат голосования

Отправка уведомлений из backend — через cron job или событие от on-chain listener. Например: indexer поймал событие HealthFactorLow → вызвать Push API для отправки targeted уведомления на адрес позиции.

Ориентиры по срокам

Создание канала + интеграция SDK в frontend (subscribe UI + отображение уведомлений) + backend отправка из event listener: 2-3 дня.