Как да изпращате известия до вашето уеб приложение с помощта на Python

Нативните приложения станаха изключително популярни напоследък, най-вече заради функции като работа офлайн, преходи, лесна дистрибуция и, разбира се, push известия. Но за съжаление ви трябват добри познания на езици като Java или Swift, за да създадете ценно родно приложение.

Прогресивни уеб приложения

Прогресивните уеб приложения (PWA) са приложения на JavaScript, които се изпълняват в браузъра. Те полагат усилия да представят някои от функциите на собственото приложение в мрежата. PWA са лесни за разработване, ако имате основни познания по HTML, CSS и по-специално JavaScript. Освен това, ако вашата услуга вече е достъпна за настолни устройства на уебсайт, е по-лесно да добавите функционалностите на уеб приложение, вместо да разработвате собствено мобилно приложение.

Известия

Известията държат потребителите информирани за нови съобщения, казват им за нова публикация в блога и т.н.

Много местни приложения изпращат push известия до потребителя. Но това е възможно и с помощта на PWA и API за известия.

OneSignal

В този урок ще използваме OneSingal за изпращане на известия до нашето уеб приложение. OneSignal е мощен инструмент, който осигурява опростен интерфейс за изпращане на известия. Те също така предоставят API за почивка, който ще използваме за изпращане на известия.

Настройте OneSignal

За да изпращате push известия, първо трябва да настроите OneSignal. За това имате нужда от акаунт в OneSignal. Насочете се към уебсайта им и натиснете „Вход“ в горния десен ъгъл.

След това ще трябва да създадете приложение. Дайте му име и изберете „Платформа за настройка“. Тук избирате „Всички браузъри“. След това избирате „персонализиран код“ като интеграция. След това трябва да предоставите информация за вашия уебсайт.

В областта за настройки на вашето приложение има раздел, наречен „Ключове и идентификатори“. Копирайте двата клавиша за по-късно.

Важно: Не споделяйте своя REST API ключ. Пазете го лично!

Това е всичко за настройка на 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.

Протоколът HTTP има няколко метода. В този случай искаме да направим POST заявка. За целта трябва да импортираме заявки и да изпълним функция.

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

OneSignal иска да потвърди, че само вие можете да изпращате известия до вашия уебсайт. Така че трябва да добавите HTTP заглавка с вашия Rest API Key от OneSignal.

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

Не забравяйте да замените my-rest-api-key с вашия Rest API Key.

Освен това се нуждаете от основна информация за известието си.

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)

Заменете my-app-id с вашия собствен id на приложението. След това избирате кой да получава вашите известия. Примерните стойности са "All", "Active Users", "Inactive Users”. Но можете също да създадете свои собствени сегменти. И за последната добавяте малко съдържание на съобщението на английски. Ако имате нужда от друг език, можете да го добавите и тук.

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.