Cara menghantar pemberitahuan ke Aplikasi Web anda menggunakan Python

Aplikasi asli telah menjadi sangat popular baru-baru ini, terutamanya kerana ciri-ciri seperti bekerja di luar talian, peralihan, mudah diedarkan dan tentunya pemberitahuan push. Tetapi sayangnya, anda memerlukan pengetahuan bahasa yang baik seperti Java atau Swift untuk membuat aplikasi asli yang berharga.

Aplikasi Web Progresif

Aplikasi Web Progresif (PWA) adalah aplikasi JavaScript yang berjalan di penyemak imbas. Mereka berusaha untuk membawa beberapa ciri aplikasi asli ke web. PWA mudah dikembangkan jika anda mempunyai pengetahuan asas mengenai HTML, CSS, dan khususnya JavaScript. Lebih-lebih lagi, jika perkhidmatan anda sudah dapat diakses untuk peranti desktop di laman web, lebih mudah untuk menambahkan fungsi Aplikasi Web, daripada mengembangkan aplikasi mudah alih asli.

Pemberitahuan

Pemberitahuan memberi pengguna maklumat mengenai mesej baru, memberitahu mereka tentang catatan blog baru, dan sebagainya.

Banyak aplikasi asli menghantar pemberitahuan push kepada pengguna. Tetapi ini juga mungkin dilakukan dengan menggunakan PWA dan API Pemberitahuan.

SatuSignal

Dalam tutorial ini, kami akan menggunakan OneSingal untuk mengirim pemberitahuan ke aplikasi web kami. OneSignal adalah alat yang kuat yang menyediakan antara muka mudah untuk mendorong pemberitahuan. Mereka juga menyediakan Rest API, yang akan kami gunakan untuk mengirim pemberitahuan.

Sediakan OneSignal

Untuk menghantar pemberitahuan push, anda perlu menyiapkan OneSignal terlebih dahulu. Oleh itu, anda memerlukan akaun di OneSignal. Pergi ke laman web mereka dan tekan "Log masuk" di sudut kanan atas.

Seterusnya anda perlu membuat aplikasi. Beri nama dan pilih "Platform persediaan". Di sini anda memilih "Semua Penyemak Imbas". Selepas itu, anda memilih "kod tersuai" sebagai penyatuan. Kemudian anda harus memberikan beberapa maklumat mengenai laman web anda.

Di kawasan tetapan aplikasi Anda, ada tab yang disebut "Kunci & ID". Salin kedua-dua kunci untuk kemudian.

Penting: Jangan berkongsi Kunci API REST anda. Rahsiakannya!

Itu sahaja untuk menubuhkan OneSignal. Itu mudah!

Sediakan laman web kami

Pada bahagian seterusnya, kami akan menambahkan fungsi pemberitahuan ke laman web kami. Laman web perlu menunggu pemberitahuan yang dihantar oleh OneSignal dan memaparkannya kepada pengguna.

Untuk memberitahu penyemak imbas bahawa anda membuat Aplikasi Web Progresif, kami akan menambahkan fail bernama manifest.json ke akar projek kami.

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

Enam pasangan kunci-nilai pertama menerangkan penampilan aplikasi. The gcm_send_id adalah penting untuk menghantar pemberitahuan. Sekiranya anda ingin mengetahui lebih lanjut mengenai manifest.json , anda boleh melihat di Dokumentasi Mozilla.

Penyemak imbas anda tidak mencari manifes secara automatik. Anda harus meletakkan jalan ke dalamnya dalam setiap dokumen HTML di tag & lt; h e ad>.

 ...  ...

Selain itu, kami memerlukan beberapa kod JavaScript untuk menghubungkan laman web kami ke OneSignal.

Anda boleh memasukkan kod itu dalam tag skrip di bahagian & lt; h e ad>. Jangan lupa untuk meletakkan semula my -app-id dengan id aplikasi OneSignal anda sendiri.

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

Apabila anda ingin meminta pengguna untuk melanggan pemberitahuan anda, anda melaksanakan sekeping kod ini.

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

Selain itu, anda memerlukan pekerja perkhidmatan, yang mendengar pemberitahuan di latar belakang. Oleh itu, anda memerlukan dua fail dalam direktori root projek anda.

OneSignalSDKUpdaterWorker.js

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

OneSignalSDKWorker.js

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

Akses API menggunakan Python

OneSignal mempunyai API Rehat yang mudah digunakan. Titik akhir didokumentasikan dalam Dokumentasi Pembangun OneSignal.

Untuk mengaksesnya, kita perlu mengirim permintaan HTTP. Oleh itu, kami akan menggunakan perpustakaan yang disebut permintaan . Untuk memasangnya, anda boleh menggunakan pip, pengurus pakej Python.

pip install requests

Ini adalah titik akhir API yang perlu kami kirimkan pemberitahuan: //onesignal.com/api/v1/notifications.

Protokol HTTP mempunyai beberapa kaedah. Dalam kes ini, kami ingin membuat permintaan POST. Untuk melakukannya, kita perlu mengimport permintaan dan menjalankan fungsi.

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

OneSignal ingin mengesahkan bahawa hanya anda yang boleh menghantar pemberitahuan ke laman web anda. Oleh itu, anda harus menambahkan tajuk HTTP dengan Kekunci API Rehat anda dari OneSignal.

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

Jangan lupa ganti my-rest-api-key dengan Rest API Key anda.

Selain itu, anda memerlukan beberapa maklumat asas mengenai pemberitahuan anda.

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)

Ganti id-aplikasi-saya dengan id aplikasi anda sendiri. Seterusnya anda memilih siapa yang akan menerima pemberitahuan anda. Nilai contoh ialah "All", "Active Users", "Inactive Users”. Tetapi anda juga boleh membuat segmen anda sendiri. Dan untuk yang terakhir, anda menambahkan beberapa kandungan mesej dalam bahasa Inggeris. Sekiranya anda memerlukan bahasa lain, anda juga boleh menambahkannya di sini.

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)

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.