Kako poslati obavijesti u svoju web aplikaciju pomoću Pythona

Izvorne aplikacije postale su u posljednje vrijeme iznimno popularne, ponajviše zbog značajki kao što su izvanmrežni rad, prijelazi, laka distribucija i, naravno, push obavijesti. No, nažalost, za stvaranje vrijedne izvorne aplikacije trebate dobro znanje jezika kao što su Java ili Swift.

Progresivne web aplikacije

Progresivne web aplikacije (PWA) su JavaScript aplikacije koje se pokreću u pregledniku. Trude se donijeti neke značajke izvorne aplikacije na web. PWA je lako razviti ako imate temeljno znanje HTML-a, CSS-a, a posebno JavaScript-a. Štoviše, ako je vaša usluga već dostupna za stolne uređaje na web mjestu, lakše je dodati funkcionalnosti web-aplikacije, umjesto da razvijate izvornu mobilnu aplikaciju.

Obavijesti

Obavijesti obavještavaju korisnike o novim porukama, govore im o novom postu na blogu itd.

Mnoge izvorne aplikacije korisniku šalju push obavijesti. Ali to je moguće i pomoću PWA-ova i API-ja za obavijesti.

OneSignal

U ovom uputstvu koristit ćemo OneSingal za slanje obavijesti u našu web aplikaciju. OneSignal moćan je alat koji pruža jednostavno sučelje za guranje obavijesti. Oni također pružaju API za odmor koji ćemo koristiti za slanje obavijesti.

Postavljanje OneSignala

Da biste poslali push obavijesti, prvo morate postaviti OneSignal. Zbog toga vam je potreban račun na OneSignalu. Idite na njihovo web mjesto i pritisnite "Prijavi se" u gornjem desnom kutu.

Dalje ćete morati stvoriti aplikaciju. Dajte mu ime i odaberite "Postava za postavljanje". Ovdje odabirete "Svi preglednici". Nakon toga kao integraciju odabirete "prilagođeni kôd". Zatim morate navesti neke informacije o svojoj web stranici.

U području postavki vaše aplikacije nalazi se kartica nazvana "Ključevi i ID-ovi". Kopirajte obje tipke za kasnije.

Važno: Nemojte dijeliti svoj REST API ključ. Neka bude privatno!

To je to za postavljanje OneSignala. To je bilo lako!

Postavite našu web stranicu

U sljedećem ćemo dijelu na naše web mjesto dodati funkcionalnost obavijesti. Web stranica će morati pričekati obavijesti koje šalje OneSignal i prikazati ih korisniku.

Da bismo pregledniku dali do znanja da izrađujete Progresivnu web aplikaciju, u korijen našeg projekta dodat ćemo datoteku koja se naziva manifest.json .

{ "name": "My Application", "short_name": "Application", "start_url": ".", "display": "standalone", "background_color" : "#fff" , "description": "We send notifications to you", "gcm_sender_id": "482941778795", "gcm_sender_id_comment": "Do not change the GCM Sender ID"}

Prvih šest parova ključ / vrijednost opisuju izgled aplikacije. Gcm_send_id je važno za slanje obavijesti. Ako želite saznati više o manifest.json , možete pogledati u Mozilla dokumentaciji.

Vaš preglednik ne traži automatski manifest. Put do njega morate staviti u svaki HTML dokument u oznaci & lt; h e ad>.

 ...  ...

Uz to, potreban nam je i JavaScript kod za povezivanje naše web stranice s OneSignalom.

Kôd za to možete staviti u oznaku skripte u dijelu & lt; h e ad>. Ne zaboravite postaviti my -app-id sa svojim OneSignal ID-om aplikacije.

   var OneSignal = window.OneSignal || []; OneSignal.push(function () { OneSignal.init({ appId: "my-app-id", autoRegister: false, notifyButton: { enable: true, }, }); }); 

Kada želite zatražiti od korisnika da se pretplati na vaše obavijesti, izvršite ovaj dio koda.

OneSignal.push(function () { OneSignal.showHttpPrompt();});

Štoviše, potreban vam je uslužni radnik koji u pozadini osluškuje obavijesti. Stoga su vam potrebne dvije datoteke u korijenskom direktoriju vašeg projekta.

OneSignalSDKUpdaterWorker.js

importScripts('//cdn.onesignal.com/sdks/OneSignalSDKWorker.js');

