AMQP Strategy to manage mobile offline data - android

I m actually working on a little application with Android and NodeJS as backend.
I want to manage realtime data & offline data so I decided to use AMQP through RabbitMQ.
My problem
In my domain, a device is related to a place, and this place to a city. I want to be able to broadcast information to devices in a specific place, in a specific city.
I want to be able to have the message in a queue, and when all the devices in this queue have consumed the data, it's auto deleted by rabbitMQ, knowing that every devices dont consume the information at the same time (offline problems).
Question
What is the best strategy to manage this kind of problems ?
Thanks for advance

Take a look at this guide: http://www.rabbitmq.com/tutorials/amqp-concepts.html specifically about the topic exchange, which is what your probably want to use. In your case I think each device needs it's own queue bound to a topic exchange.

Related

How do I send data from server to an app?

I want to send some data:
Database ==> server ==> app
I don't know what type of communication to use.
Restful api ? Tcp ? or just get request ?
App will get the data and display it in form of individual posts.
The server is in django with PostgreSQL, and the app is in react native,
There will be a couple posts a day(containing text and link to a image hosting on the server). The app doesn't need to store anything offline.
This is a very complex question, in the sense that it covers a great vastness of architecture. There are many approaches to implementing a solution. The question is very general, therefore we should understand in detail what the app does, what its functions are and the data it manages, the frequency of interaction with the database, if it needs changes and much more. However, on average, a solution that lends itself to these technologies is the development of a web server to manage RESTFUL calls. In such a way that services are exposed and the app can safely make calls (for example a CRUD) and manage data to your database. If you better enter some specifications we can analyze in detail a possible solution.

How does a geolocator work?

I need to develop an Android app which is basically a geolocator, allowing people to reach each other via Google maps. All being said, I don't know how do I accomplish such thing since I don't know how it does work and if I need a server or database on the way. I'd be grateful if anyone could shed some light on this topic.
As you said you will need Android application and Server through which Android clients will communicate.
Android Application
will be getting data of other Android devices from server and then showing those data on the screen
will be periodically sending own location to the server
Server
is responsible for storing geolocation of Android clients, data can be stored in some database or memory of the server, depends on the use case, how long you need to have those data, how important they are, etc.
is responsible for sending stored geolocation data to Android clients
you have various options, you can write your own server in whatever technology you wish - it can be PHP server, NodeJS server, Java server... or you will use some serverless solution. Check for example
https://firebase.google.com
has to be hosted somewhere, you have many options:
there are "traditional" hosting providers, where you are usually limited by technologies you can use, for example you can just use PHP or you will use products from Heroku or Amazon AWS.. there is more, Microsoft has Microsoft Azure or Redhat has Openshift.. There are differences in prices, services, etc., it is up to you to look and decide what is the best for you.
I for sure missed lot of things. It is not in my power to describe every possible corner case because the question is too broad but rather provide you with higher overview of the problem and possibly point you where to go next. I suggest to you to read more about problematic and then get back with more specific issues to solve.

Android - Sending and receiving location updates of other users

I have already an location based app which functionality i want to expand:
A user can login to this App via Facebook and also other users are logged on their own Mobilephone. Both can see the location of the other.
So basically an location aware meet people APP :-)
How can I do this? Backend with PHP and mysql database?
Are there already existing solutions I can use?
Tutorials available describing this?!
the infrastructure you need is achievable in many many programming languages and many types of databases.
In the end what you need is a server running that can store the location data sent from the users. Ideally i would tell you to use webservices in order to achieve this.
Next, you will need to implement a location service app that works on the user smartphone and uses the web services to send information and get information to and from the server.
Programming languagens you can achieve this are so many. For example, in the back end you can use a mysql database with a tomcat server. if u need a front-end for the server you can use java server pages, php, whatever u feel more confortable with.
for the mobile phone there are hybrid application for different OSs. for android specifically you will use java. if u want to save some info in the phones you can use a SQLite database. this is important if you want to send data only when internet connections are available.
Those are the kind of things you have to deal with. Hope i helped you.
Good luck.

