Worklight Unified Push Notification - JMS Queue Pulling Architecture - push-notification

For reference check the below URL.
https://www.ibm.com/developerworks/community/blogs/worklight/entry/worklight_push_notification_possible_architectures?lang=en
I have hosted my Worklight Server in IBM softlayer. Is SoftLayer Message Queue is a JMS 2.0 API based message queue or different. If its a JMS based message queue, it possible to use that for IBM Worklight Unified Push Notification.

It is not clear from your question if you are asking whether this is possible, or that you have done so and ask for opinions... Edit the question and clarify.
If the SoftLayer Message Queue supports JMS, then it will probably work.
If not, then you should probably go for the second architecture from the linked blog post.

SO a few clarification here:
1 Of this is hosted on SoftLayer --- can u add more details... SL has may products include typical IaaS type offerings and services and API include Message queuing an Object storage.
2. Softlayer also provides server/storage/network etc which are IaaS type offerings.
assuming you installed WL on a instance and has access to SL networks etc to the other services hosted on SL, if connectivity exists and you can create JMS adapters, this seems possible.
Now:
1. The IBM Worklight JMS adapter can be used to send and receive messages from a JMS-enabled messaging provider. It can be used to send and receive the headers and body of the messages.
2. To start receiving push notifications, an application must first subscribe to a push notification event source. The event source is a push notification channel to which mobile applications can register. An event source is defined within a Worklight adapter. The device user must approve the push notification subscription.
so technically you should be able to use JMS compliant message queue as an even source.
N

Related

Web Push without Firebase Cloud registration?

On this page they explain Web Push with Service Workers stating
Chrome currently uses Firebase Cloud Messaging (FCM) as its push service. FCM recently adopted the Web Push protocol. and then explaining Firebase and so on...
Since the Service Worker gives me a unique endpoint and a pubkey, it seems to me that technically it should be possible to use that endpoint directly, without anything additionally - except if Google deliberally forces a registration.
I mean, just send a POST request to that endpoint, sending just the notification data encrypted/authenticated using the pubkey without any "VAPID".
Do I absolutely need a Firebase account or is it possible to access the endpoint directly (without additional registration) if I just want to send a notification to a single device?
It's 2021 and all major browsers implement a push service and support VAPID now. You use a web push library (Javascript, Python, C#,..) of choice.
There is no need to register anywhere.
The technical mechanism in short is this:
You generate two VAPID keys once using the push library. One key is private and one is public.
The public key is used in the javascript as "application server key" when subscribing to the push service of the browser.
If the subscription is successful you receive a subscription object from the browser containing an endpoint and two additional keys.
The endpoint is an address depending on the web browser / manufacturer and the service it is currently using. The endpoints look like (Oct 2021) e.g.
Google Chrome h_tt_ps://fcm.googleapis.com/fcm/send/cz9gl....., Microsoft Edge h_tt_ps://wns2-par02p.notify.windows.com/w/?toke....., Mozilla Firefox h_tt_ps://updates.push.services.mozilla.com/wpush/v2/gAAAAABhaUA....
If your server program has this information (endpoint and keys from subscription object) it can send a push message to the endpoint with the push library. The corresponding service in the web, hosted by the manufacturer sends this to the browser's service on the device.
There is the PushAPI which shall get used.
But it doesn't is supported by every Browser at the moment.
You can find nice examples in the Service Worker Cookbook of Mozilla

Push notification server implementation

I have a mobile and web application where I would like to send my users push notifications. I'm planning to use a message broker which supports MQTT protocol for push notification server implementation. User base is expected to reach 1 million and many notifications are user specific. My question is do I have to use separate queue for each user or is there any other-way to sort this out without creating a queue for each user?
MQTT doesn't use queues, it uses topics
And if you only want a single user to receive a message then yes they will need an individual topic each.

can azure service bus (for a topic) send notification to a rest end point (POST)

