What is the best way for 2 android clients to communicate over gae? Sometimes my server app(on GAE) has to send push notifications to clients. I have tried Channel API on javascript clients. C2DM services seems not be a good solution at this moment.
Does any have some suggestions for me?
I think this is currently not possible with GAE. The Channel API is only for used in Browsers.
But you could use a 3rd party pushing service for that (have a look at http://pusher.com/ or http://www.pubnub.com/) and combine this services with the GAE services (like the Datastore or Task Queue).
Related
I am having a kafka producer which is running in Spring boot i would like to integrate to andriod mobile(xamarin) to push some notifications without using FCM because google is restricted in china. So,i have successfully configured the producer below are my questions i have.
writing the consumer in spring and provide as a REST Service, in this case, need to maintain kafka as a separate server so that the consumer can run Independently.
In Case of writing the consumer in the android side and after receiving from the topic we can convert to an notification? is that possible?
Kafka doesn't send push notifications, so you'll need GCM (or whatever alternative works in your location).
Kafka clients pull information from the brokers, and doing so over a mobile connection is not recommended, so therefore having Kafka wouldn't really be useful in that scenario of the REST server, as it would only be a backend-only service.
We are developing step by step game and need to send a notification to all players of current game when someone made his turn. We have a REST server that uses jersey + jackson implementation.
We know that it is possible to use Google Cloud Messaging for this purpose, however it doesn't support windows phone platform (we want to support Android, iOS, Windows Phone). Yes, Microsoft has their own server, but it requires to learn API of 2 services. Also, we found that server sent events protocol exists that can help us.
Is it good idea to use SSE (on all mobile platforms) instead of push notifications or there are some better solutions?
Thanks.
Using SSE is a bad usage for your requirement, as it will only work when your app is running, no notifications will be received when your app is closed.
You should use the notification system of each plateform you target (GMC for Andorid, Apple Push Service for ios, etc.)
Each device needs to register to the notification server and then you can send notifications to registered devices.
Since your targetting multiple plateforms, it would be easier to use a third party service that will do the registering and message dispatching to all your targetted plateforms through a simple API.
As suggested by Rahul Mathur, Parse is a known and reliable provider. Other possibilities include AWS SNS, Urban Airship, PushWoosh, and a lot more !
I suggest you to use parse as it is easy to implement
For android : https://parse.com/tutorials/android-push-notifications
For iOS : https://parse.com/tutorials/ios-push-notifications
You can also customise your php script on parse console.
hi this is just for knowledge. i will try to explain as much as i can what is my question.
Usually i call on an Async Service every amount of time i.e updates on the server part for example are not reflected as soon as they change. whatsapp for example reflects the updates almost instantly. for example when a user is typing, it shows to the other user that he is typing.
In short what protocols do they use and how do they use it.
thank you.
What protocols do they use?
Application like Whats app,G-talk ,facebook etc they uses XMPP protocol for IM services.
What is XMPP?
The Extensible Messaging and Presence Protocol (XMPP) is an open
technology for real-time communication, using the Extensible Markup
Language (XML) as the base format for exchanging information. In
essence, XMPP provides a way to send small pieces of XML from one
entity to another in close to real time
As per latest version of specifications XMPP provides below services
Channel encryption [RFC3920]
Authentication [RFC3920]
Presence [RFC3921]
Contact lists [RFC3921]
One-to-one messaging [RFC3920]
Multi-party messaging [XEP-0045]
Notifications [XEP-0060]
Service discovery [XEP-0030]
Capabilities advertisement [XEP-0115]
Structured data forms [XEP-0004]
Workflow management [XEP-0050]
Peer-to-peer media sessions [XEP-0166]
This are the core services available in XMPP
Below are some Applications where XMPP can be used
Instant messaging
Groupchat
Gaming
Systems control
Geolocation
Middleware and cloud computing
Data syndication
Voice over IP (VoIP)
Identity services
Like HTTP XMPP also require server-client implementation
Below are some popular XMPP servers
Ejabberd
Openfire
Prosody
Tigase
You can find more information on xmpp server on this link
Different platform has their different XMPP client library you can more information on this link
If you want to implement XMPP client for android then you can use Smack 4.1 ,it is an open source XMPP client library written in java.
I have tried to list down basic feature of XMPP here but if you getting started with xmpp ,then there are lost of things to learn , free to ask any doubt regarding XMPP I will try my best .
Thank you
Note::
for the user who are still using aSmack should Upgrade to Smack 4.1 as aSmack has been deprecated!!
aSmack Deprecation Notice
aSmack to Smack Upgrade guide
You could implement the Google Cloud Messaging (GCM) service, as the GCM site says:
Google Cloud Messaging (GCM) for Android is a service that allows you
to send data from your server to your users' Android-powered device,
and also to receive messages from devices on the same connection...
This way you can inform from one client a status change, the backend then send the propper message to the desired clients and finally those clients app updates the status.
https://developer.android.com/google/gcm/index.html
I am looking for an optimal solution to implement chat server for android clients on GAE.
At the moment I use C2DM to notify particular users about new messages and pull data from server after such notification. But sometimes C2DM servers delay notification message and it stops to be realtime.
I also had a look on XMPP and it seems that it is mandatory to have an external XMPP server like google talk, so it is not what I am looking for too.
Is there another way to implement chat on GAE? Any advices are warmly appriceted!
The Reason why you are experiencing Delay with C2DM is because it is not real time. Google actually says this: It isnt the most reliable way. It suggest having a third party server such as XMPP
You can implement chat on App Engine using the Channel API, but the only supported clients for that are browsers. If you're prepared to make your Android app browser-based, that would be a solution - otherwise, you will have to look into third-party services, like Urban Airship.
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!