Sådan sendes meddelelser til din webapp ved hjælp af Python

Indfødte apps er blevet meget populære for nylig, hovedsagelig på grund af funktioner som at arbejde offline, overgange, let distribuerbarhed og selvfølgelig push-underretninger. Men desværre har du brug for et godt kendskab til sprog som Java eller Swift for at oprette en værdifuld native app.

Progressive webapps

Progressive Web Apps (PWA'er) er JavaScript-applikationer, der kører i browseren. De gør en indsats for at bringe nogle af de oprindelige appfunktioner til internettet. PWA'er er lette at udvikle, hvis du har en grundlæggende viden om HTML, CSS og især JavaScript. Desuden, hvis din tjeneste allerede er tilgængelig for stationære enheder på et websted, er det lettere at tilføje funktionerne i en webapp i stedet for at udvikle en indbygget mobilapp.

Meddelelser

Underretninger holder brugerne informeret om nye meddelelser, fortæller dem om et nyt blogindlæg osv.

Mange native apps sender push-notifikationer til brugeren. Men dette er også muligt ved hjælp af PWA'er og Notifications API.

OneSignal

I denne vejledning bruger vi OneSingal til at sende underretninger til vores webapp. OneSignal er et kraftfuldt værktøj, der giver en enkel grænseflade til at skubbe meddelelser. De leverer også en Rest API, som vi bruger til at sende underretninger.

Opsætning af OneSignal

For at sende push-underretninger skal du først konfigurere OneSignal. Derfor har du brug for en konto på OneSignal. Gå over til deres hjemmeside, og tryk på "Log ind" i øverste højre hjørne.

Derefter skal du oprette en app. Giv det et navn, og vælg "Setup platform". Her vælger du “Alle browsere”. Derefter vælger du “brugerdefineret kode” som integration. Derefter skal du give nogle oplysninger om dit websted.

I indstillingsområdet for din app er der en fane kaldet "Taster og ID'er". Kopier begge nøgler til senere.

Vigtigt: Del ikke din REST API-nøgle. Hold det privat!

Det er det til opsætning af OneSignal. Det var let!

Opsæt vores hjemmeside

I den næste del vil vi tilføje notifikationsfunktionaliteten til vores websted. Webstedet skal vente på meddelelser sendt af OneSignal og vise dem for brugeren.

For at lade browseren vide, at du opretter en Progressive Web App, tilføjer vi en fil kaldet manifest.json til roden af ​​vores projekt.

{ "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"}

De første seks nøgleværdipar beskriver applikationens udseende. Den gcm_send_id er vigtig for at sende meddelelser. Hvis du vil vide mere om manifest.json , kan du se i Mozilla-dokumentationen.

Din browser kigger ikke automatisk efter manifestet. Du skal sætte stien til det i hvert HTML-dokument i & lt; h e ad> -tagget.

 ...  ...

Derudover har vi brug for JavaScript-kode for at forbinde vores websted til OneSignal.

Du kan sætte koden til, at der i et script-tag i & lt; h e annonce> del. Glem ikke at placere min app-id igen med dit eget OneSignal app-id.

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

Når du vil bede brugeren om at abonnere på dine meddelelser, udfører du dette stykke kode.

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

Desuden har du brug for en servicearbejder, der lytter i baggrunden for meddelelser. Derfor har du brug for to filer i rodmappen til dit projekt.

OneSignalSDKUpdaterWorker.js

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

OneSignalSDKWorker.js

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

Adgang til API ved hjælp af Python

OneSignal har en brugervenlig Rest API. Slutpunkterne er dokumenteret i OneSignal Developer Documentation.

For at få adgang til det skal vi sende HTTP-anmodninger. Derfor bruger vi et bibliotek kaldet anmodninger . For at installere det kan du bruge pip, Pythons pakkehåndtering.

pip install requests

Dette er API-slutpunktet, som vi har brug for for at sende en underretning: //onesignal.com/api/v1/notifications.

HTTP-protokollen har flere metoder. I dette tilfælde vil vi fremsætte en POST-anmodning. For at gøre det skal vi importere anmodninger og udføre en funktion.

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

OneSignal ønsker at bekræfte, at kun du kan sende underretninger til dit websted. Så du skal tilføje en HTTP-header med din Rest API-nøgle fra OneSignal.

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

Husk at udskifte my-rest-api-key med din Rest API Key.

Desuden har du brug for nogle grundlæggende oplysninger om din anmeldelse.

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)

Erstat min-app-id med dit eget app-id. Derefter vælger du, hvem der vil modtage dine underretninger. Eksempelværdier er "All", "Active Users", "Inactive Users”. Men du kan også oprette dine egne segmenter. Og til den sidste tilføjer du noget indhold af meddelelsen på engelsk. Hvis du har brug for et andet sprog, kan du også tilføje det her.

Det er det! Hvis du abonnerer på underretningerne, skal du få en push-underretning.

Send underretninger ved hjælp af en API-indpakker

Fordi min kode blev lidt rodet med mange forskellige meddelelser, oprettede jeg en API-indpakning til OneSignal.

API-indpakning

Men hvad er en API-indpakning? En API-indpakning gør det lettere for dig at få adgang til en API. Du kan sige, at det er en API til en API. Du kalder API-indpakningen direkte i stedet for API'en.

Du kan installere indpakningen kaldet OneSignal-Notifications fra pip.

pip install onesignal-notifications

Nu kan du importere det og konfigurere din klient.

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

For at sende en underretning skal du initialisere klassen SegmentNotificationog brug metoden send .

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

Måske ser det lidt unødvendigt ud for dig, fordi det tager endnu flere linjer med kode. Men hvis du har flere underretninger, gør det processen meget nemmere og din kode smukkere.

For eksempel, hvis du vil sende en underretning, der er baseret på nogle betingelser, har API-indpakningen en brugerdefineret klasse til det.

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"), ])

Der er mange brugerdefinerede parametre, du kan angive for at tilpasse din underretning. For eksempel kan du tilføje knapper til underretningen. Alle listen over alle parametre kan findes her.

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)

Hvis du vil finde ud af mere om OneSignal-notifikationer , kan du kigge i GitHub Repository eller i docs.