Thu, 27 Aug 2020 12:48
Posted by Brahim Elbouchikhi, Director of Product Management and Matej Pfajfar, Engineering DirectorWe launched ML Kit at I/O last year with the mission to simplify Machine Learning for everyone. We couldn’t be happier about the experiences that ML Kit has enabled thousands of developers to create. And more importantly, user engagement with features powered by ML Kit is growing more than 60% per month. Below is a small sample of apps we have been working with.But there is a lot more. At I/O this year, we are excited to introduce four new features.The Object Detection and Tracking API lets you identify the prominent object in an image and then track it in real-time. You can pair this API with a cloud solution (e.g. Google Cloud’s Product Search API) to create a real-time visual search experience.When you pass an image or video stream to the API, it will return the coordinates of the primary object as well as a coarse classification. The API then provides a handle for tracking this object's coordinates over time.A number of partners have built experiences that are powered by this API already. For example, Adidas built a visual search experience right into their app. The On-device Translation API allows you to use the same offline models that support Google Translate to provide fast, dynamic translation of text in your app into 58 languages. This API operates entirely on-device so the context of the translated text never leaves the device.You can use this API to enable users to communicate with others who don't understand their language or translate user-generated content.To the right, we demonstrate the use of ML Kit’s text recognition, language detection, and translation APIs in one experience.We also collaborated with the Material Design team to produce a set of design patterns for integrating ML into your apps. We are open sourcing implementations of these patterns and hope that they will further accelerate your adoption of ML Kit and AI more broadly.Our design patterns for machine learning powered features will be available on the Material.io site.With AutoML Vision Edge, you can easily create custom image classification models tailored to your needs. For example, you may want your app to be able to identify different types of food, or distinguish between species of animals. Whatever your need, just upload your training data to the Firebase console and you can use Google’s AutoML technology to build a custom TensorFlow Lite model for you to run locally on your user's device. And if you find that collecting training datasets is hard, you can use our open source app which makes the process simpler and more collaborative.Wrapping upWe are excited by this first year and really hope that our progress will inspire you to get started with Machine Learning. Please head over to g.co/mlkit to learn more or visit Firebase to get started right away.Posted by Brahim Elbouchikhi, Director of Product Management and Matej Pfajfar, Engineering Director
We launched ML Kit at I/O last year with the mission to simplify Machine Learning for everyone. We couldn’t be happier about the experiences that ML Kit has enabled thousands of developers to create. And more importantly, user engagement with features powered by ML Kit is growing more than 60% per month. Below is a small sample of apps we have been working with.
But there is a lot more. At I/O this year, we are excited to introduce four new features.
The Object Detection and Tracking API lets you identify the prominent object in an image and then track it in real-time. You can pair this API with a cloud solution (e.g. Google Cloud’s Product Search API) to create a real-time visual search experience.
When you pass an image or video stream to the API, it will return the coordinates of the primary object as well as a coarse classification. The API then provides a handle for tracking this object's coordinates over time.
A number of partners have built experiences that are powered by this API already. For example, Adidas built a visual search experience right into their app.
The On-device Translation API allows you to use the same offline models that support Google Translate to provide fast, dynamic translation of text in your app into 58 languages. This API operates entirely on-device so the context of the translated text never leaves the device.
You can use this API to enable users to communicate with others who don't understand their language or translate user-generated content.
To the right, we demonstrate the use of ML Kit’s text recognition, language detection, and translation APIs in one experience.
We also collaborated with the Material Design team to produce a set of design patterns for integrating ML into your apps. We are open sourcing implementations of these patterns and hope that they will further accelerate your adoption of ML Kit and AI more broadly.
Our design patterns for machine learning powered features will be available on the Material.io site.
With AutoML Vision Edge, you can easily create custom image classification models tailored to your needs. For example, you may want your app to be able to identify different types of food, or distinguish between species of animals. Whatever your need, just upload your training data to the Firebase console and you can use Google’s AutoML technology to build a custom TensorFlow Lite model for you to run locally on your user's device. And if you find that collecting training datasets is hard, you can use our open source app which makes the process simpler and more collaborative.
Wrapping up
We are excited by this first year and really hope that our progress will inspire you to get started with Machine Learning. Please head over to g.co/mlkit to learn more or visit Firebase to get started right away.
Posted by Mertcan Mermerkaya, Software EngineerWe have great news for web developers that use Firebase Cloud Messaging to send notifications to clients! The FCM v1 REST API has integrated fully with the Web Notifications API. This integration allows you to set icons, images, actions and more for your Web notifications from your server! Better yet, as the Web Notifications API continues to grow and change, these options will be immediately available to you. You won't have to wait for an update to FCM to support them!Below is a sample payload you can send to your web clients on Push API supported browsers. This notification would be useful for a web app that supports image posting. It can encourage users to engage with the app.{ "message": { "webpush": { "notification": { "title": "Fish Photos 🐟", "body": "Thanks for signing up for Fish Photos! You now will receive fun daily photos of fish!", "icon": "firebase-logo.png", "image": "guppies.jpg", "data": { "notificationType": "fishPhoto", "photoId": "123456" }, "click_action": "https://example.com/fish_photos", "actions": [ { "title": "Like", "action": "like", "icon": "icons/heart.png" }, { "title": "Unsubscribe", "action": "unsubscribe", "icon": "icons/cross.png" } ] } }, "token": "<APP_INSTANCE_REGISTRATION_TOKEN>" }}Notice that you are able to set new parameters, such as actions, which gives the user different ways to interact with the notification. In the example below, users have the option to choose from actions to like the photo or to unsubscribe. To handle action clicks in your app, you need to add an event listener in the default firebase-messaging-sw.js file (or your custom service worker). If an action button was clicked, event.action will contain the string that identifies the clicked action. Here's how to handle the "like" and "unsubscribe" events on the client:// Retrieve an instance of Firebase Messaging so that it can handle background messages.const messaging = firebase.messaging();// Add an event listener to handle notification clicksself.addEventListener('notificationclick', function(event) { if (event.action === 'like') { // Like button was clicked const photoId = event.notification.data.photoId; like(photoId); } else if (event.action === 'unsubscribe') { // Unsubscribe button was clicked const notificationType = event.notification.data.notificationType; unsubscribe(notificationType); } event.notification.close();});The SDK will still handle regular notification clicks and redirect the user to your click_action link if provided. To see more on how to handle click actions on the client, check out the guide.Since different browsers support different parameters in different platforms, it's important to check out the browser compatibility documentation to ensure your notifications work as intended. Want to learn more about what the Send API can do? Check out the FCM Send API documentation and the Web Notifications API documentation. If you're using the FCM Send API and you incorporate the Web Notifications API in a cool way, then let us know! Find Firebase on Twitter at @Firebase, and Facebook and Google+ by searching "Firebase". Posted by Mertcan Mermerkaya, Software Engineer
We have great news for web developers that use Firebase Cloud Messaging to send notifications to clients! The FCM v1 REST API has integrated fully with the Web Notifications API. This integration allows you to set icons, images, actions and more for your Web notifications from your server! Better yet, as the Web Notifications API continues to grow and change, these options will be immediately available to you. You won't have to wait for an update to FCM to support them!
Below is a sample payload you can send to your web clients on Push API supported browsers. This notification would be useful for a web app that supports image posting. It can encourage users to engage with the app.
{ "message": { "webpush": { "notification": { "title": "Fish Photos 🐟", "body": "Thanks for signing up for Fish Photos! You now will receive fun daily photos of fish!", "icon": "firebase-logo.png", "image": "guppies.jpg", "data": { "notificationType": "fishPhoto", "photoId": "123456" }, "click_action": "https://example.com/fish_photos", "actions": [ { "title": "Like", "action": "like", "icon": "icons/heart.png" }, { "title": "Unsubscribe", "action": "unsubscribe", "icon": "icons/cross.png" } ] } }, "token": "<APP_INSTANCE_REGISTRATION_TOKEN>" }}Notice that you are able to set new parameters, such as actions, which gives the user different ways to interact with the notification. In the example below, users have the option to choose from actions to like the photo or to unsubscribe.
To handle action clicks in your app, you need to add an event listener in the default firebase-messaging-sw.js file (or your custom service worker). If an action button was clicked, event.action will contain the string that identifies the clicked action. Here's how to handle the "like" and "unsubscribe" events on the client:
// Retrieve an instance of Firebase Messaging so that it can handle background messages.const messaging = firebase.messaging();// Add an event listener to handle notification clicksself.addEventListener('notificationclick', function(event) { if (event.action === 'like') { // Like button was clicked const photoId = event.notification.data.photoId; like(photoId); } else if (event.action === 'unsubscribe') { // Unsubscribe button was clicked const notificationType = event.notification.data.notificationType; unsubscribe(notificationType); } event.notification.close();});The SDK will still handle regular notification clicks and redirect the user to your click_action link if provided. To see more on how to handle click actions on the client, check out the guide.
Since different browsers support different parameters in different platforms, it's important to check out the browser compatibility documentation to ensure your notifications work as intended. Want to learn more about what the Send API can do? Check out the FCM Send API documentation and the Web Notifications API documentation. If you're using the FCM Send API and you incorporate the Web Notifications API in a cool way, then let us know! Find Firebase on Twitter at @Firebase, and Facebook and Google+ by searching "Firebase".
Posted by Brahim Elbouchikhi, Product ManagerIn today's fast-moving world, people have come to expect mobile apps to be intelligent - adapting to users' activity or delighting them with surprising smarts. As a result, we think machine learning will become an essential tool in mobile development. That's why on Tuesday at Google I/O, we introduced ML Kit in beta: a new SDK that brings Google's machine learning expertise to mobile developers in a powerful, yet easy-to-use package on Firebase. We couldn't be more excited! Machine learning for all skill levelsGetting started with machine learning can be difficult for many developers. Typically, new ML developers spend countless hours learning the intricacies of implementing low-level models, using frameworks, and more. Even for the seasoned expert, adapting and optimizing models to run on mobile devices can be a huge undertaking. Beyond the machine learning complexities, sourcing training data can be an expensive and time consuming process, especially when considering a global audience.With ML Kit, you can use machine learning to build compelling features, on Android and iOS, regardless of your machine learning expertise. More details below!Production-ready for common use casesIf you're a beginner who just wants to get the ball rolling, ML Kit gives you five ready-to-use ("base") APIs that address common mobile use cases:Text recognitionFace detectionBarcode scanningImage labelingLandmark recognitionWith these base APIs, you simply pass in data to ML Kit and get back an intuitive response. For example: Lose It!, one of our early users, used ML Kit to build several features in the latest version of their calorie tracker app. Using our text recognition based API and a custom built model, their app can quickly capture nutrition information from product labels to input a food's content from an image.ML Kit gives you both on-device and Cloud APIs, all in a common and simple interface, allowing you to choose the ones that fit your requirements best. The on-device APIs process data quickly and will work even when there's no network connection, while the cloud-based APIs leverage the power of Google Cloud Platform's machine learning technology to give a higher level of accuracy.See these APIs in action on your Firebase console:Heads up: We're planning to release two more APIs in the coming months. First is a smart reply API allowing you to support contextual messaging replies in your app, and the second is a high density face contour addition to the face detection API. Sign up here to give them a try!Deploy custom modelsIf you're seasoned in machine learning and you don't find a base API that covers your use case, ML Kit lets you deploy your own TensorFlow Lite models. You simply upload them via the Firebase console, and we'll take care of hosting and serving them to your app's users. This way you can keep your models out of your APK/bundles which reduces your app install size. Also, because ML Kit serves your model dynamically, you can always update your model without having to re-publish your apps.But there is more. As apps have grown to do more, their size has increased, harming app store install rates, and with the potential to cost users more in data overages. Machine learning can further exacerbate this trend since models can reach 10's of megabytes in size. So we decided to invest in model compression. Specifically, we are experimenting with a feature that allows you to upload a full TensorFlow model, along with training data, and receive in return a compressed TensorFlow Lite model. The technology behind this is evolving rapidly and so we are looking for a few developers to try it and give us feedback. If you are interested, please sign up here.Better together with other Firebase productsSince ML Kit is available through Firebase, it's easy for you to take advantage of the broader Firebase platform. For example, Remote Config and A/B testing lets you experiment with multiple custom models. You can dynamically switch values in your app, making it a great fit to swap the custom models you want your users to use on the fly. You can even create population segments and experiment with several models in parallel.Other examples include:storing your image labels in Cloud Firestoremeasuring processing latency with Performance Monitoringunderstand the impact of user engagement with Google Analyticsand moreGet started!We can't wait to see what you'll build with ML Kit. We hope you'll love the product like many of our early customers:Get started with the ML Kit beta by visiting your Firebase console today. If you have any thoughts or feedback, feel free to let us know - we're always listening!Posted by Brahim Elbouchikhi, Product Manager
In today's fast-moving world, people have come to expect mobile apps to be intelligent - adapting to users' activity or delighting them with surprising smarts. As a result, we think machine learning will become an essential tool in mobile development. That's why on Tuesday at Google I/O, we introduced ML Kit in beta: a new SDK that brings Google's machine learning expertise to mobile developers in a powerful, yet easy-to-use package on Firebase. We couldn't be more excited!
Machine learning for all skill levelsGetting started with machine learning can be difficult for many developers. Typically, new ML developers spend countless hours learning the intricacies of implementing low-level models, using frameworks, and more. Even for the seasoned expert, adapting and optimizing models to run on mobile devices can be a huge undertaking. Beyond the machine learning complexities, sourcing training data can be an expensive and time consuming process, especially when considering a global audience.
With ML Kit, you can use machine learning to build compelling features, on Android and iOS, regardless of your machine learning expertise. More details below!
Production-ready for common use casesIf you're a beginner who just wants to get the ball rolling, ML Kit gives you five ready-to-use ("base") APIs that address common mobile use cases:
Text recognitionFace detectionBarcode scanningImage labelingLandmark recognitionWith these base APIs, you simply pass in data to ML Kit and get back an intuitive response. For example: Lose It!, one of our early users, used ML Kit to build several features in the latest version of their calorie tracker app. Using our text recognition based API and a custom built model, their app can quickly capture nutrition information from product labels to input a food's content from an image.
ML Kit gives you both on-device and Cloud APIs, all in a common and simple interface, allowing you to choose the ones that fit your requirements best. The on-device APIs process data quickly and will work even when there's no network connection, while the cloud-based APIs leverage the power of Google Cloud Platform's machine learning technology to give a higher level of accuracy.
See these APIs in action on your Firebase console:
Heads up: We're planning to release two more APIs in the coming months. First is a smart reply API allowing you to support contextual messaging replies in your app, and the second is a high density face contour addition to the face detection API. Sign up here to give them a try!
Deploy custom modelsIf you're seasoned in machine learning and you don't find a base API that covers your use case, ML Kit lets you deploy your own TensorFlow Lite models. You simply upload them via the Firebase console, and we'll take care of hosting and serving them to your app's users. This way you can keep your models out of your APK/bundles which reduces your app install size. Also, because ML Kit serves your model dynamically, you can always update your model without having to re-publish your apps.
But there is more. As apps have grown to do more, their size has increased, harming app store install rates, and with the potential to cost users more in data overages. Machine learning can further exacerbate this trend since models can reach 10's of megabytes in size. So we decided to invest in model compression. Specifically, we are experimenting with a feature that allows you to upload a full TensorFlow model, along with training data, and receive in return a compressed TensorFlow Lite model. The technology behind this is evolving rapidly and so we are looking for a few developers to try it and give us feedback. If you are interested, please sign up here.
Better together with other Firebase productsSince ML Kit is available through Firebase, it's easy for you to take advantage of the broader Firebase platform. For example, Remote Config and A/B testing lets you experiment with multiple custom models. You can dynamically switch values in your app, making it a great fit to swap the custom models you want your users to use on the fly. You can even create population segments and experiment with several models in parallel.
Other examples include:
storing your image labels in Cloud Firestoremeasuring processing latency with Performance Monitoringunderstand the impact of user engagement with Google Analyticsand moreGet started!We can't wait to see what you'll build with ML Kit. We hope you'll love the product like many of our early customers:
Get started with the ML Kit beta by visiting your Firebase console today. If you have any thoughts or feedback, feel free to let us know - we're always listening!
Posted by Michael Hermanto, Software Engineer, FirebaseWe launched the Google URL Shortener back in 2009 as a way to help people more easily share links and measure traffic online. Since then, many popular URL shortening services have emerged and the ways people find content on the Internet have also changed dramatically, from primarily desktop webpages to apps, mobile devices, home assistants, and more.To refocus our efforts, we're turning down support for goo.gl over the coming weeks and replacing it with Firebase Dynamic Links (FDL). FDLs are smart URLs that allow you to send existing and potential users to any location within an iOS, Android or web app. We're excited to grow and improve the product going forward. While most features of goo.gl will eventually sunset, all existing links will continue to redirect to the intended destination.For consumersStarting April 13, 2018, anonymous users and users who have never created short links before today will not be able to create new short links via the goo.gl console. If you are looking to create new short links, we recommend you check out popular services like Bitly and Ow.ly as an alternative.If you have existing goo.gl short links, you can continue to use all features of goo.gl console for a period of one year, until March 30, 2019, when we will discontinue the console. You can manage all your short links and their analytics through the goo.gl console during this period.After March 30, 2019, all links will continue to redirect to the intended destination. Your existing short links will not be migrated to the Firebase console, however, you will be able to export your link information from the goo.gl console.For developersStarting May 30, 2018, only projects that have accessed URL Shortener APIs before today can create short links. To create new short links, we recommend FDL APIs. FDL short links will automatically detect the user's platform and send the user to either the web or your app, as appropriate.If you are already calling URL Shortener APIs to manage goo.gl short links, you can continue to use them for a period of one year, until March 30, 2019, when we will discontinue the APIs. For developers looking to migrate to FDL see our migration guide.As it is for consumers, all links will continue to redirect to the intended destination after March 30, 2019. However, existing short links will not be migrated to the Firebase console/API.URL Shortener has been a great tool that we're proud to have built. As we look towards the future, we're excited about the possibilities of Firebase Dynamic Links, particularly when it comes to dynamic platform detection and links that survive the app installation process. We hope you are too!Posted by Michael Hermanto, Software Engineer, FirebaseWe launched the Google URL Shortener back in 2009 as a way to help people more easily share links and measure traffic online. Since then, many popular URL shortening services have emerged and the ways people find content on the Internet have also changed dramatically, from primarily desktop webpages to apps, mobile devices, home assistants, and more.
To refocus our efforts, we're turning down support for goo.gl over the coming weeks and replacing it with Firebase Dynamic Links (FDL). FDLs are smart URLs that allow you to send existing and potential users to any location within an iOS, Android or web app. We're excited to grow and improve the product going forward. While most features of goo.gl will eventually sunset, all existing links will continue to redirect to the intended destination.
For consumersStarting April 13, 2018, anonymous users and users who have never created short links before today will not be able to create new short links via the goo.gl console. If you are looking to create new short links, we recommend you check out popular services like Bitly and Ow.ly as an alternative.
If you have existing goo.gl short links, you can continue to use all features of goo.gl console for a period of one year, until March 30, 2019, when we will discontinue the console. You can manage all your short links and their analytics through the goo.gl console during this period.
After March 30, 2019, all links will continue to redirect to the intended destination. Your existing short links will not be migrated to the Firebase console, however, you will be able to export your link information from the goo.gl console.
For developersStarting May 30, 2018, only projects that have accessed URL Shortener APIs before today can create short links. To create new short links, we recommend FDL APIs. FDL short links will automatically detect the user's platform and send the user to either the web or your app, as appropriate.
If you are already calling URL Shortener APIs to manage goo.gl short links, you can continue to use them for a period of one year, until March 30, 2019, when we will discontinue the APIs. For developers looking to migrate to FDL see our migration guide.
As it is for consumers, all links will continue to redirect to the intended destination after March 30, 2019. However, existing short links will not be migrated to the Firebase console/API.
URL Shortener has been a great tool that we're proud to have built. As we look towards the future, we're excited about the possibilities of Firebase Dynamic Links, particularly when it comes to dynamic platform detection and links that survive the app installation process. We hope you are too!
Originally posted on the Firebase Blog by Jason St. Pierre, Product Manager.Back in October, we were thrilled to launch a beta version of Firebase Crashlytics. As the top ranked mobile app crash reporter for over 3 years running, Crashlytics helps you track, prioritize, and fix stability issues in realtime. It's been exciting to see all the positive reactions, as thousands of you have upgraded to Crashlytics in Firebase!Today, we're graduating Firebase Crashlytics out of beta. As the default crash reporter for Firebase going forward, Crashlytics is the next evolution of the crash reporting capabilities of our platform. It empowers you to achieve everything you want to with Firebase Crash Reporting, plus much more.This release include several major new features in addition to our stamp of approval when it comes to service reliability. Here's what's new.Integration with Analytics eventsWe heard from many of you that you love Firebase Crash Reporting's "breadcrumbs" feature. (Breadcrumbs are the automatically created Analytics events that help you retrace user actions preceding a crash.) Starting today, you can see these breadcrumbs within the Crashlytics section of the Firebase console, helping you to triage issues more easily.To use breadcrumbs on Crashlytics, install the latest SDK and enable Google Analytics for Firebase. If you already have Analytics enabled, the feature will automatically start working.Crash insightsBy broadly analyzing aggregated crash data for common trends, Crashlytics automatically highlights potential root causes and gives you additional context on the underlying problems. For example, it can reveal how widespread incorrect UIKit rendering was in your app so you would know to address that issue first. Crash insights allows you to make more informed decisions on what actions to take, save time on triaging issues, and maximize the impact of your debugging efforts.From our community:"In the few weeks that we've been working with Crashlytics' crash insights, it's been quite helpful on a few particularly pesky issues. The description and quality of the linked resources makes it easy to immediately start debugging." - Marc Bernstein, Software Development Team Lead, HudlPinning important buildsGenerally, you have a few builds you care most about, while others aren't as important at the moment. With this new release of Crashlytics, you can now "pin" your most important builds which will appear at the top of the console. Your pinned builds will also appear on your teammates' consoles so it's easier to collaborate with them. This can be especially helpful when you have a large team with hundreds of builds and millions of users.dSYM uploadingTo show you stability issues, Crashlytics automatically uploads your dSYM files in the background to symbolicate your crashes. However, some complex situations can arise (i.e. Bitcode compiled apps) and prevent your dSYMs from being uploaded properly. That's why today we're also releasing a new dSYM uploader tool within your Crashlytics console. Now, you can manually upload your dSYM for cases where it cannot be automatically uploaded.Firebase's default crash reporterWith today's GA release of Firebase Crashlytics, we've decided to sunset Firebase Crash Reporting, so we can best serve you by focusing our efforts on one crash reporter. Starting today, you'll notice the console has changed to only list Crashlytics in the navigation. If you need to access your existing crash data in Firebase Crash Reporting, you can use the app picker to switch from Crashlytics to Crash Reporting.Firebase Crash Reporting will continue to be functional until September 8th, 2018 - at which point it will be retired fully.Upgrading to Crashlytics is easy: just visit your project's console, choose Crashlytics in the left navigation and click "Set up Crashlytics":Linking Fabric and Firebase CrashlyticsIf you're currently using both Firebase and Fabric, you can now link the two to see your existing crash data within the Firebase console. To get started, click "Link app in Fabric" within the console and go through the flow on fabric.io:If you are only using Fabric right now, you don't need to take any action. We'll be building out a new flow in the coming months to help you seamlessly link your existing app(s) from Fabric to Firebase. In the meantime, we encourage you to try other Firebase products.We are excited to bring you the best-in class crash reporter in the Firebase console. As always, let us know your thoughts and we look forward to continuing to improve Crashlytics. Happy debugging!#crashImg {width: 100%;margin: 10px 0;}Originally posted on the Firebase Blog by Jason St. Pierre, Product Manager.Back in October, we were thrilled to launch a beta version of Firebase Crashlytics. As the top ranked mobile app crash reporter for over 3 years running, Crashlytics helps you track, prioritize, and fix stability issues in realtime. It's been exciting to see all the positive reactions, as thousands of you have upgraded to Crashlytics in Firebase!
Today, we're graduating Firebase Crashlytics out of beta. As the default crash reporter for Firebase going forward, Crashlytics is the next evolution of the crash reporting capabilities of our platform. It empowers you to achieve everything you want to with Firebase Crash Reporting, plus much more.
This release include several major new features in addition to our stamp of approval when it comes to service reliability. Here's what's new.
Integration with Analytics eventsWe heard from many of you that you love Firebase Crash Reporting's "breadcrumbs" feature. (Breadcrumbs are the automatically created Analytics events that help you retrace user actions preceding a crash.) Starting today, you can see these breadcrumbs within the Crashlytics section of the Firebase console, helping you to triage issues more easily.
To use breadcrumbs on Crashlytics, install the latest SDK and enable Google Analytics for Firebase. If you already have Analytics enabled, the feature will automatically start working.
Crash insightsBy broadly analyzing aggregated crash data for common trends, Crashlytics automatically highlights potential root causes and gives you additional context on the underlying problems. For example, it can reveal how widespread incorrect UIKit rendering was in your app so you would know to address that issue first. Crash insights allows you to make more informed decisions on what actions to take, save time on triaging issues, and maximize the impact of your debugging efforts.
From our community:
"In the few weeks that we've been working with Crashlytics' crash insights, it's been quite helpful on a few particularly pesky issues. The description and quality of the linked resources makes it easy to immediately start debugging." - Marc Bernstein, Software Development Team Lead, Hudl
Pinning important buildsGenerally, you have a few builds you care most about, while others aren't as important at the moment. With this new release of Crashlytics, you can now "pin" your most important builds which will appear at the top of the console. Your pinned builds will also appear on your teammates' consoles so it's easier to collaborate with them. This can be especially helpful when you have a large team with hundreds of builds and millions of users.
dSYM uploadingTo show you stability issues, Crashlytics automatically uploads your dSYM files in the background to symbolicate your crashes. However, some complex situations can arise (i.e. Bitcode compiled apps) and prevent your dSYMs from being uploaded properly. That's why today we're also releasing a new dSYM uploader tool within your Crashlytics console. Now, you can manually upload your dSYM for cases where it cannot be automatically uploaded.
Firebase's default crash reporterWith today's GA release of Firebase Crashlytics, we've decided to sunset Firebase Crash Reporting, so we can best serve you by focusing our efforts on one crash reporter. Starting today, you'll notice the console has changed to only list Crashlytics in the navigation. If you need to access your existing crash data in Firebase Crash Reporting, you can use the app picker to switch from Crashlytics to Crash Reporting.
Firebase Crash Reporting will continue to be functional until September 8th, 2018 - at which point it will be retired fully .
Upgrading to Crashlytics is easy: just visit your project's console, choose Crashlytics in the left navigation and click "Set up Crashlytics":
Linking Fabric and Firebase CrashlyticsIf you're currently using both Firebase and Fabric, you can now link the two to see your existing crash data within the Firebase console. To get started, click "Link app in Fabric" within the console and go through the flow on fabric.io:
If you are only using Fabric right now, you don't need to take any action. We'll be building out a new flow in the coming months to help you seamlessly link your existing app(s) from Fabric to Firebase. In the meantime, we encourage you to try other Firebase products.
We are excited to bring you the best-in class crash reporter in the Firebase console. As always, let us know your thoughts and we look forward to continuing to improve Crashlytics. Happy debugging!
#crashImg {width: 100%;margin: 10px 0;} Originally posted by Alex Dufetel on the Firebase BlogToday we're excited to launch Cloud Firestore, a fully-managed NoSQL documentdatabase for mobile and web app development. It's designed to easily store andsync app data at global scale, and it's now available in beta.Key features of Cloud Firestore include:Documents and collections with powerful queryingiOS, Android, and Web SDKs with offline data accessReal-time data synchronizationAutomatic, multi-region data replication with strong consistencyNode, Python, Go, and Java server SDKsAnd of course, we've aimed for the simplicity and ease-of-use that is always toppriority for Firebase, while still making sure that Cloud Firestore can scale topower even the largest apps.Optimized for app developmentManaging app data is still hard; you have to scale servers, handle intermittentconnectivity, and deliver data with low latency.We've optimized Cloud Firestore for app development, so you can focus ondelivering value to your users and shipping better apps, faster. CloudFirestore:Synchronizes data between devices in real-time. OurAndroid, iOS, and Javascript SDKs sync your app data almost instantly. Thismakes it incredibly easy to build reactive apps, automatically sync data acrossdevices, and build powerful collaborative features -- and if you don't needreal-time sync, one-time reads are a first-class feature.Uses collections and documents to structure and query data.This data model is familiar and intuitive for many developers. It also allowsfor expressive queries. Queries scale with the size of your result set, not thesize of your data set, so you'll get the same performance fetching 1 result froma set of 100, or 100,000,000.Enables offline data access via a powerful, on-devicedatabase. This local database means your app will function smoothly,even when your users lose connectivity. This offline mode is available on Web,iOS and Android.Enables serverless development. Cloud Firestore'sclient-side SDKs take care of the complex authentication and networking codeyou'd normally need to write yourself. Then, on the backend, we provide apowerful set of security rules so you can control access to your data. Securityrules let you control which users can access which documents, and let you applycomplex validation logic to your data as well. Combined, these features allowyour mobile app to connect directly to your database.Integrates with the rest of the Firebase platform. You caneasily configure Cloud Functions to run custom code whenever data is written,and our SDKs automatically integrate with Firebase Authentication, to help youget started quickly.Putting the 'Cloud' in Cloud FirestoreAs you may have guessed from the name, Cloud Firestore was built in closecollaboration with the Google Cloud Platform team.This means it's a fully managed product, built from the ground up toautomatically scale. Cloud Firestore is a multi-region replicated database thatensures once data is committed, it's durable even in the face of unexpecteddisasters. Not only that, but despite being a distributed database, it's alsostrongly consistent, removing tricky edge cases to make building apps easierregardless of scale.It also means that delivering a great server-side experience for backenddevelopers is a top priority. We're launching SDKs for Java, Go, Python, andNode.js today, with more languages coming in the future.Another database?Over the last 3 years Firebase has grown to become Google's app developmentplatform; it now has 16 products to build and grow your app. If you've usedFirebase before, you know we already offer a database, the Firebase RealtimeDatabase, which helps with some of the challenges listed above.The Firebase Realtime Database, with its client SDKs and real-time capabilities,is all about making app development faster and easier. Since its launch, it hasbeen adopted by hundred of thousands of developers, and as its adoption grew, sodid usage patterns. Developers began using the Realtime Database for morecomplex data and to build bigger apps, pushing the limits of the JSON data modeland the performance of the database at scale.Cloud Firestore is inspired bywhat developers love most about the Firebase Realtime Database while alsoaddressing its key limitations like data structuring, querying, and scaling.So, if you're a Firebase Realtime Database user today, we think you'll loveCloud Firestore. However, this does not mean that Cloud Firestore is a drop-inreplacement for the Firebase Realtime Database. For some use cases, it may makesense to use the Realtime Database to optimize for cost and latency, and it'salso easy to use both databases together. You can read a more in-depthcomparison between the two databases here.We're continuing development on both databases and they'll both be available inour console and documentation.Get started!Cloud Firestore enters public beta starting today. If you're comfortable using abeta product you should give it a spin on your next project! Here are some ofthe companies and startups who are already building with Cloud Firestore:Get started by visiting the database tab in your Firebaseconsole. For more details, see the documentation, pricing, codesamples, performancelimitations during beta, and view our open source iOS and JavaScript SDKs onGitHub.
We can't wait to see what you build and hear what you think of Cloud Firestore!
Originally posted by Alex Dufetel on the Firebase BlogToday we're excited to launch Cloud Firestore, a fully-managed NoSQL documentdatabase for mobile and web app development. It's designed to easily store andsync app data at global scale, and it's now available in beta.
Key features of Cloud Firestore include:
Documents and collections with powerful queryingiOS, Android, and Web SDKs with offline data accessReal-time data synchronizationAutomatic, multi-region data replication with strong consistencyNode, Python, Go, and Java server SDKs And of course, we've aimed for the simplicity and ease-of-use that is always toppriority for Firebase, while still making sure that Cloud Firestore can scale topower even the largest apps.
Optimized for app developmentManaging app data is still hard; you have to scale servers, handle intermittentconnectivity, and deliver data with low latency.
We've optimized Cloud Firestore for app development, so you can focus ondelivering value to your users and shipping better apps, faster. CloudFirestore:
Synchronizes data between devices in real-time. OurAndroid, iOS, and Javascript SDKs sync your app data almost instantly. Thismakes it incredibly easy to build reactive apps, automatically sync data acrossdevices, and build powerful collaborative features -- and if you don't needreal-time sync, one-time reads are a first-class feature.Uses collections and documents to structure and query data.This data model is familiar and intuitive for many developers. It also allowsfor expressive queries. Queries scale with the size of your result set, not thesize of your data set, so you'll get the same performance fetching 1 result froma set of 100, or 100,000,000.Enables offline data access via a powerful, on-devicedatabase. This local database means your app will function smoothly,even when your users lose connectivity. This offline mode is available on Web,iOS and Android.Enables serverless development. Cloud Firestore'sclient-side SDKs take care of the complex authentication and networking codeyou'd normally need to write yourself. Then, on the backend, we provide apowerful set of security rules so you can control access to your data. Securityrules let you control which users can access which documents, and let you applycomplex validation logic to your data as well. Combined, these features allowyour mobile app to connect directly to your database.Integrates with the rest of the Firebase platform. You caneasily configure Cloud Functions to run custom code whenever data is written,and our SDKs automatically integrate with Firebase Authentication, to help youget started quickly.Putting the 'Cloud' in Cloud Firestore As you may have guessed from the name, Cloud Firestore was built in closecollaboration with the Google Cloud Platform team.
This means it's a fully managed product, built from the ground up toautomatically scale. Cloud Firestore is a multi-region replicated database thatensures once data is committed, it's durable even in the face of unexpecteddisasters. Not only that, but despite being a distributed database, it's alsostrongly consistent, removing tricky edge cases to make building apps easierregardless of scale.
It also means that delivering a great server-side experience for backenddevelopers is a top priority. We're launching SDKs for Java, Go, Python, andNode.js today, with more languages coming in the future.
Another database?Over the last 3 years Firebase has grown to become Google's app developmentplatform; it now has 16 products to build and grow your app. If you've usedFirebase before, you know we already offer a database, the Firebase RealtimeDatabase, which helps with some of the challenges listed above.
The Firebase Realtime Database, with its client SDKs and real-time capabilities,is all about making app development faster and easier. Since its launch, it hasbeen adopted by hundred of thousands of developers, and as its adoption grew, sodid usage patterns. Developers began using the Realtime Database for morecomplex data and to build bigger apps, pushing the limits of the JSON data modeland the performance of the database at scale.Cloud Firestore is inspired bywhat developers love most about the Firebase Realtime Database while alsoaddressing its key limitations like data structuring, querying, and scaling.
So, if you're a Firebase Realtime Database user today, we think you'll loveCloud Firestore. However, this does not mean that Cloud Firestore is a drop-inreplacement for the Firebase Realtime Database. For some use cases, it may makesense to use the Realtime Database to optimize for cost and latency, and it'salso easy to use both databases together. You can read a more in-depthcomparison between the two databases here.
We're continuing development on both databases and they'll both be available inour console and documentation.
Get started!Cloud Firestore enters public beta starting today. If you're comfortable using abeta product you should give it a spin on your next project! Here are some ofthe companies and startups who are already building with Cloud Firestore:
Get started by visiting the database tab in your Firebaseconsole. For more details, see the documentation, pricing, codesamples, performancelimitations during beta, and view our open source iOS and JavaScript SDKs onGitHub.
We can't wait to see what you build and hear what you think of Cloud Firestore!
Posted by David DeRemer (from Posse)Whether it's opening night for a Broadway musical or launch day for your app,both are thrilling times for everyone involved. Our agency, Posse, collaborated with Hamilton to design,build, and launch the official Hamilton app... in only three short months.We decided to use Firebase, Google'smobile development platform, for our backend and infrastructure, while we usedFlutter, a new UI toolkit for iOS and Android,for our front-end. In this post, we share how we did it.The Cloud Where It HappensWe love to spend time designing beautiful UIs, testing new interactions, anditerating with clients, and we don't want to be distracted by setting up andmaintaining servers. To stay focused on the app and our users, we implemented afull serverless architecture and made heavy use of Firebase.
A key feature of the app is the ticket lottery, which offers fans achance to get tickets to the constantly sold-out Hamilton show. We used CloudFunctions for Firebase, and a data flow architecture we learnedabout at Google I/O, to coordinate the lottery workflow between the mobileapp, custom business logic, and partner services.
For example, when someone enters the lottery, the app first writes data tospecific nodes in Realtime Database and the database's security rules help toensure that the data is valid. The write triggers a Cloud Function,which runs business logic and stores its result to a new node in the RealtimeDatabase. The newly written result data is then pushed automatically to the app.
What'd I miss?Because of Hamilton's intense fan following, we wanted to make sure that appusers could get news the instant it was published. So we built a custom,web-based Content Management System (CMS) for the Hamilton team that usedFirebase Realtime Database to store and retrieve data. The Realtime Databaseeliminated the need for a "pull to refresh" feature of the app. When new contentis published via the CMS, the update is stored in Firebase Realtime Database andevery app user automatically sees the update. No refresh, reload, orpull required!
Cloud Functions Left Us SatisfiedBesides powering our lottery integration, Cloud Functions was also extremelyvaluable in the creation of user profiles, sending push notifications, and our#HamCam — a custom Hamilton selfie and photo-taking experience. Cloud Functionsresized the images, saved them in Cloud Storage, and then updated the database.By taking care of the infrastructure work of storing and managing the photos,Firebase freed us up to focus on making the camera fun and full of Hamiltonstyle.
Developing UI? Don't Wait For It.With only three months to design and deliver the app, we knew we needed toiterate quickly on the UX and UI. Flutter's hot reload developmentcycle meant we could make a change in our UI code and, in about a second, seethe change reflected on our simulators and phones. No rebuilding, recompiling,or multi-second pauses required! Even the state of the app was preserved betweenhot reloads, making it very fast for us to iterate on the UI with our designers.
We used Flutter's reactive UI framework to implement Hamilton's iconic brandwith custom UI elements. Flutter's "everything is a widget" approach made iteasy for us to compose custom UIs from a rich set of building blocks provided bythe framework. And, because Flutter runs on both iOS and Android, we were ableto spend our time creating beautiful designs instead of porting the UI.
The FlutterFireproject helped us access Firebase Analytics, Firebase Authentication, andRealtime Database from the app code. And because Flutter is open source, andeasy to extend, we even built a custom router library that helped usorganize the app's UI code.
What comes next?We enjoyed building the Hamilton app (find it on the PlayStore or the AppStore) in a way that allowed us to focus on our users and experiment withnew app ideas and experiences. And based on our experience, we'd happilyrecommend serverless architectures with Firebase and customized UI designs withFlutter as powerful ways for you to save time building your app.
For us, we already have plans how to continue and develop Hamilton app in newways, and can't wait to release those soon!
If you want to learn more about Firebase or Flutter, we recommend the Firebase docs, the Firebase channel on YouTube,and the Flutter website.
.blogimg1 img {width: 50%;display: block;margin: auto;border: 0;padding: 20px 0 20px 0;}.blogimg2 img {width: 100%;margin: 0;border: 0;padding: 20px 0 20px 0;} Posted by David DeRemer (from Posse)Whether it's opening night for a Broadway musical or launch day for your app,both are thrilling times for everyone involved. Our agency, Posse, collaborated with Hamilton to design,build, and launch the official Hamilton app... in only three short months.
We decided to use Firebase, Google'smobile development platform, for our backend and infrastructure, while we usedFlutter, a new UI toolkit for iOS and Android,for our front-end. In this post, we share how we did it.
The Cloud Where It HappensWe love to spend time designing beautiful UIs, testing new interactions, anditerating with clients, and we don't want to be distracted by setting up andmaintaining servers. To stay focused on the app and our users, we implemented afull serverless architecture and made heavy use of Firebase.
A key feature of the app is the ticket lottery, which offers fans achance to get tickets to the constantly sold-out Hamilton show. We used CloudFunctions for Firebase, and a data flow architecture we learnedabout at Google I/O, to coordinate the lottery workflow between the mobileapp, custom business logic, and partner services.
For example, when someone enters the lottery, the app first writes data tospecific nodes in Realtime Database and the database's security rules help toensure that the data is valid. The write triggers a Cloud Function,which runs business logic and stores its result to a new node in the RealtimeDatabase. The newly written result data is then pushed automatically to the app.
What'd I miss?Because of Hamilton's intense fan following, we wanted to make sure that appusers could get news the instant it was published. So we built a custom,web-based Content Management System (CMS) for the Hamilton team that usedFirebase Realtime Database to store and retrieve data. The Realtime Databaseeliminated the need for a "pull to refresh" feature of the app. When new contentis published via the CMS, the update is stored in Firebase Realtime Database andevery app user automatically sees the update. No refresh, reload, orpull required!
Cloud Functions Left Us SatisfiedBesides powering our lottery integration, Cloud Functions was also extremelyvaluable in the creation of user profiles, sending push notifications, and our#HamCam — a custom Hamilton selfie and photo-taking experience. Cloud Functionsresized the images, saved them in Cloud Storage, and then updated the database.By taking care of the infrastructure work of storing and managing the photos,Firebase freed us up to focus on making the camera fun and full of Hamiltonstyle.
Developing UI? Don't Wait For It.With only three months to design and deliver the app, we knew we needed toiterate quickly on the UX and UI. Flutter's hot reload developmentcycle meant we could make a change in our UI code and, in about a second, seethe change reflected on our simulators and phones. No rebuilding, recompiling,or multi-second pauses required! Even the state of the app was preserved betweenhot reloads, making it very fast for us to iterate on the UI with our designers.
We used Flutter's reactive UI framework to implement Hamilton's iconic brandwith custom UI elements. Flutter's "everything is a widget" approach made iteasy for us to compose custom UIs from a rich set of building blocks provided bythe framework. And, because Flutter runs on both iOS and Android, we were ableto spend our time creating beautiful designs instead of porting the UI.
The FlutterFireproject helped us access Firebase Analytics, Firebase Authentication, andRealtime Database from the app code. And because Flutter is open source, andeasy to extend, we even built a custom router library that helped usorganize the app's UI code.
What comes next?We enjoyed building the Hamilton app (find it on the PlayStore or the AppStore) in a way that allowed us to focus on our users and experiment withnew app ideas and experiences. And based on our experience, we'd happilyrecommend serverless architectures with Firebase and customized UI designs withFlutter as powerful ways for you to save time building your app.
For us, we already have plans how to continue and develop Hamilton app in newways, and can't wait to release those soon!
If you want to learn more about Firebase or Flutter, we recommend the Firebase docs, the Firebase channel on YouTube,and the Flutter website.
.blogimg1 img {width: 50%;display: block;margin: auto;border: 0;padding: 20px 0 20px 0;}.blogimg2 img {width: 100%;margin: 0;border: 0;padding: 20px 0 20px 0;} Originally posted on the Firebase Blog by Francis Ma, Firebase Group Product ManagerIt's been an exciting year! Last May, we expanded Firebase intoour unified app platform, building on the original backend-as-a-service andadding products to help developers grow their user base, as well as test andmonetize their apps. Hearing from developers like Wattpad, who built an appusing Firebase in only 3 weeks, makes all the hard work worthwhile.We're thrilled by the initial response from the community, but we believe ourjourney is just getting started. Let's talk about some of the enhancementscoming to Firebase today.Integrating with FabricIn January, weannounced that we were welcoming the Fabric team to Firebase. Fabric initiallygrabbed our attention with their array of products, including theindustry-leading crash reporting tool, Crashlytics. As we got to know the teambetter, we were even more impressed by how closely aligned our missions are: tohelp developers build better apps and grow successful businesses. Over the lastseveral months, we've been working closely with the Fabric team to bringthe best of our platforms together.We plan to make Crashlytics the primary crash reporting product in Firebase. Ifyou don't already use a crash reporting tool, we recommend you take a look atCrashlytics and see what it can do for you. You can get started by following the Fabricdocumentation.Phone authentication comes to FirebasePhone number authentication has been the biggest request for FirebaseAuthentication, so we're excited to announce that we've worked with the FabricDigits team to bring phone auth to our platform. You can now let your users signin with their phone numbers, in addition to traditional email/password oridentity providers like Google or Facebook. This gives you a comprehensiveauthentication solution no matter who your users are or how they like to log in.At the same time, the Fabric team will be retiring the Digits name and SDK. Ifyou currently use Digits, over the next couple weeks we'll be rolling out theability to link your existing Digits account with Firebase and swap in theFirebase SDK for the Digits SDK. Go to the Digitsblog to learn more./>Introducing Firebase Performance MonitoringWe recognize that poor app performance and stability are the top reasons forusers to leave bad ratings on your app and possibly churn altogether. As part ofour effort to help you build better apps, we're pleased to announce the betalaunch of Performance Monitoring.Firebase Performance Monitoring is a new free tool that helps you understandwhen your user experience is being impacted by poorly performing code orchallenging network conditions. You can learn more and get started withPerformance Monitoring in the Firebasedocumentation.More robust analyticsAnalytics has been core to the Firebase platform since we launched last I/O. Weknow that understanding your users is the number one way to make your appsuccessful, so we're continuing to invest in improving our analytics product.First off, you may notice that you're starting to see the name "Google Analyticsfor Firebase" around our documentation. Our analytics solution was built inconjunction with the Google Analytics team, and the reports are available bothin the Firebase console and the Google Analytics interface. So, we're renamingFirebase Analytics to Google Analytics for Firebase, to reflect that your appanalytics data are shared across both.For those of you who monetize your app with AdMob, we've started sharing data betweenthe two platforms, helping you understand the true lifetime value (LTV) ofyour users, from both purchases and AdMob revenue. You'll see these new insightssurfaced in the updated Analytics dashboard.Many of you have also asked for analytics insights into custom events andparameters. Starting today, you can register up to 50 custom event parametersand see their details in your Analytics reports. Learn more aboutcustom parameter reporting.Firebase for all - iOS, games, and open sourceFirebase's mission is to help all developers build better apps. In that spirit,today we're announcing expanded platform and vertical support for Firebase.First of all, as Swift has become the preferred language for many iOSdevelopers, we've updated our SDK to handle Swift language nuances, making Swiftdevelopment a native experience on Firebase.We've also improved Firebase Cloud Messaging by adding support for token-basedauthentication for APNs, and greatly simplifying the connection and registrationlogic in the client SDK.Second, we've heard from our game developer community that one of the mostimportant stats you monitor is frames per second (FPS). So, we've built GameLoop support & FPS monitoring into Test Lab for Android, allowing you toevaluate your game's frame rate before you deploy. Coupled with the addition ofUnity plugins and a C++ SDK, which weannounced at GDC this year, we think that Firebase is a great option forgame developers. To see an example of a game built on top of Firebase, check outour Mecha Hamster app onGithub.Finally, we've taken a big first step towards open sourcing our SDKs. We believein open source software, not only because transparency is an important goal, butalso because we know that the greatest innovation happens when we allcollaborate. You can view our new repos on our open sourceproject page and learn more about our decision in thisblog post.Dynamic Hosting with Cloud Functions for FirebaseIn March, welaunched Cloud Functions for Firebase, which lets you run custom backendcode in response to events triggered by Firebase features and HTTP requests.This lets you do things like send a notification when a user signs up orautomatically create thumbnails when an image is uploaded to Cloud Storage.Today, in an effort to better serve our web developer community, we're expandingFirebase Hosting to integrate with Cloud Functions. This means that, in additionto serving static assets for your web app, you can now serve dynamic content,generated by Cloud Functions, through Firebase Hosting. For those of youbuilding progressive webapps, Firebase Hosting + Cloud Functions allows you to go completelyserver-less. You can learn more by visiting ourdocumentation.Firebase Alpha program and what's nextOur goal is to build the best developer experience: easy-to-use products, greatdocumentation, and intuitive APIs. And the best resource that we have forimproving Firebase is you! Your questions and feedback continuously push us tomake Firebase better.In light of that, we're excited to announce a Firebase Alpha program, where youwill have the opportunity to test the cutting edge of our products. Things mightnot be perfect (in fact, we can almost guarantee they won't be), but byparticipating in the alpha community, you'll help define the future of Firebase.If you want to get involved, please register your interest in the Firebase Alpha form.Thank you for your support, enthusiasm, and, most importantly, feedback. TheFirebase community is the reason that we've been able to grow and improve ourplatform at such an incredible pace over the last year. We're excited tocontinue working with you to build simple, intuitive products for developingapps and growing mobile businesses. To get started with Firebase today, visitour newly redesigned website. We'reexcited to see what you build!Originally posted on the Firebase Blog by Francis Ma, Firebase Group Product ManagerIt's been an exciting year! Last May, we expanded Firebase intoour unified app platform, building on the original backend-as-a-service andadding products to help developers grow their user base, as well as test andmonetize their apps. Hearing from developers like Wattpad, who built an appusing Firebase in only 3 weeks, makes all the hard work worthwhile.
We're thrilled by the initial response from the community, but we believe ourjourney is just getting started. Let's talk about some of the enhancementscoming to Firebase today.
Integrating with FabricIn January, weannounced that we were welcoming the Fabric team to Firebase. Fabric initiallygrabbed our attention with their array of products, including theindustry-leading crash reporting tool, Crashlytics. As we got to know the teambetter, we were even more impressed by how closely aligned our missions are: tohelp developers build better apps and grow successful businesses. Over the lastseveral months, we've been working closely with the Fabric team to bringthe best of our platforms together.
We plan to make Crashlytics the primary crash reporting product in Firebase. Ifyou don't already use a crash reporting tool, we recommend you take a look atCrashlytics and see what it can do for you. You can get started by following the Fabricdocumentation.
Phone authentication comes to FirebasePhone number authentication has been the biggest request for FirebaseAuthentication, so we're excited to announce that we've worked with the FabricDigits team to bring phone auth to our platform. You can now let your users signin with their phone numbers, in addition to traditional email/password oridentity providers like Google or Facebook. This gives you a comprehensiveauthentication solution no matter who your users are or how they like to log in.
At the same time, the Fabric team will be retiring the Digits name and SDK. Ifyou currently use Digits, over the next couple weeks we'll be rolling out theability to link your existing Digits account with Firebase and swap in theFirebase SDK for the Digits SDK. Go to the Digitsblog to learn more.
/>Introducing Firebase Performance MonitoringWe recognize that poor app performance and stability are the top reasons forusers to leave bad ratings on your app and possibly churn altogether. As part ofour effort to help you build better apps, we're pleased to announce the betalaunch of Performance Monitoring.
Firebase Performance Monitoring is a new free tool that helps you understandwhen your user experience is being impacted by poorly performing code orchallenging network conditions. You can learn more and get started withPerformance Monitoring in the Firebasedocumentation.
More robust analyticsAnalytics has been core to the Firebase platform since we launched last I/O. Weknow that understanding your users is the number one way to make your appsuccessful, so we're continuing to invest in improving our analytics product.
First off, you may notice that you're starting to see the name "Google Analyticsfor Firebase" around our documentation. Our analytics solution was built inconjunction with the Google Analytics team, and the reports are available bothin the Firebase console and the Google Analytics interface. So, we're renamingFirebase Analytics to Google Analytics for Firebase, to reflect that your appanalytics data are shared across both.
For those of you who monetize your app with AdMob, we've started sharing data betweenthe two platforms, helping you understand the true lifetime value (LTV) ofyour users, from both purchases and AdMob revenue. You'll see these new insightssurfaced in the updated Analytics dashboard.
Many of you have also asked for analytics insights into custom events andparameters. Starting today, you can register up to 50 custom event parametersand see their details in your Analytics reports. Learn more aboutcustom parameter reporting.
Firebase for all - iOS, games, and open sourceFirebase's mission is to help all developers build better apps. In that spirit,today we're announcing expanded platform and vertical support for Firebase.
First of all, as Swift has become the preferred language for many iOSdevelopers, we've updated our SDK to handle Swift language nuances, making Swiftdevelopment a native experience on Firebase.
We've also improved Firebase Cloud Messaging by adding support for token-basedauthentication for APNs, and greatly simplifying the connection and registrationlogic in the client SDK.
Second, we've heard from our game developer community that one of the mostimportant stats you monitor is frames per second (FPS). So, we've built GameLoop support & FPS monitoring into Test Lab for Android, allowing you toevaluate your game's frame rate before you deploy. Coupled with the addition ofUnity plugins and a C++ SDK, which weannounced at GDC this year, we think that Firebase is a great option forgame developers. To see an example of a game built on top of Firebase, check outour Mecha Hamster app onGithub.
Finally, we've taken a big first step towards open sourcing our SDKs. We believein open source software, not only because transparency is an important goal, butalso because we know that the greatest innovation happens when we allcollaborate. You can view our new repos on our open sourceproject page and learn more about our decision in thisblog post.
Dynamic Hosting with Cloud Functions for FirebaseIn March, welaunched Cloud Functions for Firebase, which lets you run custom backendcode in response to events triggered by Firebase features and HTTP requests.This lets you do things like send a notification when a user signs up orautomatically create thumbnails when an image is uploaded to Cloud Storage.
Today, in an effort to better serve our web developer community, we're expandingFirebase Hosting to integrate with Cloud Functions. This means that, in additionto serving static assets for your web app, you can now serve dynamic content,generated by Cloud Functions, through Firebase Hosting. For those of youbuilding progressive webapps, Firebase Hosting + Cloud Functions allows you to go completelyserver-less. You can learn more by visiting ourdocumentation.
Firebase Alpha program and what's nextOur goal is to build the best developer experience: easy-to-use products, greatdocumentation, and intuitive APIs. And the best resource that we have forimproving Firebase is you! Your questions and feedback continuously push us tomake Firebase better.
In light of that, we're excited to announce a Firebase Alpha program, where youwill have the opportunity to test the cutting edge of our products. Things mightnot be perfect (in fact, we can almost guarantee they won't be), but byparticipating in the alpha community, you'll help define the future of Firebase.If you want to get involved, please register your interest in the Firebase Alpha form.
Thank you for your support, enthusiasm, and, most importantly, feedback. TheFirebase community is the reason that we've been able to grow and improve ourplatform at such an incredible pace over the last year. We're excited tocontinue working with you to build simple, intuitive products for developingapps and growing mobile businesses. To get started with Firebase today, visitour newly redesigned website. We'reexcited to see what you build!
Cross posted from Inside AdMobPosted by Sridhar Ramaswamy, Senior Vice President, Ads and CommerceI/O is a magical time at Google. Every year, thousands of developers gather in Google's backyard to share new product ideas and learn about our latest innovations in computing.We're meeting at an exciting time for the developer community. It's a time when consumers have more choices than ever before—like where to shop, what to watch, which games to play and how to communicate with friends and family. Your product needs to stand out. You need tools to help your business grow. And you need to make sure your users are happy.We think we can help.This week, my team and I shared 3 new innovations for developers to make it easy for users to pay for your services, build profitable businesses and grow your user base.Enabling users to pay with GoogleStarting today, our suite of payment solutions will be expanding. The Google Payment API enables merchants and developers to turbocharge checkout conversion by offering your users an easy way to pay with credit and debit cards saved to their Google Account. Users will have multiple Google payment options at their fingertips, like a credit or a debit card previously saved via Android Pay, a payment card used to transact on the Play Store or a form of payment stored via Chrome. And they'll be able to use these saved payment options in third-party apps and mobile sites, as well as on Google Assistant when they are on-the-go.Paying with Google for Panera Bread on Google AssistantFor users, this means faster checkout. Now they'll never miss a deal because they're stuck on a bus and don't want to pull out their credit card in front of strangers. They'll no longer experience the pain of stumbling on a sale that ends at midnight when they're tucked in bed with their credit card out of reach. Users can save time and headache by using credit and debit cards they've already saved to their Google Account whenever they see the option to pay with Google on supported apps or sites.For developers, this API is a significant innovation that can enable faster checkout, drive more conversions, increase sales and reduce abandoned carts—all with a simple integration. Learn more about our Google Payment API here.Earn more from your apps with the brand new AdMob People turn to their mobile devices throughout the day to shop, communicate and stay entertained. For developers, in-app purchases are one way to monetize. Ads are another way.AdMob was built to support the app ecosystem. With over 1 million apps across iOS and Android, AdMob has paid over $3.5 billion dollars in ads revenue to developers. But there's more we can do to help you succeed.Today, we're introducing a completely redesigned AdMob. Rebuilt from the ground up, AdMob is now simpler to use and delivers richer insights about your users' in-app experiences.Simpler to use: We've applied Material Design to all aspects of the AdMob look and feel to deliver an easy-to-use and intuitive experience across the entire platform—on mobile and desktop. You'll get more done in less time. Below you can see how easy it is to pick an app that you're monitoring, check out its key metrics and then quickly take action to fine-tune its performance.Redesigned AdMob experience Deeper insights: We've also integrated Google Analytics for Firebase into the core of the redesigned AdMob so you have quick access to the metrics that matter most for your business. Once you link your AdMob and Firebase accounts, you'll have access to detailed ad revenue data and user insights like time spent in the app and in-app purchases—all in one place.Google Analytics for Firebase dashboard in AdMobKnow your user, find your user with Universal App CampaignsEarning money from your app is one piece of the puzzle. You also need to think about how to grow your user base.Google's app innovations have delivered over 5 billion installs from ads and we are now helping developers drive over 3 billion in-app events per quarter—like users adding something to their cart or reaching level 3 of a game. Developers have gravitated toward Universal App Campaigns (UAC) as the "one stop shop" campaign type that scales your reach and maximizes app installs across Google's largest properties: Google Play, Search, YouTube, Gmail and the Display Network. UAC uses Google's machine learning technology to evaluate numerous signals in real time, refining each ad to help you reach your most engaged users. We're continuing to double down on UAC, with all new innovations being built into UAC to make app promotion even more effective.Engage users in key moments of discovery with new UAC placements in Google Play Android reaches more than 2 billion active devices every month, with Google Play available in 190+ countries around the world. It's the place users come to discover new apps and games. Beyond searching for apps to try, users are increasingly browsing the Play store and finding recommendations for new apps. To help those users discover more of your apps, we are introducing new ad placements on the home and app listing pages in the Google Play Store. These new placements, available exclusively through UAC, help you reach users in "discovery mode" as they swipe, tap and scroll in search of their next favorite app. New ad placements reach users browsing in Google Play Discover more of your best users with new bidding options in UAC Some users are more valuable to your business than others, like the players who level-up in your game or the loyal travelers who book several flights a month. That's why we're expanding Smart Bidding strategies in UAC to help you acquire more of these high-value users. Using Smart Bidding, you can tailor bids for your unique business goals - target cost per acquisition (tCPA) or target return on ad spend (tROAS). UAC delivers the right users based on your objectives: installs, events and, coming soon, value. This update starts rolling out to iOS and Android developers and advertisers in the coming months. Introducing App Attribution Partners, a new measurement program Many developers rely on third-party measurement providers to measure the impact of ads and gain valuable insights about how users engage with your app. To help you take action on these insights in a faster and more seamless way, we are introducing App Attribution Partners, a new program designed to integrate data from 7 global companies right into AdWords.Welcome to adjust, Adways, AppsFlyer, Apsalar, CyberZ, Kochava and TUNE... we're thrilled to have them onboard!AdWords' integration with these partners ensures that you have consistent, reliable and more granular data where you review app metrics. Now you can take action with confidence and stay on top of your business performance.As consumers live more of their lives online, it's increasingly important for developers to build user-centric experiences in everything that you do—from the apps you design, to the experiences you deliver, to the ways you help people transact. We know it's not always easy, so Google is here to help.We look forward to continuing on this journey with you. Cross posted from Inside AdMobPosted by Sridhar Ramaswamy, Senior Vice President, Ads and CommerceI/O is a magical time at Google. Every year, thousands of developers gather in Google's backyard to share new product ideas and learn about our latest innovations in computing.We're meeting at an exciting time for the developer community. It's a time when consumers have more choices than ever before—like where to shop, what to watch, which games to play and how to communicate with friends and family. Your product needs to stand out. You need tools to help your business grow. And you need to make sure your users are happy.We think we can help.This week, my team and I shared 3 new innovations for developers to make it easy for users to pay for your services, build profitable businesses and grow your user base.Enabling users to pay with GoogleStarting today, our suite of payment solutions will be expanding. The Google Payment API enables merchants and developers to turbocharge checkout conversion by offering your users an easy way to pay with credit and debit cards saved to their Google Account. Users will have multiple Google payment options at their fingertips, like a credit or a debit card previously saved via Android Pay, a payment card used to transact on the Play Store or a form of payment stored via Chrome. And they'll be able to use these saved payment options in third-party apps and mobile sites, as well as on Google Assistant when they are on-the-go.Paying with Google for Panera Bread on Google AssistantFor users, this means faster checkout. Now they'll never miss a deal because they're stuck on a bus and don't want to pull out their credit card in front of strangers. They'll no longer experience the pain of stumbling on a sale that ends at midnight when they're tucked in bed with their credit card out of reach. Users can save time and headache by using credit and debit cards they've already saved to their Google Account whenever they see the option to pay with Google on supported apps or sites.For developers, this API is a significant innovation that can enable faster checkout, drive more conversions, increase sales and reduce abandoned carts—all with a simple integration. Learn more about our Google Payment API here.Earn more from your apps with the brand new AdMob People turn to their mobile devices throughout the day to shop, communicate and stay entertained. For developers, in-app purchases are one way to monetize. Ads are another way.AdMob was built to support the app ecosystem. With over 1 million apps across iOS and Android, AdMob has paid over $3.5 billion dollars in ads revenue to developers. But there's more we can do to help you succeed.Today, we're introducing a completely redesigned AdMob. Rebuilt from the ground up, AdMob is now simpler to use and delivers richer insights about your users' in-app experiences.Simpler to use: We've applied Material Design to all aspects of the AdMob look and feel to deliver an easy-to-use and intuitive experience across the entire platform—on mobile and desktop. You'll get more done in less time. Below you can see how easy it is to pick an app that you're monitoring, check out its key metrics and then quickly take action to fine-tune its performance.Redesigned AdMob experience Deeper insights: We've also integrated Google Analytics for Firebase into the core of the redesigned AdMob so you have quick access to the metrics that matter most for your business. Once you link your AdMob and Firebase accounts, you'll have access to detailed ad revenue data and user insights like time spent in the app and in-app purchases—all in one place.Google Analytics for Firebase dashboard in AdMobKnow your user, find your user with Universal App CampaignsEarning money from your app is one piece of the puzzle. You also need to think about how to grow your user base.Google's app innovations have delivered over 5 billion installs from ads and we are now helping developers drive over 3 billion in-app events per quarter—like users adding something to their cart or reaching level 3 of a game. Developers have gravitated toward Universal App Campaigns (UAC) as the "one stop shop" campaign type that scales your reach and maximizes app installs across Google's largest properties: Google Play, Search, YouTube, Gmail and the Display Network. UAC uses Google's machine learning technology to evaluate numerous signals in real time, refining each ad to help you reach your most engaged users. We're continuing to double down on UAC, with all new innovations being built into UAC to make app promotion even more effective.Engage users in key moments of discovery with new UAC placements in Google Play Android reaches more than 2 billion active devices every month, with Google Play available in 190+ countries around the world. It's the place users come to discover new apps and games. Beyond searching for apps to try, users are increasingly browsing the Play store and finding recommendations for new apps. To help those users discover more of your apps, we are introducing new ad placements on the home and app listing pages in the Google Play Store. These new placements, available exclusively through UAC, help you reach users in "discovery mode" as they swipe, tap and scroll in search of their next favorite app. New ad placements reach users browsing in Google Play Discover more of your best users with new bidding options in UAC Some users are more valuable to your business than others, like the players who level-up in your game or the loyal travelers who book several flights a month. That's why we're expanding Smart Bidding strategies in UAC to help you acquire more of these high-value users. Using Smart Bidding, you can tailor bids for your unique business goals - target cost per acquisition (tCPA) or target return on ad spend (tROAS). UAC delivers the right users based on your objectives: installs, events and, coming soon, value. This update starts rolling out to iOS and Android developers and advertisers in the coming months. Introducing App Attribution Partners, a new measurement program Many developers rely on third-party measurement providers to measure the impact of ads and gain valuable insights about how users engage with your app. To help you take action on these insights in a faster and more seamless way, we are introducing App Attribution Partners, a new program designed to integrate data from 7 global companies right into AdWords.Welcome to adjust, Adways, AppsFlyer, Apsalar, CyberZ, Kochava and TUNE... we're thrilled to have them onboard!AdWords' integration with these partners ensures that you have consistent, reliable and more granular data where you review app metrics. Now you can take action with confidence and stay on top of your business performance.As consumers live more of their lives online, it's increasingly important for developers to build user-centric experiences in everything that you do—from the apps you design, to the experiences you deliver, to the ways you help people transact. We know it's not always easy, so Google is here to help.We look forward to continuing on this journey with you. Originally posted on the Firebase BlogPosted by Francis Ma, Firebase Product ManagerAlmost eight months ago, we launchedthe expansion of Firebase to help developers build high-quality apps, grow theiruser base, and earn more money across iOS, Android and the Web. We've alreadyseen great adoption of the platform, which brings together the best of Google'score businesses from Cloud to mobile advertising.Our ultimate goal with Firebase is to free developers from so much of thecomplexity associated with modern software development, giving them back moretime and energy to focus on innovation.As we work towards that goal, we've continued to improve Firebase, workingclosely with our user community. We recently introducedmajor enhancements to many core features, including Firebase Analytics, Test Laband Cloud Messaging, as well as added support for game developers with a C++ SDKand Unity plug-in.We're deeply committed to Firebase and are doubling down on our investment tosolve developer challenges.Fabric and Firebase Joining ForcesToday, we're excited to announce that we've signed an agreement to acquireFabric to continue the great work that Twitter put into the platform. Fabricwill join Google's Developer Product Group, working with the Firebase team. Ourmissions align closely: help developers build better apps and grow theirbusiness.As a popular, trusted tool over many years, we expect that Crashlytics willbecome the main crash reporting offering for Firebase and will augment the workthat we have already done in this area. While Fabric was built on the foundationof Crashlytics, the Fabric team leveraged its success to launch a broad set ofimportant tools, including Answers and Fastlane. We'll share further details inthe coming weeks after we close the deal, as we work closely together with theFabric team to determine the most efficient ways to further combine ourstrengths. During the transition period, Digits, the SMS authentication services, will be maintained by Twitter.The integration of Fabric is part of our larger, long-term effort of deliveringa comprehensive suite of features for iOS, Android and mobile Web appdevelopment.This is a great moment for the industry and a unique opportunity to bring thebest of Firebase with the best of Fabric. We're committed to making mobile appdevelopment seamless, so that developers can focus more of their time onbuilding creative experiences. Originally posted on the Firebase BlogPosted by Francis Ma, Firebase Product ManagerAlmost eight months ago, we launchedthe expansion of Firebase to help developers build high-quality apps, grow theiruser base, and earn more money across iOS, Android and the Web. We've alreadyseen great adoption of the platform, which brings together the best of Google'score businesses from Cloud to mobile advertising.Our ultimate goal with Firebase is to free developers from so much of thecomplexity associated with modern software development, giving them back moretime and energy to focus on innovation.As we work towards that goal, we've continued to improve Firebase, workingclosely with our user community. We recently introducedmajor enhancements to many core features, including Firebase Analytics, Test Laband Cloud Messaging, as well as added support for game developers with a C++ SDKand Unity plug-in.We're deeply committed to Firebase and are doubling down on our investment tosolve developer challenges.Fabric and Firebase Joining ForcesToday, we're excited to announce that we've signed an agreement to acquireFabric to continue the great work that Twitter put into the platform. Fabricwill join Google's Developer Product Group, working with the Firebase team. Ourmissions align closely: help developers build better apps and grow theirbusiness.As a popular, trusted tool over many years, we expect that Crashlytics willbecome the main crash reporting offering for Firebase and will augment the workthat we have already done in this area. While Fabric was built on the foundationof Crashlytics, the Fabric team leveraged its success to launch a broad set ofimportant tools, including Answers and Fastlane. We'll share further details inthe coming weeks after we close the deal, as we work closely together with theFabric team to determine the most efficient ways to further combine ourstrengths. During the transition period, Digits, the SMS authentication services, will be maintained by Twitter.The integration of Fabric is part of our larger, long-term effort of deliveringa comprehensive suite of features for iOS, Android and mobile Web appdevelopment.This is a great moment for the industry and a unique opportunity to bring thebest of Firebase with the best of Fabric. We're committed to making mobile appdevelopment seamless, so that developers can focus more of their time onbuilding creative experiences. Originally posted on the Firebase blog by Doug Stevenson /Developer AdvocateI've got to come clean with everyone: I'm making no new year's resolutions for2017. Nor did I make any in 2016. In fact, I don't think I've ever made one!It's not so much that I take a dim view of new year's resolutions. I simplysuspect that I would likely break them by the end of the week, and feel badabout it!One thing I've found helpful in the past is to see the new year as a pivotingpoint to try new things, and also improve the work I'm already doing. For me(and I hope for you too!), 2017 will be a fresh year for boosting app quality.The phrase "app quality" can take a bunch of different meanings, based on whatyou value in the software you create and use. As a developer, traditionally,this means fixing bugs that cause problems for your users. It could also be areflection of the amount of delight your users take in your app. All of thisgets wrapped up into the one primary metric that we have to gauge the quality ofa mobile app, which is your app's rating on the store where it's published. I'msure every one of you who has an app on a storefront has paid much attention tothe app's rating at some point!Firebase provides some tools you can use to boost your app's quality, and ifyou're not already using them, maybe a fresh look at those tools would behelpful this year?Firebase Crash ReportingThe easiest tool to get started with is Firebase Crash Reporting. It takeslittle to no lines of code to integrate it into your iOS and Android app, andonce you do, the Firebase console will start showing crashes that are happeningto your users. This gives you a "hit list" of problems to fix.One thing I find ironic about being involved with the Crash Reporting team ishow we view the influx of total crashes received as we monitor our system. Likeany good developer product, we strive to grow adoption, which means we celebrategraphs that go "up and to the right". So, in a strange sense, we like to seemore crashes, because that means more developers are using our stuff! But forall of you developers out there, more crashes is obviously a *bad* thing, andyou want to make those numbers go down! So, please, don't be like us - makeyour crash report graphs go down and to the right in 2017!Firebase Test Lab for AndroidEven better than fixing problems for your users is fixing those problemsbefore they even reach your users. For your Android apps, you can useFirebase Test Lab tohelp ensure that your apps work great for your users among a growing variety ofactual devices that we manage. Traditionally, it's been kind of a pain toacquire and manage a good selection of devices for testing. However, with TestLab, you simply upload your APK and tests, and it will install and run them toour devices. After the tests complete, we'll provide all the screenshots,videos, and logs of everything that happened for you to examine in the Firebaseconsole.With Firebase Test Lab for Android now available with generous daily quotas atno charge for projects on the free Spark tier, 2017 is a great time to getstarted with that. And, if you haven't set up your Android app builds in acontinuous integration environment, you could set that up, then configure it torun your testsautomatically on Test Lab.If you're the kind of person who likes writing tests for your code (which is,admittedly, not very many of us!), it's natural to get those tests running onTest Lab. But, for those of us who aren't maintaining a test suite with ourcodebase, we can still use Test Lab's automated Robo test toget automated test coverage right away, with no additional lines of coderequired. That's not quite that same as having a comprehensive suite of tests,so maybe 2017 would be a good time to learn more about architecting "testable"apps, and how those practices can raise the bar of quality for your app. I'mplanning on writing more about this later this year, so stay tuned to the Firebase Blog for more!Firebase Remote ConfigAt its core, FirebaseRemote Config is a tool that lets you configure your app using parametersthat you set up in the Firebase console. It can be used to help manage thequality of your app, and there's a couple neat tricks you can do with it. Maybethis new year brings new opportunities to give them a try!First of all, you can use Remote Config to carefully roll out a new feature toyour users. It works like this:Code your new feature and restrict its access to the user by a Remote Configboolean parameter. If the value is 'false', your users don't see the feature.Make 'false' the default value in the app.Configure that parameter in the Firebase console to also be initially'false' for everyone.Publish your app to the store.When it's time to start rolling out the new feature to a small segment ofusers, configure the parameter to be 'true' for, say, five percent of your userbase.Stay alert for new crashes in Firebase Crash Reporting, as well as feedbackfrom your users.If there is a problem with the new feature, immediately roll back the newfeature by setting the parameter to 'false' in the console for everyone.Or, if things are looking good, increase the percentage over time until youreach 100% of your users.This is much safer than publishing your new feature to everyone with a singleapp update, because now you have the option to immediately disable a seriousproblem, and without having to build and publish a whole new version of yourapp. And, if you can act quickly, most of your users will never encounter theproblem to begin with. This works well with the email alerts you get fromFirebase Crash Reporting when a new crash is observed.Another feature of Remote Config is the ability to experiment with some aspectof your app in order to find out what works better for the users of your app,then measure the results in Firebase Analytics. I don't know about you, but I'mtypically pretty bad at guessing what people actually prefer, and sometimes I'msurprised at how people might actually *use* an app! Don't guess - instead, doan experiment and know /for certain/ what delights your users more! It standsto reason that apps finely tuned like this can get better ratings and make moremoney.Firebase Realtime DatabaseIt makes sense that if you make it easier for you user to perform tasks in yourapp, they will enjoy using it more, and they will come back more frequently.One thing I have always disliked is having to check for new information byrefreshing, or navigating back and forward again. Apps that are always freshand up to date, without requiring me to take action, are more pleasant to use.You can achieve this for your app by making effective use of Firebase Realtime Databaseto deliver relevant data directly to your users at the moment it changes in thedatabase. Realtime Database is reactive by nature, because the clientAPI is designed for you set up listeners at data locations that get triggered inthe event of a change. This is far more convenient than having to poll an APIendpoint repeatedly to check for changes, and also much more respectful of theuser's mobile data and battery life. Users associate this feeling of delightwith apps of high quality.What does 2017 have in store for your app?I hope you'll join me this year in putting more effort into making our userseven more delighted. If you're with me, feel free to tweet me at @CodingDoug and tell me what you're upto in 2017! Originally posted on the Firebase blog by Doug Stevenson /Developer AdvocateI've got to come clean with everyone: I'm making no new year's resolutions for2017. Nor did I make any in 2016. In fact, I don't think I've ever made one!It's not so much that I take a dim view of new year's resolutions. I simplysuspect that I would likely break them by the end of the week, and feel badabout it!One thing I've found helpful in the past is to see the new year as a pivotingpoint to try new things, and also improve the work I'm already doing. For me(and I hope for you too!), 2017 will be a fresh year for boosting app quality.The phrase "app quality" can take a bunch of different meanings, based on whatyou value in the software you create and use. As a developer, traditionally,this means fixing bugs that cause problems for your users. It could also be areflection of the amount of delight your users take in your app. All of thisgets wrapped up into the one primary metric that we have to gauge the quality ofa mobile app, which is your app's rating on the store where it's published. I'msure every one of you who has an app on a storefront has paid much attention tothe app's rating at some point!Firebase provides some tools you can use to boost your app's quality, and ifyou're not already using them, maybe a fresh look at those tools would behelpful this year?Firebase Crash ReportingThe easiest tool to get started with is Firebase Crash Reporting. It takeslittle to no lines of code to integrate it into your iOS and Android app, andonce you do, the Firebase console will start showing crashes that are happeningto your users. This gives you a "hit list" of problems to fix.One thing I find ironic about being involved with the Crash Reporting team ishow we view the influx of total crashes received as we monitor our system. Likeany good developer product, we strive to grow adoption, which means we celebrategraphs that go "up and to the right". So, in a strange sense, we like to seemore crashes, because that means more developers are using our stuff! But forall of you developers out there, more crashes is obviously a *bad* thing, andyou want to make those numbers go down! So, please, don't be like us - makeyour crash report graphs go down and to the right in 2017!Firebase Test Lab for AndroidEven better than fixing problems for your users is fixing those problemsbefore they even reach your users. For your Android apps, you can useFirebase Test Lab tohelp ensure that your apps work great for your users among a growing variety ofactual devices that we manage. Traditionally, it's been kind of a pain toacquire and manage a good selection of devices for testing. However, with TestLab, you simply upload your APK and tests, and it will install and run them toour devices. After the tests complete, we'll provide all the screenshots,videos, and logs of everything that happened for you to examine in the Firebaseconsole.With Firebase Test Lab for Android now available with generous daily quotas atno charge for projects on the free Spark tier, 2017 is a great time to getstarted with that. And, if you haven't set up your Android app builds in acontinuous integration environment, you could set that up, then configure it torun your testsautomatically on Test Lab.If you're the kind of person who likes writing tests for your code (which is,admittedly, not very many of us!), it's natural to get those tests running onTest Lab. But, for those of us who aren't maintaining a test suite with ourcodebase, we can still use Test Lab's automated Robo test toget automated test coverage right away, with no additional lines of coderequired. That's not quite that same as having a comprehensive suite of tests,so maybe 2017 would be a good time to learn more about architecting "testable"apps, and how those practices can raise the bar of quality for your app. I'mplanning on writing more about this later this year, so stay tuned to the Firebase Blog for more!Firebase Remote ConfigAt its core, FirebaseRemote Config is a tool that lets you configure your app using parametersthat you set up in the Firebase console. It can be used to help manage thequality of your app, and there's a couple neat tricks you can do with it. Maybethis new year brings new opportunities to give them a try!First of all, you can use Remote Config to carefully roll out a new feature toyour users. It works like this:Code your new feature and restrict its access to the user by a Remote Configboolean parameter. If the value is 'false', your users don't see the feature.Make 'false' the default value in the app.Configure that parameter in the Firebase console to also be initially'false' for everyone.Publish your app to the store.When it's time to start rolling out the new feature to a small segment ofusers, configure the parameter to be 'true' for, say, five percent of your userbase.Stay alert for new crashes in Firebase Crash Reporting, as well as feedbackfrom your users.If there is a problem with the new feature, immediately roll back the newfeature by setting the parameter to 'false' in the console for everyone.Or, if things are looking good, increase the percentage over time until youreach 100% of your users.This is much safer than publishing your new feature to everyone with a singleapp update, because now you have the option to immediately disable a seriousproblem, and without having to build and publish a whole new version of yourapp. And, if you can act quickly, most of your users will never encounter theproblem to begin with. This works well with the email alerts you get fromFirebase Crash Reporting when a new crash is observed.Another feature of Remote Config is the ability to experiment with some aspectof your app in order to find out what works better for the users of your app,then measure the results in Firebase Analytics. I don't know about you, but I'mtypically pretty bad at guessing what people actually prefer, and sometimes I'msurprised at how people might actually *use* an app! Don't guess - instead, doan experiment and know /for certain/ what delights your users more! It standsto reason that apps finely tuned like this can get better ratings and make moremoney.Firebase Realtime DatabaseIt makes sense that if you make it easier for you user to perform tasks in yourapp, they will enjoy using it more, and they will come back more frequently.One thing I have always disliked is having to check for new information byrefreshing, or navigating back and forward again. Apps that are always freshand up to date, without requiring me to take action, are more pleasant to use.You can achieve this for your app by making effective use of Firebase Realtime Databaseto deliver relevant data directly to your users at the moment it changes in thedatabase. Realtime Database is reactive by nature, because the clientAPI is designed for you set up listeners at data locations that get triggered inthe event of a change. This is far more convenient than having to poll an APIendpoint repeatedly to check for changes, and also much more respectful of theuser's mobile data and battery life. Users associate this feeling of delightwith apps of high quality.What does 2017 have in store for your app?I hope you'll join me this year in putting more effort into making our userseven more delighted. If you're with me, feel free to tweet me at @CodingDoug and tell me what you're upto in 2017! Originally posted on Firebase blogPosted by Fabian Schlup, Software EngineerIn September, we launched anew way to search for content in apps on Android phones. With this update,users were able to find personal content like messages, notes, music and moreacross apps like OpenTable, Ticketmaster, Evernote, Glide, Asana, Gmail, andGoogle Keep from a single search box. Today, we're inviting all Androiddevelopers to enable this functionality for their apps.Starting with version 10.0, the Firebase App Indexing API on Android lets appsadd their content to Google's on-device index in the background, and update itin real-time as users make changes in the app. We've designed the API with threeprinciples in mind:
making it simple to integratekeeping all personal data on the devicegiving the developer full control over what goes into the index andwhenThere are several predefined data types that make it easy to represent commonthings such as messages, notes, and songs, or you can add custom types torepresent additional items. Plus, logging user actions like a user listening toa specific song provides an important signal to help rank user content acrossthe Google app.
Indexable note = Indexables.noteDigitalDocumentBuilder() .setUrl("http://example.net/users/42/lists/23") .setName("Shopping list") .setText("steak, pasta, wine") .setImage("http://example.net/images/shopping.jpg") .build();FirebaseAppIndex.getInstance().update(note);Example of adding or updating a user's shopping list in the on-device index.Integrating with Firebase App Indexing helps increase user engagement with yourapp, as users can get back to their personal content in an instant with GoogleSearch. Because that data is indexed directly on the device, this even workswhen offline.
To get started, check out our implementation guideand codelab.
Originally posted on Firebase blogPosted by Fabian Schlup, Software EngineerIn September, we launched anew way to search for content in apps on Android phones. With this update,users were able to find personal content like messages, notes, music and moreacross apps like OpenTable, Ticketmaster, Evernote, Glide, Asana, Gmail, andGoogle Keep from a single search box. Today, we're inviting all Androiddevelopers to enable this functionality for their apps.
Starting with version 10.0, the Firebase App Indexing API on Android lets appsadd their content to Google's on-device index in the background, and update itin real-time as users make changes in the app. We've designed the API with threeprinciples in mind:
making it simple to integratekeeping all personal data on the devicegiving the developer full control over what goes into the index andwhenThere are several predefined data types that make it easy to represent commonthings such as messages, notes, and songs, or you can add custom types torepresent additional items. Plus, logging user actions like a user listening toa specific song provides an important signal to help rank user content acrossthe Google app.
Indexable note = Indexables.noteDigitalDocumentBuilder() .setUrl("http://example.net/users/42/lists/23") .setName("Shopping list") .setText("steak, pasta, wine") .setImage("http://example.net/images/shopping.jpg") .build();FirebaseAppIndex.getInstance().update(note);Example of adding or updating a user's shopping list in the on-device index.Integrating with Firebase App Indexing helps increase user engagement with yourapp, as users can get back to their personal content in an instant with GoogleSearch. Because that data is indexed directly on the device, this even workswhen offline.
To get started, check out our implementation guideand codelab.
Originally posted on Google Cloud Platform BlogPosted by Sara Robinson, Developer Advocate At Google I/O this May, Firebase announced a new suite of products to help developers build mobile apps. Firebase Analytics, a part of the new Firebase platform, is a tool that automatically captures data on how people are using your iOS and Android app, and lets you define your own custom app events. When the data's captured, it’s available through a dashboard in the Firebase console. One of my favorite cloud integrations with the new Firebase platform is the ability to export raw data from Firebase Analytics to Google BigQuery for custom analysis. This custom analysis is particularly useful for aggregating data from the iOS and Android versions of your app, and accessing custom parameters passed in your Firebase Analytics events. Let’s take a look at what you can do with this powerful combination.How does the BigQuery export work?After linking your Firebase project to BigQuery, Firebase automatically exports a new table to an associated BigQuery dataset every day. If you have both iOS and Android versions of your app, Firebase exports the data for each platform into a separate dataset. Each table contains the user activity and demographic data automatically captured by Firebase Analytics, along with any custom events you’re capturing in your app. Thus, after exporting one week’s worth of data for a cross-platform app, your BigQuery project would contain two datasets, each with seven tables:Diving into the dataThe schema for every Firebase Analytics export table is the same, and we’ve created two datasets (one for iOS and one for Android) with sample user data for you to run the example queries below. The datasets are for a sample cross-platform iOS and Android gaming app. Each dataset contains seven tables — one week’s worth of analytics data.The following query will return some basic user demographic and device data for one day of usage on the iOS version of our app:SELECT user_dim.app_info.app_instance_id, user_dim.device_info.device_category, user_dim.device_info.user_default_language, user_dim.device_info.platform_version, user_dim.device_info.device_model, user_dim.geo_info.country, user_dim.geo_info.city, user_dim.app_info.app_version, user_dim.app_info.app_store, user_dim.app_info.app_platformFROM [firebase-analytics-sample-data:ios_dataset.app_events_20160601]Since the schema for every BigQuery table exported from Firebase Analytics is the same, you can run any of the queries in this post on your own Firebase Analytics data by replacing the dataset and table names with the ones for your project.The schema has user data and event data. All user data is automatically captured by Firebase Analytics, and the event data is populated by any custom events you add to your app. Let’s take a look at the specific records for both user and event data.User dataThe user records contain a unique app instance ID for each user (user_dim.app_info.app_instance_id in the schema), along with data on their location, device and app version. In the Firebase console, there are separate dashboards for the app’s Android and iOS analytics. With BigQuery, we can run a query to find out where our users are accessing our app around the world across both platforms. The query below makes use of BigQuery’s union feature, which lets you use a comma as a UNION ALL operator. Since a row is created in our table for each bundle of events a user triggers, we use EXACT_COUNT_DISTINCT to make sure each user is only counted once:SELECT user_dim.geo_info.country as country, EXACT_COUNT_DISTINCT( user_dim.app_info.app_instance_id ) as usersFROM [firebase-analytics-sample-data:android_dataset.app_events_20160601], [firebase-analytics-sample-data:ios_dataset.app_events_20160601]GROUP BY countryORDER BY users DESCUser data also includes a user_properties record, which includes attributes you define to describe different segments of your user base, like language preference or geographic location. Firebase Analytics captures some user properties by default, and you can create up to 25 of your own. A user’s language preference is one of the default user properties. To see which languages our users speak across platforms, we can run the following query:SELECT user_dim.user_properties.value.value.string_value as language_code, EXACT_COUNT_DISTINCT(user_dim.app_info.app_instance_id) as users,FROM [firebase-analytics-sample-data:android_dataset.app_events_20160601], [firebase-analytics-sample-data:ios_dataset.app_events_20160601]WHERE user_dim.user_properties.key = "language"GROUP BY language_codeORDER BY users DESCEvent dataFirebase Analytics makes it easy to log custom events such as tracking item purchases or button clicks in your app. When you log an event, you pass an event name and up to 25 parameters to Firebase Analytics and it automatically tracks the number of times the event has occurred. The following query shows the number of times each event in our app has occurred on Android for a particular day:SELECT event_dim.name, COUNT(event_dim.name) as event_count FROM [firebase-analytics-sample-data:android_dataset.app_events_20160601]GROUP BY event_dim.nameORDER BY event_count DESCIf you have another type of value associated with an event (like item prices), you can pass it through as an optional value parameter and filter by this value in BigQuery. In our sample tables, there is a spend_virtual_currency event. We can write the following query to see how much virtual currency players spend at one time:SELECT event_dim.params.value.int_value as virtual_currency_amt, COUNT(*) as num_times_spentFROM [firebase-analytics-sample-data:android_dataset.app_events_20160601]WHERE event_dim.name = "spend_virtual_currency"AND event_dim.params.key = "value"GROUP BY 1ORDER BY num_times_spent DESCBuilding complex queriesWhat if we want to run a query across both platforms of our app over a specific date range? Since Firebase Analytics data is split into tables for each day, we can do this using BigQuery’s TABLE_DATE_RANGE function. This query returns a count of the cities users are coming from over a one week period:SELECT user_dim.geo_info.city, COUNT(user_dim.geo_info.city) as city_count FROMTABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP()),TABLE_DATE_RANGE([firebase-analytics-sample-data:ios_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP())GROUP BY user_dim.geo_info.cityORDER BY city_count DESCWe can also write a query to compare mobile vs. tablet usage across platforms over a one week period:SELECT user_dim.app_info.app_platform as appPlatform, user_dim.device_info.device_category as deviceType, COUNT(user_dim.device_info.device_category) AS device_type_count FROMTABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP()),TABLE_DATE_RANGE([firebase-analytics-sample-data:ios_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP())GROUP BY 1,2ORDER BY device_type_count DESCGetting a bit more complex, we can write a query to generate a report of unique user events across platforms over the past two weeks. Here we use PARTITION BY and EXACT_COUNT_DISTINCT to de-dupe our event report by users, making use of user properties and the user_dim.user_id field:SELECT STRFTIME_UTC_USEC(eventTime,"%Y%m%d") as date, appPlatform, eventName, COUNT(*) totalEvents, EXACT_COUNT_DISTINCT(IF(userId IS NOT NULL, userId, fullVisitorid)) as usersFROM ( SELECT fullVisitorid, openTimestamp, FORMAT_UTC_USEC(openTimestamp) firstOpenedTime, userIdSet, MAX(userIdSet) OVER(PARTITION BY fullVisitorid) userId, appPlatform, eventTimestamp, FORMAT_UTC_USEC(eventTimestamp) as eventTime, eventName FROM FLATTEN( ( SELECT user_dim.app_info.app_instance_id as fullVisitorid, user_dim.first_open_timestamp_micros as openTimestamp, user_dim.user_properties.value.value.string_value, IF(user_dim.user_properties.key = 'user_id',user_dim.user_properties.value.value.string_value, null) as userIdSet, user_dim.app_info.app_platform as appPlatform, event_dim.timestamp_micros as eventTimestamp, event_dim.name AS eventName, event_dim.params.key, event_dim.params.value.string_value FROM TABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP()),TABLE_DATE_RANGE([firebase-analytics-sample-data:ios_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP())), user_dim.user_properties))GROUP BY date, appPlatform, eventNameIf you have data in Google Analytics for the same app, it’s also possible to export your Google Analytics data to BigQuery and do a JOIN with your Firebase Analytics BigQuery tables.Visualizing analytics dataNow that we’ve gathered new insights from our mobile app data using the raw BigQuery export, let’s visualize it using Google Data Studio. Data Studio can read directly from BigQuery tables, and we can even pass it a custom query like the ones above. Data Studio can generate many different types of charts depending on the structure of your data, including time series, bar charts, pie charts and geo maps. For our first visualization, let’s create a bar chart to compare the device types from which users are accessing our app on each platform. We can paste the mobile vs. tablet query above directly into Data Studio to generate the following chart:From this chart, it’s easy to see that iOS users are much more likely to access our game from a tablet. Getting a bit more complex, we can use the above event report query to create a bar chart comparing the number of events across platforms:Check out this post for detailed instructions on connecting your BigQuery project to Data Studio.What’s next?If you’re new to Firebase, get started here. If you’re already building a mobile app on Firebase, check out this detailed guide on linking your Firebase project to BigQuery. For questions, take a look at the BigQuery reference docs and use the firebase-analytics and google-bigquery tags on Stack Overflow. And let me know if there are any particular topics you’d like me to cover in an upcoming post. Originally posted on Google Cloud Platform BlogPosted by Sara Robinson, Developer Advocate At Google I/O this May, Firebase announced a new suite of products to help developers build mobile apps. Firebase Analytics, a part of the new Firebase platform, is a tool that automatically captures data on how people are using your iOS and Android app, and lets you define your own custom app events. When the data's captured, it’s available through a dashboard in the Firebase console. One of my favorite cloud integrations with the new Firebase platform is the ability to export raw data from Firebase Analytics to Google BigQuery for custom analysis. This custom analysis is particularly useful for aggregating data from the iOS and Android versions of your app, and accessing custom parameters passed in your Firebase Analytics events. Let’s take a look at what you can do with this powerful combination.How does the BigQuery export work?After linking your Firebase project to BigQuery, Firebase automatically exports a new table to an associated BigQuery dataset every day. If you have both iOS and Android versions of your app, Firebase exports the data for each platform into a separate dataset. Each table contains the user activity and demographic data automatically captured by Firebase Analytics, along with any custom events you’re capturing in your app. Thus, after exporting one week’s worth of data for a cross-platform app, your BigQuery project would contain two datasets, each with seven tables:Diving into the dataThe schema for every Firebase Analytics export table is the same, and we’ve created two datasets (one for iOS and one for Android) with sample user data for you to run the example queries below. The datasets are for a sample cross-platform iOS and Android gaming app. Each dataset contains seven tables — one week’s worth of analytics data.The following query will return some basic user demographic and device data for one day of usage on the iOS version of our app:SELECT user_dim.app_info.app_instance_id, user_dim.device_info.device_category, user_dim.device_info.user_default_language, user_dim.device_info.platform_version, user_dim.device_info.device_model, user_dim.geo_info.country, user_dim.geo_info.city, user_dim.app_info.app_version, user_dim.app_info.app_store, user_dim.app_info.app_platformFROM [firebase-analytics-sample-data:ios_dataset.app_events_20160601]Since the schema for every BigQuery table exported from Firebase Analytics is the same, you can run any of the queries in this post on your own Firebase Analytics data by replacing the dataset and table names with the ones for your project.The schema has user data and event data. All user data is automatically captured by Firebase Analytics, and the event data is populated by any custom events you add to your app. Let’s take a look at the specific records for both user and event data.User dataThe user records contain a unique app instance ID for each user (user_dim.app_info.app_instance_id in the schema), along with data on their location, device and app version. In the Firebase console, there are separate dashboards for the app’s Android and iOS analytics. With BigQuery, we can run a query to find out where our users are accessing our app around the world across both platforms. The query below makes use of BigQuery’s union feature, which lets you use a comma as a UNION ALL operator. Since a row is created in our table for each bundle of events a user triggers, we use EXACT_COUNT_DISTINCT to make sure each user is only counted once:SELECT user_dim.geo_info.country as country, EXACT_COUNT_DISTINCT( user_dim.app_info.app_instance_id ) as usersFROM [firebase-analytics-sample-data:android_dataset.app_events_20160601], [firebase-analytics-sample-data:ios_dataset.app_events_20160601]GROUP BY countryORDER BY users DESCUser data also includes a user_properties record, which includes attributes you define to describe different segments of your user base, like language preference or geographic location. Firebase Analytics captures some user properties by default, and you can create up to 25 of your own. A user’s language preference is one of the default user properties. To see which languages our users speak across platforms, we can run the following query:SELECT user_dim.user_properties.value.value.string_value as language_code, EXACT_COUNT_DISTINCT(user_dim.app_info.app_instance_id) as users,FROM [firebase-analytics-sample-data:android_dataset.app_events_20160601], [firebase-analytics-sample-data:ios_dataset.app_events_20160601]WHERE user_dim.user_properties.key = "language"GROUP BY language_codeORDER BY users DESCEvent dataFirebase Analytics makes it easy to log custom events such as tracking item purchases or button clicks in your app. When you log an event, you pass an event name and up to 25 parameters to Firebase Analytics and it automatically tracks the number of times the event has occurred. The following query shows the number of times each event in our app has occurred on Android for a particular day:SELECT event_dim.name, COUNT(event_dim.name) as event_count FROM [firebase-analytics-sample-data:android_dataset.app_events_20160601]GROUP BY event_dim.nameORDER BY event_count DESCIf you have another type of value associated with an event (like item prices), you can pass it through as an optional value parameter and filter by this value in BigQuery. In our sample tables, there is a spend_virtual_currency event. We can write the following query to see how much virtual currency players spend at one time:SELECT event_dim.params.value.int_value as virtual_currency_amt, COUNT(*) as num_times_spentFROM [firebase-analytics-sample-data:android_dataset.app_events_20160601]WHERE event_dim.name = "spend_virtual_currency"AND event_dim.params.key = "value"GROUP BY 1ORDER BY num_times_spent DESCBuilding complex queriesWhat if we want to run a query across both platforms of our app over a specific date range? Since Firebase Analytics data is split into tables for each day, we can do this using BigQuery’s TABLE_DATE_RANGE function. This query returns a count of the cities users are coming from over a one week period:SELECT user_dim.geo_info.city, COUNT(user_dim.geo_info.city) as city_count FROMTABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP()),TABLE_DATE_RANGE([firebase-analytics-sample-data:ios_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP())GROUP BY user_dim.geo_info.cityORDER BY city_count DESCWe can also write a query to compare mobile vs. tablet usage across platforms over a one week period:SELECT user_dim.app_info.app_platform as appPlatform, user_dim.device_info.device_category as deviceType, COUNT(user_dim.device_info.device_category) AS device_type_count FROMTABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP()),TABLE_DATE_RANGE([firebase-analytics-sample-data:ios_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP())GROUP BY 1,2ORDER BY device_type_count DESCGetting a bit more complex, we can write a query to generate a report of unique user events across platforms over the past two weeks. Here we use PARTITION BY and EXACT_COUNT_DISTINCT to de-dupe our event report by users, making use of user properties and the user_dim.user_id field:SELECT STRFTIME_UTC_USEC(eventTime,"%Y%m%d") as date, appPlatform, eventName, COUNT(*) totalEvents, EXACT_COUNT_DISTINCT(IF(userId IS NOT NULL, userId, fullVisitorid)) as usersFROM ( SELECT fullVisitorid, openTimestamp, FORMAT_UTC_USEC(openTimestamp) firstOpenedTime, userIdSet, MAX(userIdSet) OVER(PARTITION BY fullVisitorid) userId, appPlatform, eventTimestamp, FORMAT_UTC_USEC(eventTimestamp) as eventTime, eventName FROM FLATTEN( ( SELECT user_dim.app_info.app_instance_id as fullVisitorid, user_dim.first_open_timestamp_micros as openTimestamp, user_dim.user_properties.value.value.string_value, IF(user_dim.user_properties.key = 'user_id',user_dim.user_properties.value.value.string_value, null) as userIdSet, user_dim.app_info.app_platform as appPlatform, event_dim.timestamp_micros as eventTimestamp, event_dim.name AS eventName, event_dim.params.key, event_dim.params.value.string_value FROM TABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP()),TABLE_DATE_RANGE([firebase-analytics-sample-data:ios_dataset.app_events_], DATE_ADD('2016-06-07', -7, 'DAY'), CURRENT_TIMESTAMP())), user_dim.user_properties))GROUP BY date, appPlatform, eventNameIf you have data in Google Analytics for the same app, it’s also possible to export your Google Analytics data to BigQuery and do a JOIN with your Firebase Analytics BigQuery tables.Visualizing analytics dataNow that we’ve gathered new insights from our mobile app data using the raw BigQuery export, let’s visualize it using Google Data Studio. Data Studio can read directly from BigQuery tables, and we can even pass it a custom query like the ones above. Data Studio can generate many different types of charts depending on the structure of your data, including time series, bar charts, pie charts and geo maps. For our first visualization, let’s create a bar chart to compare the device types from which users are accessing our app on each platform. We can paste the mobile vs. tablet query above directly into Data Studio to generate the following chart:From this chart, it’s easy to see that iOS users are much more likely to access our game from a tablet. Getting a bit more complex, we can use the above event report query to create a bar chart comparing the number of events across platforms:Check out this post for detailed instructions on connecting your BigQuery project to Data Studio.What’s next?If you’re new to Firebase, get started here. If you’re already building a mobile app on Firebase, check out this detailed guide on linking your Firebase project to BigQuery. For questions, take a look at the BigQuery reference docs and use the firebase-analytics and google-bigquery tags on Stack Overflow. And let me know if there are any particular topics you’d like me to cover in an upcoming post. Originally posted on Firebase blogPosted by Laurence Moroney, Developer Advocate and Alfonso Gómez Jordana, Associate Product ManagerFor most developers, building an authentication system for your app can feel a lot like paying taxes. They are both relatively hard to understand tasks that you have no choice but doing, and could have big consequences if you get them wrong. No one ever started a company to pay taxes and no one ever built an app just so they could create a great login system. They just seem to be inescapable costs.But now, you can at least free yourself from the auth tax. With Firebase Authentication, you can outsource your entire authentication system to Firebase so that you can concentrate on building great features for your app. Firebase Authentication makes it easier to get your users signed-in without having to understand the complexities behind implementing your own authentication system. It offers a straightforward getting started experience, optional UX components designed to minimize user friction, and is built on open standards and backed by Google infrastructure.Implementing Firebase Authentication is relatively fast and easy. From the Firebase console, just choose from the popular login methods that you want to offer (like Facebook, Google, Twitter and email/password) and then add the Firebase SDK to your app. Your app will then be able to connect securely with the real time database, Firebase storage or to your own custom back end. If you have an auth system already, you can use Firebase Authentication as a bridge to other Firebase features.Firebase Authentication also includes an open source UI library that streamlines building the many auth flows required to give your users a good experience. Password resets, account linking, and login hints that reduce the cognitive load around multiple login choices - they are all pre-built with Firebase Authentication UI. These flows are based on years of UX research optimizing the sign-in and sign-up journeys on Google, Youtube and Android. It includes Smart Lock for Passwords on Android, which has led to significant improvements in sign-in conversion for many apps. And because Firebase UI is open source, the interface is fully customizable so it feels like a completely natural part of your app. If you prefer, you are also free to create your own UI from scratch using our client APIs.And Firebase Authentication is built around openness and security. It leverages OAuth 2.0 and OpenID Connect, industry standards designed for security, interoperability, and portability. Members of the Firebase Authentication team helped design these protocols and used their expertise to weave in latest security practices like ID tokens, revocable sessions, and native app anti-spoofing measures to make your app easier to use and avoid many common security problems. And code is independently reviewed by the Google Security team and the service is protected in Google’s infrastructure.Fabulous use Firebase Auth to quickly implement sign-inFabulous uses Firebase Authentication to power their login system. Fabulous is a research-based app incubated in Duke University’s Center for Advanced Hindsight. Its goal is to help users to embark on a journey to reset poor habits, replacing them with healthy rituals, with the ultimate goal of improving health and well-being.
The developers of Fabulous wanted to implement an onboarding flow that was easy to use, required minimal updates, and reduced friction with the end user. They wanted an anonymous option so that users could experiment with it before signing up. They also wanted to support multiple login types, and have an option where the user sign-in flow was consistent with the look and feel of the app.
“I was able to implement auth in a single afternoon. I remember that I spent weeks before creating my own solution that I had to update each time the providers changed their API” - Amine Laadhari, Fabulous CTO.
Malang Studio cut time-to market by months using Firebase AuthChu-Day is an application (available on Android and iOS) that helps couples to never forget the dates that matter most to them. It was created by the Korean firm Malang Studio, that develops character-centric, gamified lifestyle applications.
Generally, countdown and anniversary apps do not require users to sign-in, but Malang Studio wanted to make Chu-day special, and differentiate it from others by offering the ability to connect couples so they could jointly countdown to a special anniversary date. This required a sign-in feature, and in order to prevent users from dropping out, Chu-day needed to make the sign-in process seamless.
Malang Studio was able to integrate an onboarding flow in for their apps, using Facebook and Google Sign-in, in one day, without having to worry about server deployment or databases. In addition, Malang Studio has also been taking advantage of the Firebase User Management Console, which helped them develop and test their sign-in implementation as well as manage their users:
“Firebase Authentication required minimum configuration so implementing social account signup was easy and fast. User management feature provided in the console was excellent and we could easily implement our user auth system.” - Marc Yeongho Kim, CEO / Founder from Malang Studio
For more about Firebase Authentication, visit the developers site and watch our I/O 2016 session, “Best practices for a great sign-in experience.”
Originally posted on Firebase blog
Posted by Laurence Moroney, Developer Advocate and Alfonso Gómez Jordana, Associate Product Manager
For most developers, building an authentication system for your app can feel a lot like paying taxes. They are both relatively hard to understand tasks that you have no choice but doing, and could have big consequences if you get them wrong. No one ever started a company to pay taxes and no one ever built an app just so they could create a great login system. They just seem to be inescapable costs.
But now, you can at least free yourself from the auth tax. With Firebase Authentication, you can outsource your entire authentication system to Firebase so that you can concentrate on building great features for your app. Firebase Authentication makes it easier to get your users signed-in without having to understand the complexities behind implementing your own authentication system. It offers a straightforward getting started experience, optional UX components designed to minimize user friction, and is built on open standards and backed by Google infrastructure.
Implementing Firebase Authentication is relatively fast and easy. From the Firebase console, just choose from the popular login methods that you want to offer (like Facebook, Google, Twitter and email/password) and then add the Firebase SDK to your app. Your app will then be able to connect securely with the real time database, Firebase storage or to your own custom back end. If you have an auth system already, you can use Firebase Authentication as a bridge to other Firebase features.
Firebase Authentication also includes an open source UI library that streamlines building the many auth flows required to give your users a good experience. Password resets, account linking, and login hints that reduce the cognitive load around multiple login choices - they are all pre-built with Firebase Authentication UI. These flows are based on years of UX research optimizing the sign-in and sign-up journeys on Google, Youtube and Android. It includes Smart Lock for Passwords on Android, which has led to significant improvements in sign-in conversion for many apps. And because Firebase UI is open source, the interface is fully customizable so it feels like a completely natural part of your app. If you prefer, you are also free to create your own UI from scratch using our client APIs.
And Firebase Authentication is built around openness and security. It leverages OAuth 2.0 and OpenID Connect, industry standards designed for security, interoperability, and portability. Members of the Firebase Authentication team helped design these protocols and used their expertise to weave in latest security practices like ID tokens, revocable sessions, and native app anti-spoofing measures to make your app easier to use and avoid many common security problems. And code is independently reviewed by the Google Security team and the service is protected in Google’s infrastructure.
Fabulous use Firebase Auth to quickly implement sign-inFabulous uses Firebase Authentication to power their login system. Fabulous is a research-based app incubated in Duke University’s Center for Advanced Hindsight. Its goal is to help users to embark on a journey to reset poor habits, replacing them with healthy rituals, with the ultimate goal of improving health and well-being.
The developers of Fabulous wanted to implement an onboarding flow that was easy to use, required minimal updates, and reduced friction with the end user. They wanted an anonymous option so that users could experiment with it before signing up. They also wanted to support multiple login types, and have an option where the user sign-in flow was consistent with the look and feel of the app.
“I was able to implement auth in a single afternoon. I remember that I spent weeks before creating my own solution that I had to update each time the providers changed their API” - Amine Laadhari, Fabulous CTO.
Malang Studio cut time-to market by months using Firebase AuthChu-Day is an application (available on Android and iOS) that helps couples to never forget the dates that matter most to them. It was created by the Korean firm Malang Studio, that develops character-centric, gamified lifestyle applications.
Generally, countdown and anniversary apps do not require users to sign-in, but Malang Studio wanted to make Chu-day special, and differentiate it from others by offering the ability to connect couples so they could jointly countdown to a special anniversary date. This required a sign-in feature, and in order to prevent users from dropping out, Chu-day needed to make the sign-in process seamless.
Malang Studio was able to integrate an onboarding flow in for their apps, using Facebook and Google Sign-in, in one day, without having to worry about server deployment or databases. In addition, Malang Studio has also been taking advantage of the Firebase User Management Console, which helped them develop and test their sign-in implementation as well as manage their users:
“Firebase Authentication required minimum configuration so implementing social account signup was easy and fast. User management feature provided in the console was excellent and we could easily implement our user auth system.” - Marc Yeongho Kim, CEO / Founder from Malang Studio
For more about Firebase Authentication, visit the developers site and watch our I/O 2016 session, “Best practices for a great sign-in experience.”