Kaip pridėti pranešimus į programėlę: programėlės viduje, el. paštu ir push
Kad pridėtumėte pranešimus žiniatinklio programėlei, pradėkite nuo pranešimų programėlėje: pranešimų lentelės duomenų bazėje ir varpelio piktogramos, rodančios neperskaitytus elementus. Pridėkite el. paštą tiems dalykams, apie kuriuos žmonės turi žinoti, kai jų nėra, naudodami el. laiškų teikėją, o žiniatinklio push pridėkite tik tada, kai svarbūs laiku pateikiami įspėjimai, nes jam reikia service worker, vartotojo leidimo ir, iPhone atveju, programėlės įdėtos į pagrindinį ekraną. Kokius kanalus bebūtų naudojate, kuriant kiekvieną pranešimą vienoje vietoje serveryje ir leiskite vartotojams pasirinkti, ką gauti.
Šis vadovas palygina kanalus, parodo paprastą architektūrą ir pateikia raginimus, kuriuos galite naudoti su DI programėlių kūrimo įrankiu.
Pagrindiniai kanalai palyginti
| Kanalas | Pasiekia vartotojus, kai | Diegimo pastangos | Eksploatavimo kaina | Geriausiai tinka |
|---|---|---|---|---|
| Programėlėje (varpelis, trumpi pranešimai) | Jie naudoja jūsų programėlę | Mažos | Nieko, be duomenų bazės | Veikla, paminėjimai, būsenos pakeitimai |
| El. paštas | Bet kada, kai jie tikrina el. paštą | Vidutinės: teikėjas, domeno nustatymas | Kaina už laišką pagal jūsų teikėją | Kvitai, suvestinės, viskas svarbu |
| Žiniatinklio push | Naršyklėje ar įdiegtoje žiniatinklio programėlėje, net kai uždaryta | Vidutinės iki didelės | Paprastai nemokamas siuntimas | Laiku svarbūs įspėjimai |
| SMS | Beveik visada | Vidutinės; taikomos sutikimo taisyklės | Mokestis už žinutę | Priminimai apie susitikimus, skubūs įspėjimai |
| Pokalbių įrankiai (Slack, Teams) | Jie yra darbe | Mažos iki vidutinių | Paprastai nemokami | Vidinės priemonės ir komandos įspėjimai |
Daugumai programėlių reikia programėlėje ir el. pašto. Push ir SMS verta naudoti tada, kai laikas tikrai svarbus, pavyzdžiui priminimas apie rezervaciją ar užsakymą, kuris paruoštas.
Kaip sujungiama pranešimų sistema
Laikykite ją paprastą ir centralizuotą:
- Kažkas įvyksta. Parašomas komentaras, nepavyksta mokėjimas, rezervacija yra rytoj.
- Jūsų serveris iškviečia vieną funkciją, pavyzdžiui
notify(user, type, data). - Ši funkcija patikrina vartotojo nuostatas ir įrašo eilutę į lentelę
notifications(varpeliui). - Tada siunčia kitais kanalais, kuriuos vartotojas yra įjungęs tam tipui: el. paštu per jūsų teikėją, push – per Push API.
- Priekinė dalis rodo neperskaitytus pranešimus ir pažymi juos kaip perskaitytus, kai juos atidaroma.
Vienas įėjimo taškas leidžia pridėti kanalą, pakeisti tekstą ar gerbti nuostatas, nieko neieškant po visą kodą.
Ką saugoti
Pranešimų lentelei paprastai reikia: vartotojo ID, tipo (pavyzdžiui comment_reply), trumpo pavadinimo ir teksto, nuorodos į atitinkamą puslapį, sukūrimo laiko ir perskaitymo laiko. Atskira nuostatų lentelė saugo, kuriuos kanalus kiekvienas vartotojas nori kiekvienam tipui.
Naujų pranešimų rodymas
- Kraukite puslapio peržiūros metu ir tikrinkite kas 30–60 sekundžių. Paprasta ir patikima.
- Realiojo laiko atnaujinimai su WebSockets ar server-sent events jaučiasi akimirksniu, bet prideda judančių dalių. Pradėkite nuo tikrinimo, nebent momentiniai atnaujinimai tikrai svarbūs.
El. pašto pranešimai
El. paštui reikia siuntimo teikėjo ir patvirtinto domeno; detalės aprašytos kaip siųsti el. laiškus iš savo programėlės. Pranešimams konkrečiai:
- Siųskite iš serverio, niekada su teikėjo raktu naršyklėje.
- Sujunkite dažnus įvykius. Vienas laiškas su „3 nauji komentarai“ yra geriau nei trys laiškai.
- Siūlykite dienos ar savaitės suvestinę mažai svarbiai veiklai.
- Įtraukite atsisakymo ar nuostatų nuorodą neesminiame el. laiške. Rinkodaros laiškų taisyklės skirtingose šalyse skiriasi; patikrinkite, kas taikoma jums.
Žiniatinklio push pranešimai
Žiniatinklio push leidžia jūsų svetainei siųsti įspėjimus, kurie atrodo kaip programėlės pranešimai. Pagal MDN Push API dokumentaciją tai veikia taip:
- Jūsų svetainė registruoja service worker – skriptą, kurį naršyklė gali vykdyti fone.
- Vartotojui sutikus, service worker užsiprenumeruoja per
PushManager.subscribe(). Naršyklė grąžina prenumeratą su galutiniu tašku ir šifravimo raktais. - Jūsų serveris išsaugo tą prenumeratą ir, kai kas nors nutinka, siunčia žinutę į galutinį tašką, paprastai pasirašytą VAPID raktais (raktų pora, identifikuojanti jūsų serverį).
- Naršyklė paleidžia jūsų service worker, kuris parodo pranešimą, net jei jūsų puslapis neatidarytas.
MDN taip pat pažymi, kad galutinis taškas turi būti laikomas paslaptyje, nes vien jo žinojimo pakanka siųsti žinutes tam vartotojui.
iPhone ir iPad
WebKit pridėjo Web Push žiniatinklio programėlėms iOS ir iPadOS 16.4 versijoje, su dviem sąlygomis iš jų pranešimo: svetainė turi būti pridėta prie pagrindinio ekrano, o leidimas turi būti prašomas reaguojant į vartotojo veiksmą, pavyzdžiui paspaudus mygtuką Prenumeruoti. Taigi iPhone telefone push pasiekia tik vartotojus, kurie įdiegė jūsų žiniatinklio programėlę. Kas reiškia įdiegti žiniatinklio programėlę, žr. gimtosios ir progresyvios žiniatinklio programėlės.
Kaip tinkamai prašyti leidimo
Neprašykite pirmo apsilankymo metu. Pirma paaiškinkite naudą („Gaukite priminimą valandą prieš pamoką“), tada parodykite naršyklės langą, kai vartotojas paspaudžia mygtuką. Jei kas nors atsisako, naršyklė gali neleisti paprašyti dar kartą, todėl per ankstyvas klausimas gali prarasti jį visam laikui.
Planuojamiems pranešimams reikia paleidiklio
„Priminimas 24 valandas prieš“ ar „savaitės suvestinė kiekvieną pirmadienį“ reikalauja, kad kažkas veiktų pagal grafiką. Tai fono užduočių problema, aprašyta kaip paleisti fonines užduotis. Dažnas modelis: išorinis planuoklis kas kelias minutes kviečia apsaugotą galutinį tašką, o tas galutinis taškas išsiunčia viską, kas laiku.
Raginimai jūsų DI kūrimo įrankiui
Pradėkite nuo pranešimų programėlėje:
Pridėk pranešimus programėlėje. Sukurk lentelę notifications (user, type, title, body, link, created_at, read_at). Pridėk serverio funkciją notify(userId, type, data), kurią kviečia kiekviena funkcija. Antraštėje rodyk varpelio piktogramą su neperskaitytų skaičiumi, nuleidžiamąjį sąrašą su naujausiais 20 pranešimų ir mygtuką „pažymėti visus kaip perskaitytus“. Tikrink naujus pranešimus kas 60 sekundžių.
Po to nuostatos ir el. paštas:
Pridėk pranešimų nustatymus: kiekvienam tipui (atsakymai į komentarus, paminėjimai, mokėjimai) leisk vartotojui pasirinkti programėlę, el. paštą, abu ar nieką. notify() privalo tai gerbti. Siųsk el. laiškus per [TEIKĖJAS], naudodamas paslaptį [ENV_NAME] tik serveryje. Sugrupuok komentarų el. laiškus, kad vienas vartotojas gautų daugiausia vieną laišką per 15 minučių.
Tada push, jei jo reikia:
Pridėk pasirinktinius žiniatinklio push. Užregistruok service worker, sugeneruok VAPID raktus ir privatų raktą išsaugok kaip paslaptį. Nustatymuose pridėk mygtuką „Įjungti pranešimus“, kuris prašo leidimo tik paspaudus. Kiekvieno vartotojo ir įrenginio prenumeratą saugok atskirai, siųsk push iš notify(), kai vartotojas tam pritarė, o prenumeratas, kurias push paslauga praneša kaip pasibaigusias, ištrink.
Dažniausios klaidos
- Pranešimai išbarstyti po kodą. Kiekviena funkcija siunčia savo el. laišką kitaip, o nuostatos ignoruojamos. Naudokite vieną funkciją
notify(). - Push leidimo prašymas įkraunant puslapį. Dauguma žmonių atsisako, o kito progos gali nebūti.
- Jokių nuostatų. Vartotojai, kurie negali išjungti erzinančių įspėjimų, išjungia visus arba išeina.
- Siuntimas iš naršyklės. El. pašto ir push raktai priklauso serveriui.
- Negyvų push prenumeratų neišvalymas. Pasibaigusios prenumeratos kaupiasi ir eikvoja siuntimus.
- Jautri informacija pranešimo tekste. Užrakinimo ekranai ją rodo. „Turite naują žinutę“ saugiau nei pati žinutė.
- Jokio įrašo apie tai, kas išsiųsta. Kai vartotojas sako „Aš negavau laiško“, žurnalai su teikėjo žinutės ID padeda išsiaiškinti priežastį.
Kontrolinis sąrašas
- Viena serverio pusės funkcija
notify(), naudojama visur - Pranešimų lentelė su skaitymo būsena ir varpelis su neperskaitytų skaičiumi
- Kiekvieno tipo kanalų nuostatos, kurias gerbia
notify() - El. paštas siunčiamas iš serverio su patvirtintu domenu; suvestinė ar grupavimas dažniems įvykiams
- Push leidimas prašomas tik po vartotojo veiksmo, su paaiškinimu
- Push išbandytas darbalaukyje ir iPhone telefone su programėle, pridėta prie pagrindinio ekrano
- Pasibaigusios push prenumeratos pašalintos
- Push ar el. laiško peržiūrose nėra jautraus turinio
- Planuojami priminimai turi patikimą paleidiklį
Pranešimai Mythex
Mythex nėra įtraukto el. laiškų ar push paslaugos jūsų sukurtoms programėlėms, todėl atsinešate savo el. laiškų teikėją ir patys generuojate push raktus, saugomus kaip projekto paslaptys. Programėlės viduje esanti dalis reikalauja tik projekto duomenų bazės, kurią Mythex prideda, kai to paprašote. Kurkite pagal aukščiau pateiktus raginimus, bandykite varpelį ir el. laiškus Peržiūroje, o push bandykite savo publikuotame URL, nes service worker ir push reikalauja tikro HTTPS adreso. Dokumentacijos receptas Siųsti el. laiškus iš savo programėlės turi pradinį raginimą. Mythex nedokumentuoja planuojamų užduočių, todėl planuokite laiku paleidžiamus priminimus su išoriniu paleidikliu, kaip aprašyta kaip paleisti fonines užduotis.
Klausimai
Kokį pranešimą lengviausia pridėti žiniatinklio programėlei?
Pranešimus programėlėje: lentelę su pranešimais duomenų bazėje ir varpelio piktogramą, rodančią neperskaitytus. Jiems nereikia trečiosios šalies paslaugos. Kitas žingsnis – el. paštas, kuriam reikia el. laiškų teikėjo.
Ar žiniatinklio programėlė gali siųsti push pranešimus iPhone telefonams?
Taip, su apribojimais. WebKit pridėjo Web Push pagrindiniam ekranui įdėtoms žiniatinklio programėlėms iOS ir iPadOS 16.4 versijoje, todėl vartotojas pirmiausia turi pridėti jūsų žiniatinklio programėlę prie pagrindinio ekrano, o leidimas turi būti prašomas po paspaudimo, pavyzdžiui mygtuku Prenumeruoti.
Ar push pranešimai veikia, kai svetainė uždaryta?
Taip. Push API pranešimus pristato į jūsų svetainės service worker, kurį naršyklė paleidžia, kai atkeliauja žinutė, todėl puslapis nebūtinai turi būti atidarytas. Vartotojas pirmiausia turi suteikti leidimą.
Kaip nustoti erzinti vartotojus pranešimais?
Pranešinėkite tik apie tai, kas vartotojui rūpi, sujunkite pranešimų antplūdžius į vieną žinutę, leiskite žmonėms nustatyti kanalus kiekvienam tipui ir prašykite push leidimo tik tada, kai jie jau matė, kodėl tai naudinga.