What does it take to sync a contact/calendars web app with mobile devices?

I have been developing a web application in PHP that provides contact and calendar management. This application needs to sync its contact and calendar data with mobile devices (specifically Android, Apple, and Windows phones).
I have no experience in mobile development, so I am mostly looking for guidance. It is difficult to know what to even search for because of this lack of experience. I am mostly looking to know what is possible and what is not.
The overall goal is to be able to edit contact/calendar data from anywhere, whether that be from the web application itself or a mobile device. These changes will then be reflected no matter what tool you are using to view it. A very loose comparison is an IMAP server. One central data source where any app can hop in and view/manage e-mails.
My web application can currently handle HTTP requests using XML data. So it can send out data and have data POSTed into it.
This is where my knowledge ends. I have little insight as to what would be required of the device itself to be able to sync. If a user adds contacts to a mobile device's default contact/calendar application, how can it be told to sync with my web application? Does this mean developing an app for each mobile device in order to act as a medium between my application and the mobile device's default contact/calendar data?
Is it possible to access the internal contact/calendar data of a mobile device? Can that data be pushed to an external server or be modified by that same server? What is required on the web application's side? The mobile device's side?
These are the sort of questions I am looking to be answered. There might be questions that I haven't even thought of that I would also love to be discussed. If my question is too general, please specify anything to be clarified.
In case of iphone you have to write your own app. I would recommend to use a database (sql) on your server, then every time the application opens you can check if there are new entries on the server and load them if needed.
I think it will take you some time to get the basic knowledge about ios programming but it isn't a hard job at all.
Things you should check:
requests
uitableview(/delegate)
Event kit
There are good tutorials to learn this stuff.
One good site:
http://www.raywenderlich.com/

Options for Sharing Android App Data on Multiple Phones

I'm looking for suggestions for ways to share Android app data between phones running the same app. For example, lets say I have an app that stores a database of book reviews. If person A has a book review that person B doesn't have, what are the options for getting that information from person A's phone to person B's phone?
Currently, I'm aware of the following options:
- Upload data from person A's phone to a server, then download data from server to Person B's phone.
- Write code to have the phones sync up using bluetooth
- Write code to send SMS messages
I'm wondering if there are any more options besides these, and if there's actually a best-practice for accomplishing this?
Ideally, I want the users to simply click a button in the app to make the sharing take place, so I don't want to go down the bluetooth route because that requires the user to do a bit of setup (or assumes they already have set things up in the form of bluetooth settings).
Since the data can be of variable length and potentially large, I believe that would rule out text messaging.
As far as the server route goes, from what I understand this seems to be an ok way of doing things, but my problem is that I have no experience with having users potentially sign in to a server and then uploading data. I don't know of the cost concerns (if any), or of potential security concerns (allowing just anyone to upload data, I'm not sure if I would have to take steps to ensure someone couldn't bypass the app and upload malicious data).
So, can you guys give me suggestions and point me in the right direction? Thanks.
I'm wondering if there are any more options besides these
You could try generating a QR code and scanning it on the other phone. Beyond that, I think you have it mostly covered.
and if there's actually a best-practice for accomplishing this?
That is impossible to answer in the abstract.
Keep the database server side and interface with it via a web service
I too am looking for a solution to this very problem. I'll throw it out there that a fourth, or rather extension of your first option, is to use the Cloud to Device Messaging Framework, though it still requires (as best I can tell) having your own server, though I suppose you wouldn't need to store the database server-side longer than it takes to send the message, provided you keep it under 1024b (or whatever the actual size is).
I don't believe there is a convenient way to monitor/send email in the background. If I could have my app monitor email messages looking for a key subject, then parsing the body, I could probably accomplish what I'm looking for using email as the transport.
The problem with maintaining a server, is that you probably would need to build in a subscription fee to your app to cover the costs of maintaining a server, as one time sales may not be able to cover the ongoing expense.

Categories

Resources