How to save the data on the server like in the khta book application and after reinstalling the application, how to save that data offline in the application
If you keep the data on the server always in sync with the data in the application, then after you reinstall the application and you log into your account you can just retrieve the data normally and have all your previous data.
If you want to include an initial Firestore data set with the application, so that the user can use this right after they install the app (even if they're offline), have a look at the documentation about data bundles.
Data bundles allow you to create a bundle of Firestore documents/queries, that you can then include in the APK, and load the bundle to Firestore's cache when the app is first started.
Also see the solutions guide on serving data bundles.
Related
I have 2 mobile apps and one web app which use the same Firebase Auth and Notification services. I only use Auth and Notification services, nothing else.
I require to have a staging environment and production environment, and both need to run in parallel.
I do not see other option in Firebase rather than creating two different projects. But that's risky, because I have to replace the JSON files in mobile app, replace Admin SDK stuff in web app and so on.
So what's the best option for this? I use Firebase only for Auth and Notification. In notification I send messages to individual devices and user groups.
maybe asking the users to use different email accounts for testing and production is the way to go? (Because then the Auth data will not be messed up even though the same Auth space is used)
You could have only one single Firebase project and inside this project create several apps. For instance, you could create an app for production with the package name(android)/bundle id(iOS) "com.example.myapp" and another for staging "com.example.myapp.staging". That way, you can download a single json file with both configurations. In your android studio/xcode, you have to set up those package name/bundle id with the corresponding build configuration.
I am working on project where I need to load data from local mobile DB(SQLite) to UI in meanwhile load data from server and when data download is finished insert the data from server to the database and update UI. I searching for way to download data from server and instead of delete all data in database and insert the new valid data just find the changes and "update" database. Is there some correct way to do this. I am working with SQLite database on Android phone.
SQLite isn't an online database meant to be ran on a server.
There aren't any free SQL Server options that I know of, but the NoSQL options include Firebase Realtime Database, Firebase Cloud Firestore, Realm Platform, Couchbase Mobile, Parse Server, etc...
Each of the listed options allow you to listen only to changes in the data. SQLite does not provide this option itself.
I need to update and insert rows in Sqlite from another app. I am working on an android app and I have to update database of another app,how can I do that,is it possible to access and edit another app's database from my app.
You should look at Content Providers. From the android official docs
Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security. Content providers are the standard interface that connects data in one process with code running in another process.
Android Docs explain how you can use it.
I understand what you are trying to achieve. correct me if i am wrong. You are developing android application in which you are trying to update your application database by fetching data from some different database. right? if yes, you have to get details of the database server /database connection details from the database owner if possible. in case if the owner of the database is not providing or not ready to give you credentials/database connection details then confirm whether they have any services/webAPI/web services through which they expose database data.
If they have webapi/webservices available then you can easily consume in your andriod application and do what ever operation you want to perform.
Hope this helps..
I'm in the process of designing an Android application right now.
I understand SQLite works on the phone device within the file structure. However I'm not sure if it's practical for our use.
If I'm wanting to store data that's available to all users (i.e. if someone updates their profile, it can be seen by all other users), can that be done using SQLite somehow? Or must we use a client-server model such as MySQL?
Is it practical to store user-specific information using SQLite and public information using MySQL?
Thank you
What you want to do is a Client-Server Architecture, store the data in your central server and get a copy of the working data on the phone. MySQL and SQLite don't share everything but it's close. Read the documentation on SQLite and you will see.
SQLite can't serve files like MySQL if that's your question via the network. You'll have to write that on your own. I suggest making a webservice.
If you want info to be available to all users you need a client-server model such as MySQL.
If you use SQL Lite, the only possible way to update that info without requesting it from a server is to make an Update on the application (not doable).
Don't forget that you'll require internet ON for these types of applications.
you mean all users going to use a single phone, probably not, the reason for recommending sqlite database for android is that its the lightweight, non memory eater and thus best suitable to mobile phones. Sqlite database can be used in phone while at server side we can use any. The only thing is use a method like sending xml request to server from phone, where server will send respond as xml or json, while the phone parse the xml and use the data in it. this is how online apps works in mobile phones..... ya ofcourse use mysql at server side and do the communication using as request - response yes the client-server.
Is it practical to store user-specific information using SQL Lite and public information using MySQL?
Yes, This is exactly what I'm doing with my app. It's a very common practice. I am storing information in a MySql db stored on a server that all users can read from. They can pull specific information to the device. From there I have a class in the app that stores information that they've selected within a SQLite db. You'll easily be able to add information to the MySql db on the server that all users can view.
yeah i think the model you are proposing should have no problem. Even i'm using a model something similar to what you are saying. I store some information on local sqlite db and majority of information in mysql db. For sending data from android device to mysql db you will have to write a mysql scipt on a page and android device will hit that page with the help of http request. You can send your data in that http request
On my web server I will be creating a custom XML file for a client app to access. This means I must authenticate the client and then give the client the XML file.
I believe the client application will need to post data (login, password) to the server and once a connection is established, it will receive the XML file from the server (most likely PHP).
If you have any advice, it would be most welcomed: particular classes to look at and any potential dangers.
I found something relevant in C#, however I am limited to Java as the app will be for Android.
Android lets you pull in external jar's, so I would use HttpClient for performing your POST operation with login info.((EDIT: Per Samuh in the comments, this is already a part of the android SDK, no need to include the external version))
Once you have the XML data in your application, you can parse it however you see fit. I would create a SQLite database for your application to store the data parsed in from the XML file. Then, when you run your app, (or the user clicks refresh), pull the XML file down, populate the SQLite DB with the data from it, and hook the UI controls to the database as done in the Notepad tutorial
The advantages of this setup are that you can always have a local copy to show the user if they are offline, and the user can quit, pause, or leave the app open or closed and not lose the information. You should implement both a refresh on demand and a regular refresh with Alarm's setInexactRepeating() so the application will update automatically in the background in a battery life maintaining way.
That should be enough to get you started.