# Веб-пуши для AMP

<Aside type="caution">
**AMP-страницы поддерживают мобильные веб-пуши только на устройствах Android.**
</Aside>


AMP — это фреймворк с открытым исходным кодом от Google для разработки ориентированных на пользователя веб-страниц, которые загружаются почти мгновенно.

Интегрируя компонент AMP Web Push в ваши AMP-страницы, вы можете взаимодействовать с вашими клиентами, когда они просматривают веб-страницы в своих мобильных браузерах.

## Интеграция AMP на ваш сайт

**Добавьте следующие файлы в** **корневой каталог** **вашего сайта**:

1. [helper-iframe.html](https://cdn.pushwoosh.com/amp-web-push/helper-iframe.html)
2. [service-worker.js](https://cdn.pushwoosh.com/amp-web-push/service-worker.js)
3. [permission-dialog.html](https://cdn.pushwoosh.com/amp-web-push/permission-dialog.html)

В файле `permission-dialog.html` есть два настраиваемых блока:

```txt title="Подписаться на пуш-уведомления"
<div class="subscribe" permission="default">
    <p class="message">
    {Subscribe to push notifications}
    </p>
</div>
```

```txt title="Разблокировать пуш-уведомления"
<div class="blocked" permission="denied">
    <p class="message">
    {Unblock push notifications in your browser settings}
    </p>
</div>
```

Где:

*   `{Subscribe to push notifications}` — CTA-сообщение, предлагающее пользователям разрешить пуш-уведомления;
*   `{Unblock push notifications in your browser settings}` — CTA-сообщение, предлагающее пользователям разблокировать пуш-уведомления в настройках браузера (в случае, если пуш-уведомления явно заблокированы пользователем).

Чтобы настроить внешний вид диалогового окна запроса разрешений, добавьте следующий код в тег `<head>`:

```
 <style amp-custom>
    .subscribe {
        /* ваш css здесь */
    }

    .blocked {
        /* ваш css здесь */
    }
</style>
```

<img src="/web-push-notifications-amp-web-push-1.webp" alt="Диалоговое окно запроса разрешений"/>

## Интеграция веб-пушей AMP

Чтобы внедрить веб-пуш-уведомления на AMP-страницы, добавьте компонент [amp-web-push](https://amp.dev/documentation/components/amp-web-push?format=websites) на каждую AMP-страницу.

Для этого выполните два шага:

**1. Добавьте следующий скрипт в тег `<head>`**:

```txt title="amp-web-push"
<head>
    ...
    <script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
    ...
</head>
```

**2. Добавьте следующий код в тег `<body>`**:

```txt title="amp-web-push"
<body>
    <amp-web-push
    id="amp-web-push"
    layout="nodisplay"
    helper-iframe-url="https://{domain}/helper-iframe.html"
                 permission-dialog-url="https://{domain}/permission-dialog.html"
service-worker-url="https://{domain}/service-worker.js?applicationCode={applicationCode}&senderId={senderId}&applicationServerKey={applicationServerKey}"
    ></amp-web-push>
    ...
    <!-- Начало кнопки "Подписаться на уведомления" -->
    <amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
    <button class="subscribe" on="tap:amp-web-push.subscribe">
        {Text on Subscribe button}
    </button>
    </amp-web-push-widget>
    <!-- Конец кнопки "Подписаться на уведомления" -->
    <!-- Начало кнопки "Отписаться от уведомлений" -->
    <amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
    <button class="unsubscribe" on="tap:amp-web-push.unsubscribe">
        {Text on Unsubscribe button}
    </button>
    </amp-web-push-widget>
    <!-- Конец кнопки "Отписаться от уведомлений" -->
    <!-- Начало резервного блока, если пользователь блокирует уведомления -->
    <amp-web-push-widget visibility="blocked" layout="fixed" width="250" height="80">
    <div class="fallback">
            {Fallback if a user blocks notifications}
        </div>
    </amp-web-push-widget>
    <!-- Конец резервного блока, если пользователь блокирует уведомления -->
...
</body>
```

Где:

*   `{domain}` — URL вашего сайта,
*   `{applicationCode}` — код вашего приложения Pushwoosh,
*   `{senderId}` — Sender ID из вашей консоли Firebase,
*   `{applicationServerKey}` — Server Key из вашей консоли Firebase,
*   `{Text on Subscribe button}` — текст на кнопке, включающей пуш-уведомления,
*   `{Text on Unsubscribe button}` — текст на кнопке, отключающей пуш-уведомления,
*   `{Fallback if a user blocks notifications}` — резервный блок, который отображается, когда пользователь блокирует пуш-уведомления.

Чтобы **настроить стиль кнопок**, добавьте следующий код в тег **&lt;head&gt;**:

```txt title="css"
<style amp-custom>
    amp-web-push-widget button.subscribe {
        /* ваш css здесь */
    }
    amp-web-push-widget button.unsubscribe {
        /* ваш css здесь */
    }
    amp-web-push-widget .fallback {
        /* ваш css здесь */
    }
</style>
```

Чтобы проверить, все ли вы сделали правильно, воспользуйтесь [https://search.google.com/test/amp](https://search.google.com/test/amp)\