OneSignalSDKWorker.js

importScripts('//cdn.onesignal.com/sdks/OneSignalSDKWorker.js');

Pristupite API-ju pomoću Pythona

OneSignal ima jednostavan API za odmor. Krajnje točke dokumentirane su u dokumentaciji za programere OneSignal.

Da bismo mu pristupili, moramo poslati HTTP zahtjeve. Stoga ćemo koristiti knjižnicu koja se naziva zahtjevi . Da biste ga instalirali, možete koristiti pip, upravitelj paketa Pythona.

pip install requests

Ovo je API krajnja točka koju trebamo poslati obavijest: //onesignal.com/api/v1/notifications.

HTTP protokol ima nekoliko metoda. U ovom slučaju želimo poslati POST zahtjev. Da bismo to učinili, moramo uvesti zahtjeve i izvršiti funkciju.

import requests
requests.post("//onesignal.com/api/v1/notifications")

OneSignal želi potvrditi da samo vi možete slati obavijesti na svoje web mjesto. Dakle, morate dodati HTTP zaglavlje s vašim API ključem za odmor od OneSignala.

requests.post( "//onesignal.com/api/v1/notifications", headers={"Authorization": "Basic my-rest-api-key"})

Ne zaboravite zamijeniti my-rest-api-key svojim API ključem za odmor.

Štoviše, trebaju vam neke osnovne informacije o vašoj obavijesti.

data = { "app_id": "my-app-id", "included_segments": ["All"], "contents": {"en": "Hello"}}
requests.post( "//onesignal.com/api/v1/notifications", headers={"Authorization": "Basic my-rest-api-key"}, json=data)

Zamijenite my-app-id svojim ID-om aplikacije. Dalje odabirete tko će primati vaše obavijesti. Primjeri vrijednosti su "All", "Active Users", "Inactive Users”. Ali možete stvoriti i vlastite segmente. I za posljednju, dodajte dio sadržaja na engleskom jeziku. Ako trebate drugi jezik, možete ga dodati i ovdje.

To je to! Ako ste se pretplatili na obavijesti, trebali biste dobiti push obavijest.

Šaljite obavijesti pomoću API omotača

Budući da je moj kod postao nekako neuredan s mnogo različitih obavijesti, stvorio sam API omot za OneSignal.

API omotač

Ali što je API omotač? API omotač olakšava vam pristup API-ju. Možete reći da je to API za API. API omotač zovete umjesto API-ja izravno.

Omotač pod nazivom OneSignal-Notifications možete instalirati s pipa.

pip install onesignal-notifications

Sada ga možete uvesti i postaviti klijenta.

from onesignal import OneSignal, SegmentNotificationclient = OneSignal("MY_APP_ID", "MY_REST_API_KEY")

Da biste poslali Obavijest, morate inicijalizirati klasu SegmentNotificationi koristite metodu send .

notification_to_all_users = SegmentNotification( { "en": "Hello from OneSignal-Notifications" }, included_segments=SegmentNotification.ALL)client.send(notification_to_all_users)

Maybe this looks kind of unnecessary to you, because it takes even more lines of code. But if you have several notifications, it makes the process much easier and your code more beautiful.

For example if you want to send a notification, which is based on some conditions, the API wrapper has a custom class for that.

from onesignal import OneSignal, FilterNotification, Filterclient = OneSignal("MY_APP_ID", "MY_REST_API_KEY")
filter_notification = FilterNotification( { "en": "Hello from OneSignal-Notifications" }, filters=[ Filter.Tag("my_key", "", "5"), "OR", Filter.LastSession(">", "1"), ])

There are many custom parameters you can provide to adapt your notification. For example, you can add buttons to the notification. All list of all parameters can be found here.

from onesignal import OneSignal, FilterNotification, Filterclient = OneSignal("MY_APP_ID", "MY_REST_API_KEY")
filter_notification = SegmentNotification( { "en": "Hello from OneSignal-Notifications" }, web_buttons=[ { "id": "like-button", "text": "Like", "icon": "//i.imgur.com/N8SN8ZS.png", "url": "//github.com/Lanseuo/onesignal-notifications"} ], included_segments=SegmentNotification.ALL)

If you want to find out more about OneSignal-Notifications, you can have a look in the GitHub Repository or in the docs.