Πώς να στείλετε ειδοποιήσεις στην εφαρμογή Web χρησιμοποιώντας το Python

Οι εγγενείς εφαρμογές έχουν γίνει εξαιρετικά δημοφιλείς πρόσφατα, κυρίως λόγω λειτουργιών όπως η εργασία εκτός σύνδεσης, οι μεταβάσεις, η εύκολη διανομή και φυσικά οι ειδοποιήσεις push. Δυστυχώς, χρειάζεστε καλή γνώση γλωσσών όπως η Java ή το Swift για να δημιουργήσετε μια πολύτιμη εγγενή εφαρμογή.

Προοδευτικές εφαρμογές Ιστού

Το Progressive Web Apps (PWAs) είναι εφαρμογές JavaScript που εκτελούνται στο πρόγραμμα περιήγησης. Κάνουν την προσπάθεια να φέρουν μερικές από τις εγγενείς λειτουργίες της εφαρμογής στον ιστό. Τα PWA είναι εύκολο να αναπτυχθούν εάν έχετε βασική γνώση HTML, CSS και συγκεκριμένα JavaScript. Επιπλέον, εάν η υπηρεσία σας είναι ήδη προσβάσιμη για επιτραπέζιους υπολογιστές σε έναν ιστότοπο, είναι πιο εύκολο να προσθέσετε τις λειτουργίες μιας εφαρμογής Web, αντί να αναπτύξετε μια εγγενή εφαρμογή για κινητά.

Ειδοποιήσεις

Οι ειδοποιήσεις κρατούν τους χρήστες ενήμερους για νέα μηνύματα, τους λένε για μια νέα ανάρτηση ιστολογίου και ούτω καθεξής.

Πολλές εγγενείς εφαρμογές στέλνουν ειδοποιήσεις push στον χρήστη. Αλλά αυτό είναι επίσης δυνατό χρησιμοποιώντας PWA και το API ειδοποιήσεων.

OneSignal

Σε αυτό το σεμινάριο, θα χρησιμοποιούμε το OneSingal για να στέλνουμε ειδοποιήσεις στην εφαρμογή ιστού μας. Το OneSignal είναι ένα ισχυρό εργαλείο που παρέχει μια απλή διεπαφή για την προώθηση ειδοποιήσεων. Παρέχουν επίσης ένα API ανάπαυσης, το οποίο θα χρησιμοποιούμε για την αποστολή ειδοποιήσεων.

Ρύθμιση OneSignal

Για να στείλετε ειδοποιήσεις push, πρέπει πρώτα να ρυθμίσετε το OneSignal. Γι 'αυτό χρειάζεστε έναν λογαριασμό στο OneSignal. Μεταβείτε στον ιστότοπό τους και πατήστε "Σύνδεση" στην επάνω δεξιά γωνία.

Στη συνέχεια θα πρέπει να δημιουργήσετε μια εφαρμογή. Δώστε του ένα όνομα και επιλέξτε "Πλατφόρμα εγκατάστασης". Εδώ επιλέγετε "Όλα τα προγράμματα περιήγησης". Μετά από αυτό, επιλέγετε τον «προσαρμοσμένο κώδικα» ως ενοποίηση. Στη συνέχεια, πρέπει να παρέχετε ορισμένες πληροφορίες σχετικά με τον ιστότοπό σας.

Στην περιοχή ρυθμίσεων της εφαρμογής σας, υπάρχει μια καρτέλα που ονομάζεται "Κλειδιά και αναγνωριστικά". Αντιγράψτε και τα δύο κλειδιά για αργότερα.

Σημαντικό: Μην μοιράζεστε το REST API Key. Κρατήστε το ιδιωτικό!

Αυτό είναι για τη ρύθμιση του OneSignal. Αυτό ήταν εύκολο!

Ρυθμίστε τον ιστότοπό μας

Στο επόμενο μέρος, θα προσθέσουμε τη λειτουργία ειδοποίησης στον ιστότοπό μας. Ο ιστότοπος θα πρέπει να περιμένει τις ειδοποιήσεις που αποστέλλονται από το OneSignal και να τις εμφανίζει στο χρήστη.

Για να ενημερώσουμε το πρόγραμμα περιήγησης ότι δημιουργείτε μια Προοδευτική εφαρμογή Ιστού, θα προσθέσουμε ένα αρχείο που ονομάζεται 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"}

Τα πρώτα έξι ζεύγη κλειδιού-τιμής περιγράφουν την εμφάνιση της εφαρμογής. Το gcm_send_id είναι σημαντικό για την αποστολή ειδοποιήσεων. Αν θέλετε να μάθετε περισσότερα για το manifest.json , μπορείτε να ρίξετε μια ματιά στην τεκμηρίωση του Mozilla.

