NodeJS to android app communication - android

I'm making a NodeJS server and an Android app that goes with it. I need to send alerts to my mobile app users that's coming from the web server. Something like a a chat app on the server and the android users getting the messages also (Facebook messenger?).
I have the server ready and Android app communicating to its database (for user login/getting user info/etc) using REST. I just need to figure out how to send info to the Android app WITH THE SERVER INITIATING COMMUNICATION. Any advice on where to start?

Start by looking at Google Cloud Messaging.
It's a free service that accepts messages from your server-based program and queues it to be sent to phones with your app when the phones are online.
Here is the overview on Android Developers.

YES!
Working with NodeJS, you have probably already heard of Socket.IO.
I'd say: Start there!
For your app to communicate with the server, there's also the java lib. These are great tools to start making any good real time service.
After you get along with this, you should also check GCM as #krisLarson suggested. And talkign about GCM, you have Node-GCM to make your work even easier.
Good luck!

Related

Push Notification from local server

I am building my first Android app and need to know how I could use push notification.
My project is a home alarm system and also I have built my own local web server. Now I want to push a notification from my server to my Android app when an alarm appears in my server.
Currently my garage doors use the MyQ app and when the garage door opens or closes I get a notification on my phone, I want to implement the same thing in my app.
I've been reading about the Google Firebase Cloud Messaging but it seems exceeding my need.
If you need push notification on your cell phone then you definitely need to integrate your app with Google Firebase. (or at least that's the right way of doing it).
Alternatively, there is something called as local notifications & background process in Android you could do long polling to check if the garage door is open (probably every 2 mins or something). However, I don't recommend that as it can drain your mobile battery.
Also I recommend using Flutter as oppose to using Native Android. As there are some pre-built libraries for android and Google Firebase integration.
Take a look at this Youtube video - https://www.youtube.com/watch?v=2TSm2YGBT1s
Ouh, maybe thats a little bit too much for starting with android - nevertheless I want to help you.
You need a communication protocol between your server and your phone (i.e. Firebase as you mentioned or Websockets).
If your server sends a message to you client (your phone) you have to create a notification. (Android Developer Guide). That's the theoretical part. You will also stumble across a lot of
challenges with
asynchronous programming.
Firebase might actually be the simplest option. You could build your own web socket service too, but that would probably be more than you need. See this previous question for more options: Android push notification without firebase
Android has some services that communicate with firebase to receive notifications.
You'll need to implement a service on top of your web server (using backend languages such as Python, Node.js, PHP,...) so it can send notifications when an event happened (like the door closed) witch isn't a simple way for a beginner.
then your web server sends a message to firebase and tells it to send a notification to my client.
so I highly recommend using firebase because of the simplicity of usage. otherwise, you should implement a separate service on your android phone to get the notification (if you want to run it locally) also as explained do the backend side.

Using a Windows Service as 3rd-party application server for GCM

Currently, I have an Android app and a Web Service written in C# using Visual Studio. Web service is published to an IIS. Android app makes calls to the web service to retrieve data from a MS SQL Server DB.
Furthermore, I have a Windows Service that responds to certain changes in the data of MS SQL Server DB. Currently, the Windows Service is capable to firing off an email when data in certain tables in MS SQL server DB is updated.
What I am interested in achieving now is to use Google Cloud Messaging to implement notifications in the Android app. So for example, I would like for the Windows Service to be able to fire off a message to GCM Connection Servers and therefore talk to the Android app.
As you can see all of my back-end is Microsoft technologies. I was wondering if anybody has experience connecting the different stacks that I am using. Or if not, if anybody has a solid workable idea as how I can achieve what I want o achieve with the least amount of change in the technologies I am using?
Specifically, Android documentation talks about 3rd-party application server, that I would like to replace with with my Windows Service. But I don't know how. Any insight from prior experience or at least suggestion of a solid path to achieve my goal is very much appreciated.
If you need just push notifications to android devices then it's enough:
- android application has to be able to pass the device RegistrationID (for example, through your Web Service).
- your service has to be able to send POST requests to https://android.googleapis.com/gcm/send in order to send the messages.
If you need some CCS features then you should implement 3rd-party application server using one of XMPP libraries for .net. It is also possible with Windows Service.

Android> Google Cloud Messaging vs simple polling for server changes

Creating an application that needs to be updated when a user registers on a web app. The simplest solution to me seemed to be to integrate a simple client side polling mechanism. But I've read recently about Google Cloud Messaging which would eliminate the need for polling, instead 'pushing' update events to registered devices.
This seems like an unnecessary addition of another layer of complexity, since the GCM server would act as a mediator to the real server.
Can anyone who has used GCM comment? Is it useful in this simple use case where the application is only updated once, or very infrequently?
If I should do something similar, I would integrate the MQTT protocol in my server and in the mobile app. It is explicitly designed for machine to machine. You can find references in the Mosquitto project web page
GCM would work fine for you, instead of polling the server where there may or may not be any new data wasting battery in the process where GCM you would only send a push when there is new data to get so the battery is not wasted on unnecessary calls to the server.
that being said google does not guarantee that any device gets the push so you need to take that into account

Instant Messaging on Android with Google Cloud Messaging

I was just looking at the new Google Cloud Messaging (GCM) and I was wondering if it is possible to use GCM for Instant Messaging on your Android application?
I saw you can send data, like a message, from a server, but is it also possible to send from one device to another one?
And how would this work?
Some example code would be really helpful..
Tnx!
The official docs on Google Cloud Messaging for Android does mention that GCM can be used to develop an instant messaging app.
...or it could be a message containing up to 4kb of payload data (so
apps like instant messaging can consume the message directly).
So we went ahead and created an instant messaging app using GCM. The server-side is powered by Google App Engine. You can read the complete tutorial here. Create an Instant Messaging app using Google Cloud Messaging (GCM)
So it is possible to use GCM for Instant Messaging on Android, to answer your question. However, reliability of GCM compared to XMPP for IM is another topic.
Just my two cents:
I think you should not use GCM for delivering IM. You should have a dedicated server where your Android IM apps will connect to, using a persistent socket connection. Your server will know who is online or not and therefore can present an 'online list' to all the apps.
GCM can come into play, while users are offline or not running your app. A GCM message can be sent to them to indicate 'XXXX wants to chat'. They can then launch your app and automatically connects to a chat session.
Google has said that the delivery of GCM messages are not guaranteed. This reason alone is not a good idea to rely on them for Instant Messaging.
Try pub nub - it is pretty easy to implement - send Im from one mobile to another - simply fire up the web page (see link) in the browser , and chat between pc, mobile - and works - with 'no server'. Code is for javascript but they also have java. Chat app using jquerymobile web app framework
You might want to check out how a server sends a message to the GCM Service. It is possible to use php on Server side so it should be possible to adapt that to a POST request directly out of your application. However, to communicate you need the registered ids of the devices you want to send data to. Means you will need something to store and get them. Best solution would be your own (web) server which stores all ids and handles the Message sending.

Android:How to send data from server to android with no request from the android?

How can I send data from a server to an Android device without the device polling for data?
This is called a server side 'push' and is commonly referred to as 'pushing'. This is a well known feature of the iPhone, however, it does not currently exist on the Android. Android Cloud 2 Device messaging has not yet been released to the general development community. you may want to check out projects such as MQTT and Deacon.
You might consider using Googles cloud to device messaging for a solution.
You'll have to sign up for an account and are only able to use AppEngine servers at the moment.
Your application has to use API level 8 (2.2) in order to be able to receive the cloud's pushes.
GCM (Google Cloud Messaging) is the easiest way, and while GCM provides the basic service of sending messages, there are companies out there that do help you get up and running.
You could take a look at companies like urban airship, xtify and mBlox (developer.mblox.com) to get started with this and have a few additional tools that help you structure the push notifications in a more structured way.
Good Luck with your development!

Categories

Resources