Как да добавите известия в приложението си: в приложението, имейл и push
За да добавите известия към уеб приложение, започнете с известия в приложението: таблица с известия в базата данни и икона със звънче, която показва непрочетени елементи. Добавете имейл за неща, които хората трябва да знаят, когато ги няма, с помощта на доставчик на имейли, а web push — само когато навременните сигнали са важни, защото изисква service worker, разрешение от потребителя и, на iPhone, приложението да е добавено на началния екран. Независимо от използваните канали, създавайте всяко известие на едно място, на сървъра, и оставете потребителите да избират какво да получават.
Това ръководство сравнява каналите, показва прост архитектурен модел и дава подсказки, които можете да използвате с AI строител на приложения.
Основните канали в сравнение
| Канал | Достига до потребителите, когато | Усилие за настройка | Текущ разход | Най-подходящ за |
|---|---|---|---|---|
| В приложението (звънче, toast съобщения) | Използват приложението ви | Ниско | Нищо освен базата данни | Активност, споменавания, промени в статуса |
| Имейл | Когато проверят имейла си | Средно: доставчик, настройка на домейн | Цена на имейл според доставчика | Разписки, дайджести, всичко важно |
| Web push | Браузърът или инсталираното уеб приложение, дори когато е затворено | Средно до високо | Обикновено безплатно за изпращане | Сигнали, чувствителни към времето |
| SMS | Почти винаги | Средно; важат правила за съгласие | Такса на съобщение | Напомняния за срещи, спешни сигнали |
| Чат инструменти (Slack, Teams) | Когато са на работа | Ниско до средно | Обикновено безплатно | Вътрешни инструменти и екипни сигнали |
Повечето приложения се нуждаят от приложението плюс имейл. Push и SMS си заслужават, когато времето наистина е важно, например напомняне за резервация или поръчка, която е готова.
Как се свързва системата за известия
Пазете я проста и централна:
- Нещо се случва. Публикува се коментар, плащане се проваля, резервацията е утре.
- Сървърът ви извиква една функция, например
notify(user, type, data). - Тази функция проверява предпочитанията на потребителя и записва ред в таблицата
notifications(за звънчето). - После изпраща към другите канали, които потребителят е включил за този тип: имейл през доставчика ви, push през Push API.
- Фронтендът показва непрочетените известия и ги маркира като прочетени, когато бъдат отворени.
Една входна точка означава, че можете да добавите канал, да промените текста или да спазите предпочитанията, без да търсите из целия код.
Какво да съхранявате
Таблицата с известия обикновено трябва да съдържа: ID на потребителя, тип (например comment_reply), кратко заглавие и текст, връзка към съответната страница, време на създаване и време на прочитане. Отделна таблица с предпочитания съхранява кои канали всеки потребител иска за всеки тип.
Показване на нови известия
- Зареждане при показване на страницата и опресняване (polling) на всеки 30–60 секунди. Просто и надеждно.
- Актуализации в реално време с WebSockets или server-sent events изглеждат мигновени, но добавят подвижни части. Започнете с опресняване, освен ако мигновените актуализации не са важни.
Имейл известия
Имейлът изисква доставчик за изпращане и потвърден домейн; подробностите са в как да изпращате имейли от приложението си. За известията конкретно:
- Изпращайте от сървъра, никога с ключ към доставчика в браузъра.
- Групирайте шумните събития. „3 нови коментара“ в един имейл е по-добре от три отделни имейла.
- Предложете дневен или седмичен дайджест за активност с нисък приоритет.
- Включете връзка за отписване или предпочитания в имейлите, които не са съществени. Правилата за маркетингови имейли се различават според държавата; проверете кои важат за вас.
Web push известия
Web push позволява на сайта ви да изпраща сигнали, които изглеждат като известия от приложение. Според документацията на MDN за Push API той работи така:
- Сайтът ви регистрира service worker, скрипт, който браузърът може да изпълнява на заден план.
- След като потребителят се съгласи, service worker-ът се абонира чрез
PushManager.subscribe(). Браузърът връща абонамент с крайна точка и ключове за криптиране. - Сървърът ви съхранява този абонамент и, когато нещо се случи, изпраща съобщение към крайната точка, обикновено подписано с VAPID ключове (двойка ключове, която идентифицира сървъра ви).
- Браузърът стартира service worker-а ви, който показва известието, дори ако страницата ви не е отворена.
MDN също отбелязва, че крайната точка трябва да се пази в тайна, тъй като знанието ѝ е достатъчно, за да се изпращат съобщения до този потребител.
iPhone и iPad
WebKit добави Web Push за уеб приложения в iOS и iPadOS 16.4, с две условия от съобщението му: сайтът трябва да е добавен на началния екран, а разрешението трябва да се поиска в отговор на действие на потребителя, например докосване на бутон „Абониране“. Затова на iPhone push достига само до потребители, които са инсталирали уеб приложението ви. Вижте нативни срещу прогресивни уеб приложения, за да разберете какво означава инсталиране на уеб приложение.
Как да поискате разрешение добре
Не питайте при първо посещение. Първо обяснете ползата („Получете напомняне час преди занятието си“), след което покажете запитването на браузъра, когато потребителят докосне бутон. Ако някой откаже, браузърът може да не ви позволи да питате отново, така че преждевременното запитване може да ви загуби потребителя завинаги.
Насрочените известия имат нужда от тригер
„Напомняне 24 часа предварително“ или „седмично обобщение всеки понеделник“ изисква нещо, което да се изпълнява по график. Това е проблем с фонови задачи, разгледан в как да стартирате фонови задачи. Често срещан модел: външен планировчик извиква защитена крайна точка на всеки няколко минути, а тя изпраща всичко, което е време да бъде изпратено.
Подсказки за вашия AI строител
Започнете с известията в приложението:
Добави известия в приложението. Създай таблица notifications (user, type, title, body, link, created_at, read_at). Добави сървърна функция notify(userId, type, data), която всяка функционалност извиква. Покажи икона със звънче в заглавната част с брой непрочетени, падащо меню с последните 20 и бутон „Маркирай всички като прочетени“. Проверявай за нови на всеки 60 секунди.
След това предпочитанията и имейла:
Добави настройки за известия: за всеки тип (отговори на коментари, споменавания, плащане) потребителят избира в приложението, по имейл, и двете или никое. notify() трябва да зачита тези настройки. Изпращай имейл през [PROVIDER] с тайната [ENV_NAME] само на сървъра. Групирай имейлите за коментари, така че един потребител да получава най-много един имейл на 15 минути.
После push, ако ви е нужен:
Добави незадължителни web push известия. Регистрирай service worker, генерирай VAPID ключове и съхрани частния ключ като тайна. Добави бутон „Включи известията“ в настройките, който пита за разрешение само при натискане. Съхранявай всеки абонамент за потребител и устройство, изпращай push от notify(), когато потребителят се е включил, и изтривай абонаментите, които push услугата докладва като изтекли.
Чести грешки
- Разпръснати известия из кода. Всяка функционалност изпраща имейл по свой начин и предпочитанията се игнорират. Използвайте една функция
notify(). - Питане за push разрешение при зареждане на страницата. Повечето хора отказват и може да нямате втори шанс.
- Без предпочитания. Потребителите, които не могат да изключат шумните сигнали, изключват всички или си тръгват.
- Изпращане от браузъра. Ключовете за имейл и push принадлежат на сървъра.
- Непочистени мъртви push абонаменти. Изтеклите абонаменти се натрупват и губят изпращания.
- Чувствителни подробности в текста на известието. Екраните за заключване ги показват. „Имате ново съобщение“ е по-безопасно от самото съобщение.
- Без запис какво е изпратено. Когато потребител каже „Не получих имейла“, логовете с ID-та на съобщенията от доставчика помагат да разберете защо.
Контролен списък
- Една функция
notify()от страна на сървъра, използвана навсякъде - Таблица с известия със състояние на прочитане и звънче с брой непрочетени
- Предпочитания за канали за всеки тип, спазвани от
notify() - Имейлът се изпраща от сървъра с потвърден домейн; дайджест или групиране за шумните събития
- Push разрешение се иска само след действие на потребителя, с обяснение
- Push тестван на компютър и на iPhone с приложението, добавено на началния екран
- Изтеклите push абонаменти са премахнати
- Без чувствително съдържание в push или имейл прегледите
- Насрочените напомняния имат надежден тригер
Известия в Mythex
Mythex не включва вградена услуга за имейл или push за приложенията, които създавате, затова внасяте собствен доставчик на имейли и генерирате собствени push ключове, които съхранявате като тайни на проекта. Частта за известията в приложението изисква само базата данни на проекта, която Mythex добавя, когато я поискате. Строете с подсказки като горните, тествайте звънчето и имейлите в Preview, а push тествайте на публикувания си URL, тъй като service worker-ите и push изискват реален HTTPS адрес. Рецептата Изпращане на имейл от приложението ви в документацията има стартова подсказка. Mythex не документира насрочени задачи, затова планирайте напомнянията по време с външен тригер, както е описано в как да стартирате фонови задачи.
Въпроси
Кое е най-лесното известие за добавяне към уеб приложение?
Известията в приложението: таблица с известия в базата данни и икона със звънче, която показва непрочетените. Не се нуждаят от услуга на трета страна. Имейлът е следващата стъпка и изисква доставчик на имейли.
Може ли уеб приложение да изпраща push известия към iPhone?
Да, с ограничения. WebKit добави Web Push за уеб приложения, инсталирани на началния екран, в iOS и iPadOS 16.4. Затова потребителят първо трябва да добави уеб приложението ви на началния екран, а разрешението трябва да се поиска след докосване, например на бутон „Абониране“.
Работят ли push известията, когато сайтът е затворен?
Да. Push API доставя съобщенията до service worker-а на сайта ви, който браузърът стартира, когато пристигне съобщение, така че страницата не трябва да е отворена. Потребителят трябва първо да е дал разрешение.
Как да спра известията да досаждат на потребителите?
Известявайте само за неща, които потребителят цени, групирайте сериите от събития в едно съобщение, позволете на хората да избират канали за всеки тип в настройките и питайте за push разрешение едва след като са видели защо е полезно.