I am fairly new to firebase, used its features to my projects.
Question is:
1) Can I use firebase free services for making professional apps/client work, to handle data and authentication?
2) Should I use json data hosting sites to use url for such projects(for fetching data)? or suggest me better options.
You can use Firebase for free for a certain amount of users and traffic. You can see the limits and packages here
I have been using Firebase's realtime database for some personal Android Apps and happy to use it. To implement it easily, Android Studio has an option for developers. Select Tools -> Firebase and Firebase Assistant will be prompted.
You can select any service you need to use in your app. The assistant even adds some pieces of code (such as dependencies and initialization for the service) needed to run the services you select.
Related
I'm really sorry if this is not the right place to ask such question, please refer me where I can ask if this is not.
I'm developing an Android application and using Firebase as backend to store data. I'm new to both Firebase and Springboot. I've been told to learn to create some basic APIs in SpringBoot but I have been question why I would need to.
From what I got to know, Firebase already provides an API for querying data that I might need to transfer. What is the use of SpringBoot? I've read it provides "easy-deployable" application and handles Unit and Integration Testing.
If I use SpringBoot on top of Firebase, isn't it redundant? Are there additional advantages that I'm missing?
SpringBoot is completely independent of Firebase.
Firebase is basically a service which is provided by Google so that the developer doesn't need to do server-side coding.
SpringBoot is a framework which is generally used for the development of the server-side application.
By using firebase you need to pay google for data storage and API usage stuff. If we compare using firebase & spring-boot application in terms of costing taking same amount of data storage, the amount you need to pay for firebase is a lot more. Though this amount is justified, as you don't need to write even a single line of code for server-end and all the server connections, data storage and security is maintained by firebase.
You can learn more about firebase on it's official website - https://firebase.google.com/
If you are starting, I would recommend you to learn and use SpringBoot rather than firebase. But if your application demands a real-time database, you must go for firebase to take care of that feature.
Here is an article for your reference Reasons Not To Use Firebase
Spring Boot is not required to use Firebase SDKs on Android. The Firebase SDKs operate completely independently of any backend you control.
If you want to provide Spring Boot backend for your Android app, that's completely up to you. Or whatever backend you want. The Firebase client SDKs don't care.
I ran a security test via the ImmuniWeb tool on my Android app APK. One of the observations the tool made was that one of the app contains hard-coded sensitive data. It further said:
An attacker with access to the mobile application file can easily
extract this data from the application and use it in any further
attacks.
There is 'google_api_key', 'google_crash_reporting_api_key', and
'google_storage_bucket' found in file
'android/res/values/strings.xml'
The issue is that this strings.xml file is auto-generated and cannot be edited:
How do I clear this issue?
The data you're referring to is not "private" or "sensitive". This is a standard configuration for Firebase products that get injected into your app as part of a standard app build using the Google Play services plugin. All of those values are just identifiers for Firebase and Google services that need to be known by the client in order to address those services. Without them, your app wouldn't know where to go for information.
If you're using Realtime Database, Firestore, or Cloud Storage in your app, you should be using security rules for each for those products in order to limit who can read and write which locations in those products. That's how you implement security in apps that use Firebase. Trying to hide or obfuscate the configuration isn't going to foil a determined attacker.
I don't know anything about this tool you're using for this security scan, but it doesn't seem to be aware of these facts.
for one of my assignments I have to make an Android app and I have to use a server and a service which can be a mobile service or a web service. So I was thinking of using Firebase as it is real time and have some good features.
BUT
I want to know for the above requirements of my assignment is Firebase suitable.
Also, I have been told to submit a deployment unit, I am guessing the deployment unit in this case is the APK file. Am I right?
EDIT
In my assignment specification it says "Server deployed in the cloud and server must be micro-service or web-service or mobile-service of your choice" which made me choose Firebase. But I am confused if firebase's server is in the cloud and if it uses any of the services mentioned above :/
Yes, Firebase has great services such as Realtime Database, Analytics, Storage, Remote Config, ... which help you to build your app.
The deployment unit in Android is ".APK" file. (If you are gonna develop a library, it will be ".AAR" file (Android ARchive file))
Firebase is a cloud-based technology that permits you to make with no server-side programming. It offers features like Realtime Database, storage options, Notifications, authentication options, hosting and more and there is no server side code required. Just put in the configurations and Firebase would handle it. Firebase lets you store user information and sync data between them in realtime.
My Android project currently requires an authentication of some sort (mobile phone number / facebook / gmail... I haven't decided yet), frequent read/write operations from the server's db (not a big amount of data, and no images/videos), push notifications and in the future, possibly complex queries on the data stored.
I started reading about Parse and Google cloud (in google, specifically about mobile backend starter).
I can't seem to find a comparison between the two. I've read that both have relatively easy implementations, but except for the platforms (I'm using Android, so both work for me), I can't find a place that says "Parse is better at ... and Google cloud is better at ...".
So my questions are:
Can anyone please give a recommendation / reference?
Does one of the above platforms at all fit my project? (I am familiar with AWS, and would like to avoid it so I will not need to worry about stability and scalability)
Shameless plug: I'm a developer at kii.com
You can also take a look at Kii Cloud MbaaS
Among its features:
User management, including authentication using Facebook credentials.
Data management that never locks you into any schemas.
File storage and cloud backup for your app.
Push notifications so you can push messages to your users or to your
app itself with updated instructions for functionality.
Geolocation so you can offer location-based services.
Server extension to define your own business logic without managing
servers.
Android, iOS, html5 and unity support
I am planing to implement an app and I have come to a point where I don't know what is the best approach.
Scenario:
I have an app where I am making a todo list and I am adding 3 items. I use my phone for this.
Then I take my tablet and want to continue adding another task. Then after a while I take my wife's phone and want to add 2 new tasks.
Basically I want to have a very simple way of storing the tasks online and be able to sync it with the app.
I am seeing two possible ways:
have a web server with a database + web service calls. This has the disadvantage of having a host paid, learn some extra mysql + web service techniques.
store somehow the data on cloud and allow the app by login to access an account which stores the file. I am thinking here at something like Google Drive / Dropbox. But I don't know how I would be able to sync only the updated values, not the whole file. Because I am thinking, if I store all the tasks into one file, each time I update the file, I'll need to upload it fully, which is not the best approach.
I am open to any advices. What approach would you recommend ?
There's also Google Drive's "Application Data" folder.
https://developers.google.com/drive/android/appfolder
This has the advantage of using the user's storage space.
I would look into either Google App Engine or Amazon Web Services. They both give you free allotment of usage per month and if you go over then you start paying, chances are you wont get past the free tier for a while.
AWS is a bit more mature than GAE currently and seemed to be a bit easier to implement that GAE was when I was researching them
Take a look at the new training class for sync adapters:
http://developer.android.com/training/sync-adapters/index.html for the basics of sending data from your device to a server.
On the Android device, I suggest you store your tasks in a content provider. This helps you keep track of updates since the last time you synced. You can then query the provider during your sync, send only the data that's been updated, and store the data on the server.
You should probably store the last update time on the device, so you can tell if the server contains data that isn't yet on the device. Remember that you'll have to download tasks as well if you want all devices to be in sync.
You can try Google's Firebase. Firebase provides SDK for Android and iOS devices. And also, firebase supports offline and syncing. Firebase also provides object storage service. It easier to create firebase app than you think. Have look at this firebase's firestore service.
You can take a look at our Rethync framework (freeware with source) . Using it you can simplify the task of detecting modifications and sync only updated data. Next, Rethync provides both client- and server-side API so you can create your own service (and host it on the web side) or you can write your own transport for the cloud service of your choice (we will provide some transports in future, they are under development now).