Creating and sending push notifications to Firefox web by using Event Notifications
Create an Event Notifications service, add a push destination for Firefox, and send messages to Firefox web devices.
What is Event Notifications?
Event Notifications is an event notification routing service that notifies you of critical events that occur in your IBM Cloud account or triggers automated actions by using webhooks. You can filter and route event notifications from IBM Cloud services like Availability Monitoring, to email, SMS, push notifications, and webhooks.
How do clients use Firefox web push notifications?
The following diagram shows you how clients use Firefox web Push Notifications.
Objectives
This tutorial shows you how to send push notifications as follows:
- Create a website with Event Notifications.
- Get Firefox web credentials.
- Download the SDK and complete the notifications setup.
- Configure and send Firefox web Push Notifications to a browser.
Create an Event Notifications service instance
- Log in to your IBM Cloud account.
- In the IBM Cloud catalog, search
Event Notifications > Event Notifications. - Select a
Regionfrom the list of supported regions and select apricing plan. - Provide a
Service name. - Select a
resource group. - Accept the licensing agreements and terms by clicking the checkbox.
- Click
Create.
Add a generic API source
Take the following steps:
- Go to the
Sourcessection of the Event Notifications dashboard. - Click
Addand select an API Source. - Type a name and an optional description and click
Add.
Create an Event Notifications destination
Click Destinations in the Event Notifications console and add the following destination details:
Name: add a name for the Destination.Description: add an optional description for the destination.Type: selectFirefox Push Notificationstype from the dropdown list.- Select a destination plan: Pre-production destination or Production destination.
Pre-production destination- select this destination as low-cost push destination, for your development and test environments.Production destination- utilize the full capability of this destination. Unlimited devices and outbound messages allowed.
- Provide the URL of your website.
- Click Add.
- Once Firefox destination is created. Edit the created destination to get
public vapId keyrequired for web sdk.
Create an Event Notifications topic
Select Topics in the Event Notifications console and click Create. Enter the following topic details:
Name: enter a name for the topic.Description: add an optional description for the topic.Source: select a source from the dropdown list.Event type: select event type from the dropdown list.Event sub type: select event sub type from the event sub type dropdown list.Severity: select severity from the severity dropdown list.Advanced conditions: write your own custom conditions, which must follow jsonpath specifications. Jsonpath expressions can be validated at jsonpath.com or extendsclass.com.
Create an Event Notifications subscription
Click Subscriptions in the Event Notifications console. Enter the following subscription details:
ClickCreate to display subscription wizard.- Complete the following subscription details:
Subscription name: name of the subscription.Subscription description: add an optional description.
- Under the
Subscribe to a topicsection, select a topic from the drop-down list and select a destination from the destination drop-down list. Destination type: select type underDestinationand clickAdd.
Set up Event Notifications Firefox web SDK
The Firefox web SDK enables Firefox websites to receive push notifications. Complete the following steps to install Event Notifications Firefox web SDK, initialize the SDK, and register for notifications for your website.
-
To include the SDK in your project, add the
ENPushSDK.js,ENPushServiceWorker.jsandmanifest_Website.jsonfiles to your project root folder. -
Edit the manifest_Website.json file.
{ "name": "YOUR_WEBSITE_NAME" } -
Change the
manifest_Website.jsonfile name tomanifest.json. -
Include the
manifest.jsonin the<head>tag of your html file.<link rel="manifest" href="https://github.com/IBM/event-notifications-destination-webpush-sdk/blob/main/manifest_Website.json"> -
Include IBM Cloud web push SDK to the script.
<script src="https://github.com/IBM/event-notifications-destination-webpush-sdk/blob/main/ENPushSDK.js" async></script> -
Complete the following steps to enable the website to initialize the SDK.
var enPush = new ENPush() function callback(response) { alert(response.response) } var initParams = { "instanceGUID": "<instance_guid>", "apikey": "<instance_apikey>", "region": "<region>", "deviceId": "<YOUR_DEVICE_ID>", "firefoxDestinationId": "<firefox_destination_id>", "firefoxApplicationServerKey": "<Firefox_VapId_public_key>" } enPush.initialize(initParams, callback)-
region: Region of the Event Notifications instance. eg;us-south,eu-gb,au-syd,eu-deandeu-es. -
deviceId: OptionaldeviceIdfor device registration.
-
-
To register for notifications, se the
register()orregisterWithUserId()API to register the device with IBM Cloud Event Notifications service. Choose either of the following options:-
Register without
UserId:enPush.register(function(response) { alert(response.response) }) -
Register with
UserId. ForuserIdbased notification, the register method will accept one more parameter -userId.bmsPush.registerWithUserId("UserId",function(response) { alert(response.response) })UserIdis the user identifier value with which you want to register devices in the push service instance.
-
-
The
subscribeAPI subscribes the device for a tag. After the device is subscribed to a particular tag, the device can receive notifications that are sent for that tag. Add the following code snippet to your web application to subscribe to a list of tags.enPush.subscribe(tagName, function(response) { alert(response.response) }) -
When the setup is complete, run your application and register for push notifications.
Send notifications to the Firefox device
Use the Send Notification API to send the push notification for the Firefox device. You can use the Node or Go admin SDK instead of calling the API directly.