I need to azure service bus to notify an end point (Rest - POST) whenever a message comes to a particular topic.
In AWS, it is done this way
AWS llink
What is the equivalent in Azure.
Note: I dont want to write code that will receive the message and then call the end point.
Azure Service Bus is a messaging service, not a Notifications service. As such, it deals solely with messaging, and doesn't create notifications for you.
AWS combines SQS (Simple Queuing Service) with SNS (Simple Notification Service) behind the scenes to allow you the functionality you're describing. This is to allow SQS to have a behaviour of events. Azure Service Bus has a native support for Topics and Subscriptions (if that's what you're looking for). I.e. rather than just sending messages to a queue, the message is sent to a topic and appropriate subscriber(s) will get it.
So the short answer to this question in case you don't want to receive the message and trigger a notification is "no".
Saying that, if you're OK with "serverless" functions (similar to AWS Lambdas), you could use Azure Functions to achieve this goal.
Looks like finally azure released Azure Event Grid which kinds of does this out of the box.. very similar to AWS SQS + AWS SNS combo
https://learn.microsoft.com/en-us/azure/event-grid/overview

WorkLight 6.2 - How to check previous notification messages which were sent in WorkLight console?

We are currently using Worklight 6.2 for our project. We are able to successfully send broadcast notifications. However, the basic reporting in the worklight console under the Push Notifications tab does not show any data regarding the broadcast notifications that have been sent. It appears that the reporting is only for notifications where device(s) will subscribe to an event source. Is that correct? Since there is no event source for broadcast notifications, is there no way to get the basic reporting ( # of messages sent, platform, number of subscribed users ) etc. in the worklight console for broadcast notifications?
If additional reporting is needed, is the only way to get it from the notification_proc table (we will not be using BIRT)? and create a custom page for the user or is there any out of the box provision to show more in the worklight console itself
For tag-based notifications (this includes broadcast notifications), there is currently no visual indicator in either Worklight Console (via the Push Notifications tab), or Worklight Operational Analytics Platform.
This information is currently not stored in the database, but this may change in a future release.
Feel free to submit a feature request so that the product managers could take it into account for future releases: https://developer.ibm.com/mobilefirstplatform/help/

How to convert an ASP.NET/PushSharp project to Azure to send push notifications?

I've been using ASP.NET and PushSharp to send push notifications to my iOS app clients with the simple following code (after certificate configurations etc):
//ASP.NET + PushSharp
AppleNotification notification = new AppleNotification(PushToken).WithAlert(message);
broker.QueueNotification<AppleNotification>(notification);
This worked perfectly on isolated hosts running classic IIS/ASP.NET but now I'm moving towards Windows Azure. When I try this code on Windows Azure, notifications sometimes fail to send, and restarting the website (Standard mode) helps. However, since this is an unreliable approach I've decided to move to Azure's Notification Hub service. I've created the hub, uploaded my certificates, started coding but I couldn't find the equivalent of my previous code. I don't need to broadcast messages to all users, I need to send a push notification to a single device, given that I have the push token. I've looked at Windows Azure ServiceBus Push Notifications APNS Architecture but the link provided at the answer is extremely confusing and I couldn't understand it. How can I, simply push a message to a push token on Windows Azure? Do I have to use notification hub? (I don't use a VM) Any simple approach is welcome, pure ASP.NET/PushSharp-based approach is preferred as I don't need to change my whole codebase.
I'm not sure what kind of object a PushToken is. The way Notification Hubs work is, rather than providing a one-to-one messaging model (where you must identify each and every recipient of the message, whether that is by channel, device token, or registration ID), it provides a tag-based model. However, this does not mean that tags can't be unique to individual users, and in fact you can used just about any token as a tag.
This is a new model, unlike Azure Mobile Services or direct use of APNS, so it's not likely to be directly portable from your existing code. But, in my opinion, the Notification Hubs model is simple once you understand tags. It supports native payloads (constructed by the server that is sending the notifications) and template payloads (where the template is constructed by the receiving device and provided to Notification Hubs at registration time, and then parameters in the template are supplied by the server when it sends the notifications to the templates).

Resources