Το πρόγραμμα περιήγησής σας δεν αναζητά αυτόματα τη δήλωση. Πρέπει να τοποθετήσετε τη διαδρομή σε αυτό σε κάθε έγγραφο HTML στην ετικέτα & lt; h e ad>.

 ...  ...

Επιπλέον, χρειαζόμαστε κάποιον κώδικα JavaScript για να συνδέσουμε τον ιστότοπό μας με το OneSignal.

Μπορείτε να βάλετε τον κωδικό σε μια ετικέτα σεναρίου στο τμήμα & lt; h e ad> Μην ξεχάσετε να τοποθετήσετε ξανά το my-app-id με το δικό σας αναγνωριστικό εφαρμογής OneSignal.

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

Όταν θέλετε να ζητήσετε από τον χρήστη να εγγραφεί στις ειδοποιήσεις σας, εκτελείτε αυτό το κομμάτι κώδικα.

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

Επιπλέον, χρειάζεστε έναν εργαζόμενο υπηρεσίας, ο οποίος ακούει στο παρασκήνιο για ειδοποιήσεις. Επομένως, χρειάζεστε δύο αρχεία στον ριζικό κατάλογο του έργου σας.

OneSignalSDKUpdaterWorker.js

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

OneSignalSDKWorker.js

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

Αποκτήστε πρόσβαση στο API χρησιμοποιώντας το Python

Το OneSignal διαθέτει ένα εύχρηστο API ανάπαυσης. Τα τελικά σημεία τεκμηριώνονται στην τεκμηρίωση προγραμματιστή του OneSignal.

Για να αποκτήσουμε πρόσβαση σε αυτό, πρέπει να στείλουμε αιτήματα HTTP. Επομένως, θα χρησιμοποιήσουμε μια βιβλιοθήκη που ονομάζεται αιτήματα . Για να το εγκαταστήσετε, μπορείτε να χρησιμοποιήσετε το pip, τον διαχειριστή πακέτων της Python.

pip install requests

Αυτό είναι το τελικό σημείο του API που πρέπει να στείλουμε μια ειδοποίηση: //onesignal.com/api/v1/notifications.

The HTTP protocol has several methods. In this case, we want to make a POST request. To do so, we need to import requests and execute a function.

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

OneSignal wants to verify that only you can send notifications to your website. So you have to add an HTTP header with your Rest API Key from OneSignal.

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

Remember to replace my-rest-api-key with your Rest API Key.

Moreover, you need some basic information about your notification.

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)

Replace my-app-id with your own app id. Next you choose who will receive your notifications. Example values are "All", "Active Users", "Inactive Users”. But you can also create your own segments. And for the last one, you add some content of the message in English. If you need another language, you can add it here too.

That’s it! If you subscribed to the notifications, you should get a push notification.

Send notifications using an API Wrapper

Because my code became kind of messy with many different notifications, I created an API wrapper for OneSignal.

API Wrapper

But what is an API wrapper? An API wrapper makes it easier for you to access an API. You can say that it is an API for an API. You call the API wrapper instead of the API directly.

You can install the wrapper called OneSignal-Notifications from pip.

pip install onesignal-notifications

Now you can import it and setup your client.

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

To send a Notification, you have to initialize the class SegmentNotificationand use the method send.

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

Ίσως αυτό φαίνεται άχρηστο, γιατί χρειάζεται ακόμη περισσότερες γραμμές κώδικα. Αλλά αν έχετε πολλές ειδοποιήσεις, καθιστά τη διαδικασία πολύ πιο εύκολη και ο κώδικάς σας πιο όμορφος.

Για παράδειγμα, εάν θέλετε να στείλετε μια ειδοποίηση, η οποία βασίζεται σε ορισμένες συνθήκες, το API wrapper έχει μια προσαρμοσμένη κλάση για αυτό.

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

Υπάρχουν πολλές προσαρμοσμένες παράμετροι που μπορείτε να παρέχετε για να προσαρμόσετε την ειδοποίησή σας. Για παράδειγμα, μπορείτε να προσθέσετε κουμπιά στην ειδοποίηση. Μπορείτε να βρείτε όλη τη λίστα όλων των παραμέτρων εδώ.

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)

Αν θέλετε να μάθετε περισσότερα σχετικά με το OneSignal-Notifications , μπορείτε να ρίξετε μια ματιά στο GitHub Repository ή στα έγγραφα.