GCM Message ID In Service Worker Push Event - google-chrome

Is there any possibility to retrieve/get GCM message_id in service worker push event?
We have built an application to send browser push notification, and for notification data (title, body, image, etc.) we retrieve through our internal API. All seems working as expected, but we need to pass GCM message id to our API and according to GCM message_id we serve relevant notification data to requested service worker event.
Can anyone share your idea's or solution how to pass GCM message_id?
We tried a lot but haven't found any solution.

Related

Is it possible to send a message to a SQS Queue upon a HTML website button press?

I am trying to find a way to connect SQS with a website.
My general understanding of the project is that when a user clicks a button on the website it will send a message to the queue, and then I will have an Arduino receiving the message, which will then trigger a function that will move a robot. I have played around with Temboo and have managed to receive messages on the Arudino board, but I have no idea if it is even possible to send messages through a HTML button press. Is this even doable?
One way to send messages to SQS from a web browser is to use the AWS JavaScript SDK in the browser. You will need to supply credentials to the browser client so that it can make SDK calls, so ideally your client authenticates to your back-end and your back-end can send temporary (STS) credentials down to the client to use with the SDK.
Or you can use Amplify Pub/Sub, which is a higher-level framework than the AWS SDK.
Another way would be to create a small Lambda function, fronted with API Gateway, and then your browser client can POST to an HTTPS endpoint that will trigger your Lambda function to send the message to SQS.

Sending a message from FCM Console not working for Web Tokens

I am implementing Web Push Notification in an application and I have successfully registered the client app with GCM. I have the subscription object that contains the endpoint that looks like this.
"https://android.googleapis.com/gcm/send/dV4lSfI5J6Q:APA91bEU28F9YG5qNr3xSjvYlH2Mh1GPgiqMaRcjandHbpfqnVyAeZxqoE31OXYq4yzW2_vrkn74YHdgsITZP_6SELO8-xHf1hylquJefJdY85-Xx9AWTAPP9H6kfq7CKp23dsoQHbH
I read and found out that we need to use a third party library like web-push to send push using this endpoint to the clients because the payload needs to be encrypted according to spec. My objective is to send notifications to all my users, web + mobile, at once, using Firebase Console's Notification feature.
Is there a way to send push to web clients using Firebase console or to convert the GCM endpoint to an FCM token?
Update: If I try to use Firebase console to send push the token generated above, I get the following error.
As per testing this out, for some reason, registration tokens for Web are not working or allowed in the Firebase Console. Only tokens for Android and iOS do:
The request could still proceed where the console would show that it is sent/complete, but there wouldn't be any messages received.

push notification azure to FCM topics

I want to push notification messages from azure notification hub to the FCM using topics.
Example: I want to send a message to the FCM from notification hub. but this message will be directed to topics. When using postman for example, I just have to send this json:
{
"to" : "/topics/scalability",
"notification":{"body":"topics message sent"}
}
to https://fcm.googleapis.com/fcm/send (while providing the FCM key ofcourse).
By doing this, I am able to receive the notification on a chrome app I put in place (the app is just the same as you can find here
Now my problem is that when I send this same message on Notification hub (Azure), I don't receive it on my web app. My understanding is that the Notification Hub does not push the message (json) in its simple format, but why is that ?
Since I successfully pushed the message to FCM, isn't the FCM supposed to interpret the
"to" : "/topics/scalability
part ?
I found a workaround. I send notifications using the simple version of the Notification hub method:
// Send the message to FCM NotificationOutcome outCome = await this.hubClient.SendGcmNativeNotificationAsync(payload).
I then receive all the messages from my chrome app
Azure Notification Hub supports registering tags with individual device. And you can use tag expressions to target specific sets of devices, or more specifically registrations, when sending a push notification through Notification Hubs. For targeting, you should use tag expression instead FCM ‘to’ property. Please see below article for more details on routing/expressions.
https://learn.microsoft.com/en-us/azure/notification-hubs/notification-hubs-tags-segment-push-message
I know this is an old question but I also was confused by this when starting my first Topics-based notification hub app, so hope this saves someone, somewhere some time. What SHOULD, in my opinion, be explicitly stated somewhere in the azure NH documentation, is that using the hub with PNS such as Firebase will OVERRIDE any PNS specific Topics functionality. My understanding is that if you decide to go the Hub route, you ditch Firebase Topics etc and work exclusively with Hub Tags.
If you think about it, it actually makes a lot of sense as it means the Hub is dealing with Topic filtering rather than firing off all messages and making the PNS systems do their individual things.
So in short, if you go the NH route, you cant use PNS topics, I found the two don't play nicely together.

Receive push notification from server when app is closed

I need advice after looking a lot about receive push/toast notifications regardless of the status of the application (closed or open).
The application communicates with a NodeJS API.
The idea is that a user logs in once to the application and then can receive notifications (depending on his account): i the user restarts his system for example, at startup he receives notifications without having to open the application (like the Mail application for example).
Most tutorials on MSDN use Azure and I don' use this. I would like to know if you have tips or links (tutorials, ...) for doing this in an UWP (or WinRT) application.
Thanks in advance for your help.
Regards
You can send push notifications from your NodeJS api via Windows Notification Service. This service has nothing to do with azure but when using Azure Notifications Hub it will be easier to get it implemented, but again this is not required;
In essence:
- register your app in dev center
- obtain a client id and client secret to use WNS in the dev center
- When your app launch it obtains a push notification channel uri and sends this to your backend. Your backend need to save all the URI's for the different devices
- When you have a notification select the uri's of the devices you want to send the push notification to
- post a xml message (based on what you want to update, tile, toast, badge or raw) to the URI's. To be able to post you need to authenticatie with the client id and client secret
more detailed read: https://msdn.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-windows-push-notification-services--wns--overview#

Check if device is offline with firebase cloud messaging

When sending messages via Firebase Cloud Messaging, the repsonse from FCM servers tell about the processing of the Request but not whether it was delivered or not to the device.
So, for offline devices how could we know whether message was delivered?
For example,
{"multicast_id":7138524052704576147,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1472139369768700%d42090b5d42090b5"}]}1
the above JSON is a response from FCM server for request with time_to_live:0 and priority:'high' but the situation is that device for which I want to receive the message is offline.
Is there any possible way to detect if the device is offline?
Yes. If you link your FCM API key with Developer Console, you have access to View FCM statistics and issues. In particular:
Using FCM Diagnostics, you can troubleshoot messages sent through FCM. You can look up the message(s) by registration token or message ID.
…
You can look up messages sent through Firebase Cloud Messaging with a registration token or message ID.
The message status returned indicates whether the message was delivered, stored, expired, etc.
Note that this diagnostic tool should only be used if you have a made a recent request. This is what the Developer Console says in the FCM Diagnostics section:
This is not a real-time diagnostic tool, the data shown may be a few minutes out of date, and is only kept for a few days. If you do not see the data that you were expecting, please try again after a short while.