Onesignal vs GCM(FCM) - android

I use FCM in my social messaging app. Sometimes FCM messages can not be delivered from the server to client.
Is there any benefit to using OneSignal when I've got to do the full FCM setup as well in server and client sides?
I reviewed OneSignal documents this link: https://documentation.onesignal.com/docs/product-overview
but I could not understand which was more useful.

I help work on OneSignal. Here are some reasons that OneSignal could be useful in this case.
OneSignal provides a single API and management interface for APNS (iOS notifications) and FCM (Android notifications).
OneSignal tracks notification click-rate for individual messages and campaigns.
OneSignal provides an SDK that takes care of reliably displaying messages that are received, restoring messages after an app update (on Android), and making it easy to customize notification categories, sounds, LED color, and Lockscreen visibility.
OneSignal stays up to date with any changes made to the operating system or notification APIs so you get access to the latest platform features without any additional engineering work.

FCM has two types of messages.Notification message which deliver in most cases, and data message which doesn't sometimes. A possible solution is to set priority of data message to HIGH while sending from server side.
https://firebase.google.com/docs/cloud-messaging/concept-options

Related

Android push notifications without FCM Backend

It seems to me that in the past, there was GCM (Google Cloud Messaging) which I understand as an endpoint one could send request to and if source and target are properly setup, a push notification is shown on target Android device.
Nowadays, GCM is deprecated and FCM (Firebase Cloud Messaging) is offered everywhere. It seems to me that FCM contains one more layer - FCM Backend (including logic to use Apple's APNs or web push).
Besides the contradicting information that FCM "delivers messages at no cost" and "firebase pricing plan" page where "no cost" means only "up to some limits", I would be interested:
Is there any possibility to send the push notification "the old way" (similarly to APNs) by just utilizing the Android Transport Layer (as specified on the FCM Architectural Overview) at no cost with no limits (thus not using the FCM Backend with the added value)?
There is no cost to calling FCM to send messages, and the only usage limits are to protect misuse of the service from affecting other users.
I don't think there ever was a way to send device-to-device messages through GCM, but definitely hasn't existed in FCM since its introduction in 2016.
You can send messages from a trusted environment which then delivers them to the targeted devices, and you can (much less common) send messages from a device to FCM and from there to your server.
Sending messages needs to devices needs to happen from a trusted environment, to prevent a malicious user from being able to send whatever message they want to all of your users.

send notification to ios and android using FCM Rest Api (New Versio)

I have a net core Back-End (3.1).
I created a page in which admin should enter title and description and pick a user to send a notification.
I want to send notification payload to Apple devices and not to an android device similar to a custom notification.
there is a platform-specific notification in Firebase Cloud Messaging documentation .
However, I was not able to implement it .
If you wanna only send the notification to Apple devices only. Then APNS Push notification push gateway will be suitable for you. See here
Certainly, FCM can also deal with this issue. You need to add the ApnsConfig to your request and send it to the FCM server.
If you cannot implement it, you need to mention more detail about your issue (trace log, exception info, etc.)

How to Integrate FCM with Ejabberd?

Environment:
Ejabberd Version : 16.04
Smack-android-4.1.0
I have created an Android chat application with a XMPP server. However due to Google play permission issue I had to narrow down the feature from app which supported receiving incoming message notifications when the app is in the background.
As an alternative I received the following suggestion from GooglePlay Review Team.
Once you’ve removed this permission, you might consider using Firebase
Cloud Messaging (FCM) if your app’s message delivery requires a
temporary exemption from battery optimization. Please set high
priority only if the message is time-critical and requires the user’s
immediate interaction, and be aware that setting your messages to high
priority contributes to more battery drain compared to normal priority
messages
So at the moment users can send messags via the app. But when he close the app, he will be considered as an offline user, and will not receive any notifications from app. When he opens the app again, he will get all the offline messages those were saved the Ejabberd server.
I want to enhance the current app so that even though a user had closed the app he will still receive a notification when some one sends a message to him (Similar to whatsapp)
Is there a module in ejabberd which integrates the server with FCM and handles this?
If we can not achieve this by Ejabberd, is there a 3rd party library to support this?
If not do we have to write an Erlang module from scratch?
I found similar questions in the internet but I could not find any working solution. Since I am not much experienced with Erlang and would be glad to hear your solutions/ideas on this. Thanks in advance.
This can be achieved in Ejabberd with offline_message_hook. This hook is trigger when sending a message to the receiver and receiver in an offline state. So create a custom module using this hook and you can send a push notification to FCM and APNs servers.
Refer this blog -- https://jasonrowe.com/2011/12/30/ejabberd-offline-messages/
Looks like you need to try apply approach below:
Create REST API for store of user tokens with JID's of users
Create custom hook for fetch XML packages.
Integrate into project the epns library(this library can send FCM/APNS)
In custom hook call the spawn function where will be get the user token from DB by JID and creating payload with sending FCM/APNS notification

How to send push notifications to Ionic applications?

I am creating mobile application using latest version of Ionic 3. And I am at the point where I need to implement push notifications. I am using FCM. I have managed to done it for Android phones using this plugin: https://github.com/phonegap/phonegap-plugin-push. Reading documentation for this plugin, it says that for Android I should send only Data Messages and that that is the best practice. It also says that send Notification and Data payload would not work properly:
When your app is in the foreground any on('notification') handlers you have registered will be called. If your app is in the background, the notification will show up in the system tray. Clicking on the notification in the system tray will start the app and your on('notification') handler will not be called as messages that have notification payloads will not cause the plugins onMessageReceived method to be called.
But for IOS I need to send notification message with data payload. This would not be a problem if I target directly devices, however I need to send Topic Messages. So the way I see is that on my server I need to implement this logic:
Let's say that the name of topic is FOOD-AND-DRINKS:
function onSomeEvent($data) {
// send push notification to topic ANDROID~FOOD-AND-DRIKS
// send push notification to topic IOS~FOOD-AND-DRINKS
}
Also, since in the future my plan will include multiple cities, and not all people would like to listen for notifications for cities other the one where that person lives, so then my topic would be PLATFORM~CITY~CATEGORY.
So my question would be, is there any better plugin for handling notifications, or some service between my server and Google FCM and that service would take care of that, or this is quite OK what I have proposed?
You can use cloud functions to be able to send notifications since you are using FCM also.
More on this here: https://firebase.google.com/docs/functions/
Cloud Functions for Firebase lets you automatically run backend code in response to events triggered by Firebase features and HTTPS requests. Your code is stored in Google's cloud and runs in a managed environment. There's no need to manage and scale your own servers.
Using cloud functions you can use database triggers like onWrite() and it will be able to send notifications if you have data payload and/or notification.
But if you use data payload alone then you can send if android device is in background also.
Regarding Topics:
If you have multiple cities in your application, then you can let the user register to each topic. You can do in the database like this:
city-category
id_here
cityname: nameX
//other details
id_here1
cityname: nameY
//other details

Is it mandatory to use GCM service to show push notification?

I am developing a Cordova app having a Java backend. I want to know if it's mandatory to use GCM service in order to show a push notification in Android/iOS (in notification tray)?
I am using Apache Kafka, MQTT brokers in my backend. Is it possible to show push notification using these solutions, i.e. using completely self defined solutions?
Using MQTT & other brokers I am able to send realtime data to users but how to show those message as native notification in notification bar is my problem.
Yes, you will need to use GCM to send push notifications to Android devices. You can even use GCM to send push notifications to iOS devices (GCM makes request to APNS (Apple push notification service) to make it work).
But GCM for iOS isnt trusted much.
You can use any backend to send push notification to your devices. You just need to make a request to GCM/APNS.
This is the cordova plugin for push notification.
Integrating with GCM is damn easy, but it takes a little effort with APNS.
Most people use third party paid services like Pushwoosh to implement their push backend because its convenient. There is a free alternative OneSignal but it tracks your usage.
Follow this guide to setup push for APNS. (You can just use the Setup certificate part from this guide, since you are not using C#)
To receive push you need use/implement GCM(and actually FCM, because of GCM deprecation)
To show notification from app it is unnecessary to implement GCM/FCM

Categories

Resources