In my project, we are using custom user properties to allow our marketing team to analyze the structure of our user base. One of our properties indicates if a user has an active premium membership. As a premium is given for a specific period, it gets removed automatically after the time has elapsed.
We want all of our users to have that property (by default set to false), and being as up to date as possible. As properties are being attached to the next sent event - we came up with the idea of calling set_property with local states every time a new event is sent. That way we won't constraint ourselves to only sending it on login or other specific actions, and re-use already implemented components that always hold up to date information about these states.
So here is a question; How would that affect data usage and firebase overall? Does firebase have some internal mechanism that detects if a new property state is the same as the previous one and does not attach it if it did not change? As far as I understand it attaches user properties to all events anyway, so just calling set_property on every event to enforce data synchronization would have any impact at all?
Any help would be greatly appreciated.
PS We are talking about both Android and iOS apps here, hope underlying implementation for both of them is the same.
Related
I am new to coding and I am just playing around to build an app where everyone can post new events. So I have already created notes like "user" and "events". The problem I face off is that I dont know how to avoid duplication like for example if two users are posting the excat same event.
I don't want to show them twice in my RecyclerView.
So I have to compare the date, the location and the description, due to this many queries, is the Firebase Realtimedatabase the right "tool"? Or should I use another software.
------/Events
---------/LbwXYVICCl9xd5m..
--------------datum: 10.04.2019
--------------userid: OncDIQis...
--------------location:New York
--------------description:Coldplay
You seem to define two events as being the same based on some of their properties having the same value. In a scenario like that, I'd use those combined properties as the key of the event.
So if you say that two events are the same if they have the same date, location, and description, then you can create the unique key of that event as ${date}_${location}_${description}. For example:
20190410_New York_Coldplay
I've put the date in an easier to search for format, which also filters the .s (since those are not allowed in keys. Now you can store the event under that key:
Events
20190410_New York_Coldplay
datum: 10.04.2019
userid: OncDIQis...
location:New York
description:Coldplay
With the above structure, if another user tries to create an equivalent event, it will get the same key.
Firebase Real-time database is the right tool for you as it updates the database in real time.
At the time of fetching the data from the firebase, you can check whether it is already present in your local database(where you are collecting data fetched from the firebase) or not.
I hope this will help you out.
Recently was given the opportunity to create an Android app for my college group. But I was not satisfied with the event page. I wanted to create a dynamic page in which admin can update the upcoming events. On using URI the images were a bit off. Can anyone help me?
If you want to create Event Page which can be changed dynamically, you should design a page such that, you give a provision of adding Events, displaying it and
refreshing the UI.
I would suggest before start implementing an App, you should gather requirements, define the features of the App, Design the App and then go after implementing.
You can use Firebase storage and Real-time database to store data and images. Also, create an admin application for changing the image.
You can have provision to add an event, persist the event details by using either database or webservice, and updating the event.
The create event page can be made dynamic by having provisions to add/subtract event detail items from the screen. For example: Use can have a section saying Number of day(s) and a + button besides it to add details about each added day.
If you want only admin user to be able to add, update, and delete the event you can use role based login (for login again, you can use either database or webservice).
These are just rough ideas, but its necessary that you freeze the requirements before jumping into designing the app.
Working with Firebase for the first time and looking for advice of setting up the right structure for my project which is basically an "offers/coupon" type starter project.
The scenario is this:
I have a node containing a list of all offers available to users
This list of offers is displayed to users after successful Firebase authentication
When a user redeems an offer, I want to be able to count/record that activity in their child node under user and hide that offer so that they cannot see it again once used.
My question is what would be the best way to do this given that offers may be added, may expire, or may change at some point in the future. So, in effect, the user should receive the list of most updated offers, minus the ones he/she have used in the past.
a) would it be more effective to have a master list of offers, and then run a cloud/server function to clone this list for each new user an track that way
Firebase Structure 1
or
b) Keep a master list of offers in one node, then track user specific offer usage
Firebase Structure 2
Appreciate your guidance
The second solution is better because you'll save bandwith. This practice is called denormalization and is a common practice when it comes to Firebase. The first solution is not good becase every time you want to display the users you donwload unnecessary data. If you want to read more details about how you can structure a Firebase database in a efficient way, please read this post, Structuring your Firebase Data correctly for a Complex App. Also, you can take a look a this tutorial, Denormalization is normal with the Firebase Database, for a better understanding.
Second solution is much good. Because in first one we are having redundancy of data in our database. And second one obviously removing that cause.
But instead of using true or false because it is only showing you, "it's available or not", so you can use a string type parameter as "expired", "going to expire" and "updated" or whatever sooo. So it. Will be able to trace all you information related to offer for particular user. I think this is your requirement also.
Happy coding.
I decided to use Google Calendar API for my running app. I need to have some default public events in my calendar, this way anybody who is logged with different Google accounts could see them.
The questions is, what is the easiest way to store events, that everybody, who is logged from different accounts could see them?Maybe I need to create main events calendar and share to other local calendars?
You may want to check the use of Extended Properties which makes it easy to store application-specific data for an event without having to utilize an external database.
You can have the shared properties which are visible and editable by all attendees of an event. This property is shown regardless of the calendarId used in the request.
And to add or update events, using patch requests is the preferred method, as it allows you to manipulate some properties while leaving others untouched. Adding a new property with the same key will overwrite any existing properties with the same key.
Please visit the given link for a more detailed information.
For example I expect this kind of situation: data in my application lost relevance and so it usless until update. And until update it have to show users some predefined message.
Is here any simple and free solution to this task?
Guess I can use some server to somehow send simple messages... but it sounds way too complicated.
If this is important I use Xamarin.
Update: main difficulty here is fact - my application can't in any way define if it's outdated or not. This may happen in random moment.
Although the requirement is not very clear I assume Update here means app update.
each time user launches app make call to an api on ur server to check if user needs to update app
If that returns true take user to a static view that says app needs update and redirects user to google play to install updates
If you want to avoid using a server, you should try Firebase (https://firebase.google.com/). More specifically, you should use Firebase Remote Config (https://firebase.google.com/features/remote-config/).
Define in a key-value pair of something like minimum_app_version_required in Firebase Remote Config. Every time user opens the your app, compare the values of app version and minimum_app_version_required that you are getting from Firebase console and show a dialog box accordingly. You can also change the value of minimum_app_version_required anytime you want.
Just set some internal flag. That when that situation occurs, you can set the flag to true and just edit whatever layout element you are using such as listView or any other element with your predefined messages saved in strings.xml. You can also build any custom pop up screen, depends how you want to show them. Let me know if you didn't understand or exactly how you want?
Need to implement versioning for this problem. To achieve this, you have to maintain a version number in server, this is the version number you app will have to save and use it to validate with server. If both are not same, then app will get the latest data from the server.