Google shows Firebase source for Google I/O 2017 app

File this one under ‘If I had world enough and time…’ – Google is releasing its Android source for its Google I/O 2017 event app.

Google IO app 2017 2

It does this every year, and is an example of walking its talk – a chance to see how Google codes its own solutions. You can find it on GitHub. I just wish I had the time, and the brainpower, to go through it.

In the 2017 app there is a lot of Firebase, reveals Google, including its use to support the event’s registration system (as well as simplifying things for attendees by minimising queueing, it enabled organisers to swap venues according to actual demand for seats, they say).

Google’s Shailen Tuli takes up the story:

The reservation feature was implemented using Firebase Realtime Database (RTDB) and Cloud Functions for Firebase. RTDB provided easy sync across user devices — we just had to implement a listener in our code to receive database updates. RTDB also provided out-of-the-box offline support, allowing conference data to be available even in the face of intermittent network connectivity while traveling. A Cloud Function processed reservation requests in the background for the user, using transactions to ensure correctness of state (preventing mischievous users from grabbing too many seats!) and communicating with the event badging system.

Firebase Remote Config was also used to inform users about “non-session data”, such as wi-fi information, the shuttle schedule and discount codes for ridesharing.

Finally, Firebase also played a role in supporting the use of a ContentProvider to provide an abstraction layer over all the app’s data, says Google.

Other features in the app include the use of feeds to share hour-by-hour developments at the I/O event, which was powered by a real-time database.

Even though the event is finished and Google is releasing the 2017 code, it says more work will be carried out on it, for example making the app “O” compliant.

Developers can follow changes to the code on GitHub.


Leave a Reply

Your email address will not be published. Required fields are marked *

*