Создать APK бесплатно

Уведомления

AppMint Push — уведомляйте своих пользователей

Отправляйте уведомления всем, кто установил ваше приложение, прямо из AppMint в вашем собственном проекте Firebase — расписание, правка после отправки, отмена, глубокие ссылки

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

AppMint Push отправляет уведомления всем, кто установил ваше приложение, изнутри AppMint — отправка сейчас, расписание, правка после отправки, отмена, глубокие ссылки.

Каждое сообщение можно оформить: 8 шаблонов, ваш цвет, до 3 кнопок, каждая из которых открывает свою страницу, выбор звука и всплывающего окна, а также нативный баннер, карточка, панель или полный экран внутри приложения, пока оно открыто. Живой предпросмотр показывает его точно так, как увидят телефоны пользователей.

Он работает в ВАШЕМ СОБСТВЕННОМ проекте Firebase: ваши пользователи, ваш проект, никаких общих лимитов, и ничего вашего не размещается в AppMint. Firebase Cloud Messaging бесплатен и не ограничивает число сообщений.

Вам нужны два файла из этого проекта — google-services.json (для сборки) и ключ сервисного аккаунта (для отправки). Следующие шаги дают оба. Работает со всеми режимами сборки: сайт, ZIP, HTML и ИИ.

AppMint Push и OneSignal — альтернативы друг другу: включение одного отключает другой.

2Создайте проект Firebase#

Откройте Firebase Console и нажмите «Add project» (или откройте уже имеющийся проект). Бесплатного проекта Firebase достаточно — для уведомлений оплата не нужна.

Один проект может объединять несколько ваших приложений.

3Добавьте приложение и скачайте google-services.json#

В вашем проекте Firebase:

  • Нажмите «Add app» и выберите Android
  • Введите имя пакета ТОЧНО так, как оно задано в мастере AppMint (например, com.yourname.yourapp) — при несоответствии уведомления никогда не приходят, и AppMint отклоняет сборку
  • Нажмите «Register app» и скачайте google-services.json
  • Остальные шаги SDK можно пропустить — AppMint сделает их сам

4Включите и загрузите файл#

В карточке Push-уведомлений мастера сборки:

  • Включите «AppMint Push»
  • Нажмите «Upload google-services.json» и выберите файл из предыдущего шага

Мастер проверяет, что файл содержит имя вашего пакета. Затем соберите APK как обычно — во время сборки ваше приложение регистрируется для push в вашем проекте.

Пользователям достаточно установить приложение и один раз открыть его. На Android 13+ их просят разрешить уведомления после загрузки первого экрана.

Шаблоны, кнопки и стили внутри приложения требуют приложения, собранного в этой версии AppMint или новее. Старая сборка по-прежнему получает каждое сообщение — она показывает его в простом стиле, как всегда.

5Загрузите ключ сервисного аккаунта (один раз)#

AppMint отправляет через ваш проект, поэтому ему нужен ключ от него — тот же файл, который просит OneSignal.

В Firebase Console:

  • ⚙ Project settings → вкладка «Service accounts»
  • Нажмите «Generate new private key» и подтвердите — скачается файл JSON

В AppMint: Home > Notifications → выберите ваше приложение → «Upload key» → выберите этот JSON.

AppMint проверяет ключ тестовой отправкой в ваш проект, прежде чем сохранить его (в зашифрованном виде), поэтому зелёная галочка означает, что следующая отправка действительно уйдёт. Одна загрузка на приложение; пересборка приложения не требует загружать его снова, если вы не меняете проекты Firebase.

⚠️ Загружайте здесь ключ СЕРВИСНОГО АККАУНТА, а не google-services.json — экран подскажет, если вы их перепутаете. Чтобы позже отозвать доступ, удалите ключ в Firebase Console.

6Отправьте первое уведомление#

В Home > Notifications:

  • Выберите ваше приложение
  • Напишите заголовок (сообщение, изображение и ссылка необязательны)
  • Проверьте карточку Живого предпросмотра
  • Нажмите «Отправить уведомление»

Его получает каждый телефон с вашим установленным приложением.

Для изображения нажмите поле «Изображение»: «Выбрать на устройстве» (до 2 МБ, PNG, JPEG или WebP) или «Вставить ссылку на изображение» (https://). Выбранное изображение загружается только когда вы нажмёте «Отправить» — до этого вы можете выбирать, заменять или удалять его сколько угодно.

7Выберите шаблон#

Оформление → Шаблон задаёт макет уведомления. Текст всегда идёт первым — картинка никогда не закрывает сообщение:

  • Автоматически — карточка с изображением, когда у сообщения есть изображение, иначе Стандартный
  • Стандартный — заголовок и всё сообщение; изображение становится маленькой миниатюрой рядом
  • Карточка с изображением — картинка НИЖЕ читаемых заголовка и сообщения
  • Баннер — карточка, залитая вашим цветом, с необязательным значком
  • Промо — значок вроде «СКИДКА 50%» и цветная кнопка (ваша первая кнопка)
  • Список — до 6 коротких строк, например, несколько обновлений заказа
  • Обратный отсчёт — живой таймер, который отсчитывает до выбранных вами даты и времени, а затем сам убирается из шторки
  • Прогресс — индикатор выполнения; «Изменить и отправить заново» с новым значением, и индикатор сдвигается на каждом телефоне без повторного звука
  • Минимальный — заголовок и одна строка, без звука, без всплывающего окна

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

8Выберите цвет#

Оформление → Цвет окрашивает значок уведомления, баннер, кнопки и обратный отсчёт. Выберите один из 9 готовых цветов или «+» для любого #RRGGBB.

Каждый готовый цвет хорошо читается и на светлых, и на тёмных телефонах. Собственный цвет проверяется по обоим: если он слишком бледный или тёмный, об этом говорит пометка под цветами, а «Исправить контраст» в окне собственного цвета подтягивает его до ближайшего подходящего оттенка, сохраняя тон. Текст на цветной кнопке или баннере автоматически делается чёрным или белым.

Используйте плитки «Светлый телефон» / «Тёмный телефон» в Живом предпросмотре, чтобы увидеть оба варианта.

9Добавьте кнопки#

Оформление → Кнопки: «+ Добавить кнопку» (до 3). У каждой есть подпись (до 24 символов) и собственная ссылка — например, «Отследить заказ» → #/orders/1042 и «Помощь» → #/support. Оставьте ссылку кнопки пустой, чтобы открывалась основная ссылка.

Кнопки показываются под уведомлением в шторке и в показе внутри приложения. В шаблоне «Промо» первая кнопка становится большой цветной кнопкой на карточке.

10Пока приложение открыто#

Оформление → «Пока приложение открыто» определяет, что видит пользователь, когда сообщение приходит, пока он пользуется вашим приложением:

  • Собственное оформление приложения (по умолчанию) — его показывает код вашего приложения (см. «Входящие в приложении» ниже)
  • Верхний баннер — выезжает сверху и сам скрывается через несколько секунд
  • Карточка по центру — карточка над затемнённым приложением с изображением, текстом и кнопками
  • Нижняя панель — та же карточка, поднимающаяся снизу
  • Во весь экран — крупное изображение с кнопками внизу

Оформление следует светлой или тёмной теме телефона, а «Назад» или нажатие снаружи закрывает его. Когда оно показано, то же сообщение не помещается ещё и в шторку — пользователь уже на него смотрит.

При «Только в приложении» (Доставка → Показывать как) сообщение, пришедшее, пока приложение закрыто, показывается при следующем открытии пользователем.

11Звук, всплывающее окно и время#

Оформление → Поведение:

  • Звук — выключите для беззвучного уведомления
  • Всплывать на экране — выключите, чтобы не появляться поверх того, чем занят пользователь (оно всё равно попадёт в шторку)
  • Автозакрытие — убирает уведомление из шторки через время от 30 секунд до 3 дней (Android 8 и новее)

Дополнительные параметры:

  • Значок / аватар — круглая картинка рядом с текстом (ссылка https://)
  • Ключ пакета — сообщения с одинаковым ключом группируются под одним заголовком
  • Ключ замены — более новое сообщение с тем же ключом ЗАМЕНЯЕТ старое на телефоне и во входящих, например, счёт матча в реальном времени

Пользователи также могут настроить звук по типам в настройках уведомлений Android для вашего приложения.

Собственный звук: в пошаговом мастере Интеграция → Push-уведомления → Звук уведомления (MP3, OGG, WAV, M4A, AAC, FLAC или Opus, до 1 МБ и 30 секунд). Он звучит для каждого сообщения, отправленного со включённым звуком. Установленные приложения получают его с обновлением, которое его несёт; каждый пользователь по-прежнему может изменить его в настройках уведомлений Android.

12Проверьте, сохраните и используйте повторно#

  • Живой предпросмотр — плитки «Свёрнуто», «Развёрнуто» и «В приложении» на светлом или тёмном телефоне, нарисованные тем же кодом, который выполняют телефоны ваших пользователей
  • «Проверить на этом телефоне» — показывает сообщение только на ВАШЕМ телефоне, как настоящее уведомление или как показ в приложении поверх экрана «Уведомления». Пользователям ничего не отправляется
  • Сохранённые шаблоны (значок книги вверху) — «Сохранить текущее сообщение как шаблон» хранит текст, ссылку, изображение и все выбранные параметры оформления на этом телефоне; «Использовать» загружает его обратно одним нажатием
  • В Истории «Дублировать как новое сообщение» создаёт новое сообщение из любого прежнего

13Запланируйте на потом#

В карточке «Доставка» нажмите «Запланировать» под «Когда», затем выберите дату и время. Уведомление уйдёт автоматически в этот момент.

Пока оно не ушло, вы можете изменить или отменить его в списке «История» ниже.

14Исправьте ошибку после отправки#

Нажмите на любое уведомление в Истории:

  • «Изменить и отправить заново» — загружает его обратно в редактор со всем оформлением; «Обновить и отправить заново» затем заменяет его НА МЕСТЕ на каждом устройстве
  • «Отмена» — убирает его со всех телефонов, где он ещё не открыт, включая показ в приложении, всё ещё находящийся на экране
  • «Удалить» — то же, что отмена, и убирает его из вашей истории

⚠️ Уведомление, которое пользователь уже открыл или закрыл, вернуть нельзя.

15Откройте конкретную страницу#

Необязательное поле «Ссылка» определяет, что откроется по нажатию (у каждой кнопки может быть своя):

  • Полный адрес https:// (отлично подходит для приложений-сайтов)
  • Маршрут внутри приложения, например #/offers

Код вашего приложения тоже может прочитать это в любой момент:

const link = window.WebToApk?.getLaunchUrl?.();
window.addEventListener('appmint:deep-link',
  e => goTo(e.detail.url));

16Входящие в приложении (необязательно)#

Каждое push-сообщение также сохраняется внутри установленного приложения (последние 50), так что ваше приложение может показывать собственный экран уведомлений со значками непрочитанных. Это работает в КАЖДОМ режиме сборки, включая приложения-сайты (URL), где вы просто добавляете эти несколько строк на свой сайт.

Когда оболочка уже показала сообщение на экране (стиль в разделе «Пока приложение открыто»), событие сообщает presented: true — тогда не рисуйте второй баннер. Приложение, которое само рисует все баннеры, может отключить баннеры оболочки через setPushPresentation('none').

Закрытие — это СМАХИВАНИЕ, а не крошечный ✕, и оно обратимо — добавьте к нему краткую отмену:

const B = window.WebToApk;
const inbox = JSON.parse(B?.getPushInbox?.() ?? "[]");
// [{id,title,body,imageUrl,link,receivedAt,read,
//   template?,accent?,buttons?,badge?,inapp?...}]
const unread = inbox.filter(m => !m.read).length;

// live arrival while the app is open
window.addEventListener('appmint:push', e => {
  const d = e.detail;
  if (d.type === 'received' && !d.presented) showBanner(d.message);
  refreshInbox();   // fires for 'revoked' too
});

B?.markPushRead?.(id);        // "" = mark all read
B?.dismissPushMessage?.(id);  // swipe away
B?.restorePushMessage?.(id);  // ...Undo
B?.setPushPresentation?.('none'); // app draws its own

17Если на тестовый телефон ничего не приходит#

Почти всегда это лимит на ТЕСТОВОМ ТЕЛЕФОНЕ, а не в вашем приложении или у пользователей.

Android допускает примерно 100 push-регистраций на телефон. Каждая НОВАЯ установка приложения, использующего уведомления, занимает одну — поэтому установка сборки за сборкой при тестировании может исчерпать их все, и тогда этот телефон перестанет получать сообщения для вновь установленных приложений.

Освободите слоты (это то, что действительно работает):

  • Удаляйте тестовые приложения, которые вам больше не нужны — Android освобождает слот, который занимало каждое
  • Или очистите данные тестового приложения: Настройки > Приложения > [это приложение] > Хранилище > Очистить данные — это освобождает его слот без удаления
  • На эмуляторе очистка сбрасывает сразу все слоты

Перезагрузка телефона НЕ помогает: эти регистрации хранятся постоянно, поэтому они переживают перезагрузку. Очистка кэша сервисов Google Play их тоже не освобождает.

Избегайте этого при тестировании:

  • Держите ОДНО имя пакета, пока вы дорабатываете — каждое другое имя пакета занимает свой слот
  • Устанавливайте новый APK ПОВЕРХ старого, а не удаляйте сначала — обновление сохраняет существующую регистрацию, а переустановка тратит новую
  • Тестируйте на запасном телефоне или эмуляторе; очистка эмулятора мгновенно сбрасывает его слоты
  • Удаляйте тестовые приложения, с которыми закончили

Также проверьте основы: приложение было открыто хотя бы раз после установки, и для него разрешены уведомления в настройках Android. Приложение подписывается заново при каждом запуске, поэтому восстанавливается само, как только слоты освободятся — пересборка не нужна.

18Ограничения и хорошие практики#

  • Без ограничений на число отправляемых уведомлений — Firebase Cloud Messaging бесплатен
  • Заголовок до 120 символов, сообщение до 1000; ссылки на изображение и значок должны начинаться с https://
  • До 3 кнопок (подписи до 24 символов) и до 6 строк списка
  • На бесплатном тарифе перед каждой отправкой проигрывается короткая реклама
  • Тестовые приложения: удаляйте их значком корзины рядом с выбором приложения — это удаляет историю и сохранённый ключ только в AppMint; ваш проект Firebase не затрагивается, а пересборка добавляет приложение обратно
  • Пересборка с НОВЫМ google-services.json из ТОГО ЖЕ проекта ничего не меняет: ваш ключ остаётся, существующие установки продолжают получать сообщения
  • ⚠️ Перенос приложения в ДРУГОЙ проект Firebase — это полный разрыв. Пересоберите с новым google-services.json, загрузите ключ нового проекта (AppMint удалит старый, так как он никогда не сможет отправлять для нового проекта) — и учтите, что телефоны, всё ещё работающие на СТАРОЙ версии, перестанут получать сообщения, пока их пользователи не обновятся. Уведомления доходят до проекта, а эти установки по-прежнему слушают старый
  • Отправляйте умеренно: пользователи удаляют приложения, которые их заваливают сообщениями

19Выберите, кто получает#

В разделе «Кто получает» сообщение уходит Всем (по умолчанию) или выбранным вами телефонам:

  • Страны, языки, версии Android и версии приложения
  • Активность — открывал приложение за последние N дней или не открывал его N дней
  • Только телефоны, где уведомления включены
  • ID пользователей и теги, которые задаёт страница вашего приложения (следующий шаг)

Перед отправкой экран показывает, скольких телефонов достигает ваш выбор.

Другие способы отправки:

  • Местное время каждого телефона (в разделе «Когда») — например, 09:00 по часам каждого телефона, часовой пояс за часовым поясом
  • A/B-тест — напишите версию B; каждая версия уходит тестовой доле аудитории, а после заданного вами ожидания версия с большим числом открытий (или нажатий) уходит всем остальным
  • Суточный лимит на телефон — наибольшее число сообщений, которое один телефон получает от этого приложения за день; сообщения сверх него для этого телефона пропускаются и отображаются как «пропущено (суточный лимит)»

История показывает для каждого сообщения, на сколько телефонов оно ушло, сколько не удалось и сколько пропущено.

⚠️ Выбор получателей, местное время, A/B-тесты, автоматизации и суточный лимит работают только на телефонах с приложением, собранным 30 сентября 2026 года или позже (они регистрируются сами). Телефоны на более старых сборках по-прежнему получают рассылки «Всем» — пересоберите и опубликуйте обновление, чтобы достичь их и этим способом.

20Выбирайте вошедших пользователей и теги#

Страница вашего приложения сообщает AppMint Push, кто вошёл в систему и что нужно знать об этой установке. Затем вы можете отправлять одному пользователю или всем с тегом, например plan = pro.

  • setPushUser — после входа, с ВАШИМ собственным идентификатором аккаунта (идентификатор из базы данных, но никогда не адрес электронной почты и не номер телефона). Буквы, цифры и _ @ . : + - (до 128). Вызывайте с "" при выходе, иначе телефон продолжит получать сообщения этого пользователя
  • setPushTag / setPushTags — имя тега (буквы, цифры и _, до 32) и значение (до 128). "" удаляет тег; до 50 на установку
  • getPushUser / getPushTags — прочитать, что хранит этот телефон

ID и теги принадлежат установке, а не аккаунту: при выходе также очищайте теги, относящиеся к пользователю. Телефон сообщает об изменении через несколько секунд (при следующем запуске, если он не в сети). Один и тот же пользователь, вошедший на двух телефонах, получает сообщения на обоих.

const B = window.WebToApk;

// after sign-in: your own account id
B?.setPushUser?.(user.id);
B?.setPushTag?.('plan', user.isPro ? 'pro' : 'free');
B?.setPushTags?.(JSON.stringify({ city: 'pune', level: '12' }));

// on sign-out
B?.setPushUser?.('');
B?.setPushTag?.('plan', '');

// read back
const who = B?.getPushUser?.() ?? '';
const tags = JSON.parse(B?.getPushTags?.() ?? '{}');

21Автоматизации#

Сообщения, которые уходят сами. В «Автоматизациях» нажмите «+ Новое» и выберите одно:

  • Приветствие — через N минут после новой установки (от 0 минут до 30 дней). Каждый телефон получает его один раз
  • Возврат пользователя — когда человек не открывал приложение N дней (от 1 до 180). Один раз за отсутствие: телефон, который вернулся и снова пропал, получит сообщение снова
  • Тег — через N минут после того, как страница вашего приложения задаёт тег, при желании только для одного значения. Оно уходит, только если тег всё ещё задан, когда время вышло

Брошенная корзина: задайте тег, когда товары попадают в корзину, и удалите его при оформлении заказа. Автоматизация «cart» с задержкой 60 минут тогда напомнит только тем, кто ушёл, ничего не купив. Повторная установка того же значения не перезапускает отсчёт; после удаления тега повторная установка может отправить сообщение ещё раз.

Автоматизации учитываются в суточном лимите на телефон и достигают телефонов со сборками от 30 сентября 2026 года и позже.

const B = window.WebToApk;

// items added to the cart
B?.setPushTag?.('cart', 'open');

// checkout finished, or the cart emptied: no reminder
B?.setPushTag?.('cart', '');

22Достучитесь до пользователей с отключёнными уведомлениями#

Телефон, где уведомления отключены, никогда не показывает уведомление в шторке, но ваше сообщение всё равно доходит до приложения, а сообщение внутри приложения появляется при следующем открытии. Используйте это, чтобы попросить пользователя снова включить уведомления:

  • Кто получает → Выбрать, кому → включите «Уведомления отключены»
  • Показывать как → Только в приложении (Верхний баннер или Карточка по центру в разделе «Оформление»)
  • Оформление → Кнопки → «+ Кнопка “Включить уведомления”». Её ссылка — appmint://notifications/enable: нажатие показывает запрос разрешения или открывает настройки уведомлений приложения, когда запрос уже нельзя показать

Когда у приложения есть телефоны с отключёнными уведомлениями, центр отправки показывает «Достучаться до N телефонов с отключёнными уведомлениями» под ключом Firebase — одно нажатие задаёт все три. Как только пользователь включает уведомления, его телефон выходит из этой аудитории.

Кнопке нужно приложение, собранное в этой версии AppMint или новее; старые сборки воспринимают ссылку как обычную. appmint://notifications/settings открывает экран настроек напрямую.

// Your page can offer the same thing itself:
const r = await window.AppMint?.enableNotifications?.();
// r = { state: 'granted' | 'prompt' | 'blocked' | 'unavailable',
//       changed, openedSettings }

// and hear a push button's result too:
window.addEventListener('appmint:notifications', e => {
  if (e.detail.state === 'granted') hideNotifBanner();
});

23Сообщения в приложении#

Сообщения в приложении — это кампании, которые вы создаёте в центре отправки: Push-уведомления → «Сообщения в приложении» → «+ Новое». Приложение скачивает их и показывает само, без push, когда происходит выбранный вами триггер:

  • Приложение открывается — N-е открытие приложения
  • Страница или маршрут (/checkout, #/cart, /product/*)
  • Время в приложении — N секунд в приложении
  • Событие, которое отслеживает ваша страница (следующий шаг)
  • Push-тег
  • Уведомления отключены — дополните это кнопкой «Включить уведомления»
  • Обновление приложения — первое открытие после обновления

Показывайте как баннер, модальное окно, панель или во весь экран. У каждого сообщения есть частота (по умолчанию раз на установку), необязательная аудитория и необязательное время начала и окончания. Нужен AppMint Push в сборке.

24Расскажите приложению, что произошло#

Роль вашей страницы небольшая: сообщайте важные моменты через trackEvent. Сообщение с триггером «Когда происходит событие» и тем же именем показывается сразу (или после выбранного вами ожидания). Имена: буквы, цифры и _ . : - (до 64). События нигде не подсчитываются и не хранятся; они лишь решают, показывать ли сообщение.

Сообщения по маршруту сами следят за реальными изменениями URL (загрузки страниц, pushState, маршруты #hash). Экран, который адрес не показывает (вкладка, шаг мастера), можно сообщить как маршрут событием appmint:route.

if (window.AppMint && AppMint.trackEvent) AppMint.trackEvent('checkout_done', { total: 42 });

// raw bridge: props as a JSON string ('' for none)
WebToApk.trackEvent('level:3', '');

// a view the address does not show, reported as a route
window.dispatchEvent(new CustomEvent('appmint:route', { detail: { path: '/cart' } }));

25Рисуйте сообщения сами (необязательно)#

Каждое сообщение вызывает appmint:inapp с { type: 'shown' | 'clicked' | 'dismissed', id, name } (и вызывает window.onAppMintInApp(detail), если вы её определили).

Чтобы рисовать сообщения самостоятельно, вызовите WebToApk.setInAppPresentation('none'): тогда приложение ничего не рисует, а событие «shown» несёт presented: false и само сообщение (заголовок, текст, изображение, кнопки). setInAppPresentation('auto') возвращает рисование приложению. WebToApk.getInAppCampaigns() перечисляет то, что хранится в этой установке ([{id, name}]).

Всё это требует AppMint Push в сборке; в любой другой сборке методы отвечают false / «[]».

window.addEventListener('appmint:inapp', e => {
  // e.detail = { type: 'shown' | 'clicked' | 'dismissed', id, name, presented?, message? }
  if (e.detail.type === 'shown' && e.detail.presented === false) drawMyBanner(e.detail.message);
});

WebToApk.setInAppPresentation('none');   // 'auto' gives drawing back to the app
const held = JSON.parse(WebToApk.getInAppCampaigns() || '[]');   // [{id, name}]

26Начните с шаблона#

«+ Новое» открывает галерею готовых сообщений, каждое — с живым предпросмотром, который можно искать или фильтровать по макету: Приветствие, Оцените нас, Включите уведомления, Что нового, Распродажа (с живым обратным отсчётом), Сезонная акция, Новая функция, Доступно обновление, Брошенная корзина, Возвращение, Звёздный опрос, Оценка NPS, Пригласите друзей, Предложение подписки, Серия, Совет, Объяснение разрешения, Техработы (остаётся, пока не закроют), Обновление условий (без кнопки закрытия) и Подписывайтесь на нас. Шаблон заполняет макет, эмодзи или картинку, текст, кнопки, триггер и частоту — измените что угодно перед сохранением. «Пустое сообщение» начинается с нуля.

Звёздный опрос, «Оцените нас» и NPS задают вопрос: ряд из 1–5 звёзд или оценка 0–10. Первая кнопка ждёт ответа; ответ сообщается один раз, когда сообщение закрывается, событием appmint:inapp «answered» { value, question }, а центр отправки показывает среднее число звёзд или оценку NPS с разбросом.

Ссылками кнопок также могут быть appmint://review (окно отзыва Google Play), share:text (окно «Поделиться»), copy:text (буфер обмена), route:/page и event:name. В тексте можно использовать {app}, {store}, {name}, {streak} и {tag:key}, подставляемые на каждом телефоне; {name|friend} даёт слово на случай, когда значения нет. Сообщение, для заполнителя которого нет значения, не показывается. Требуется приложение, собранное в этой версии или новее.

window.addEventListener('appmint:inapp', e => {
  const d = e.detail;
  if (d.type === 'answered') {
    // d.question: 'stars' (1-5) or 'nps' (0-10); d.template e.g. 'survey_stars'
    if (d.question === 'nps' && d.value <= 6) openFeedbackForm();
  }
  if (d.type === 'clicked' && d.link === 'event:allow') askForLocation();
});

// {streak} and {tag:key} come from push tags
WebToApk.setPushTag('streak', '7');

Эта страница создана из руководства по интеграции внутри самого приложения, поэтому в ней написано ровно то, что и в текущей сборке. Читать в формате Markdown.

Сверено с актуальным руководством 22.10.2026.