[MUSIC PLAYING]
SUMIT CHANDEL: Hello, everyone, and welcome to another brand
new episode of "#AskFirebase."
I'm Sumit Chandel, and I used to love eating donuts,
until I had to bake them for two summers in a row
and then never touched one again.
This is Ryan Vernon, our guest from the Firebase team.
RYAN VERNON: Thanks for having me.
It's good to see you again.
SUMIT CHANDEL: Good to see you again, too, Ryan.
Thanks for coming.
Fun fact about Ryan, he likes to perform live electronic music
performances.
Isn't that right?
RYAN VERNON: Yeah, I love the UI of a lot of instruments
out there.
And I also like to write stuff.
And during our Firebase Hack Week,
I teamed up with one of the engineers, Julia Tufts,
and we wrote a song together and then used
Unity to create some awesome visuals that go along with it.
And maybe we can bring that up, show it to everyone.
SUMIT CHANDEL: Nice.
All right.
[MUSIC PLAYING]
Nice.
I was digging that beat.
I got to listen to that later.
RYAN VERNON: I'm not a good singer.
SUMIT CHANDEL: Now, Ryan, you are
a UX and interactive designer.
Is that correct?
RYAN VERNON: Yes.
My background and my training in school in that
is in industrial design and engineering.
So I had a lot of background in making physical things and how
people use them and then the problems that they have there.
I've tried to pivot to UX.
And there's a ton of overlap.
And right now, I am the designer for performance monitoring,
as well as Remote Config and some new stuff.
SUMIT CHANDEL: Well, that's really lucky for us,
because, actually, a lot of our questions,
they are in that area.
So thanks for being here.
It's very opportune.
Let's get to some questions.
RYAN VERNON: David asks--
he's using remote config, and he has
a condition based on an audience created by analytics.
"If some event occurs x times, I set Remote Config value
to true, how long does it take Firebase
to register analytics events and flip the config?
Is this a real time thing?"
SUMIT CHANDEL: So first of all, that's
a great question, David, because it's a very nuanced question.
And I love nuance.
So there's a few things involved in this question.
One, it's using analytics and audiences.
And then using that as the condition for your Remote
Config variables And.
When they change.
In terms of analytics reporting, so when an event occurs
or when a user, let's say, register some event x times,
each time that happens it's kind of in near real time.
Or you could consider that that's happening in real time.
So each time the event occurs, yes, that's being registered.
And if that user qualifies for an audience you defined,
like that they did this event at least five times,
they'll qualify for that audience.
Now, when it comes to Remote Config parameters
and the values that you've configured,
that should be downloaded and used for this user,
because they've qualified for that audience.
That happens on a kind of separate timescale.
And that's dependent on when you've
set your minimum fetch interval in your Remote Config
configuration.
So for example, if you've set it for every hour,
then let's say within that hour block,
this user qualified for that audience
and they have new values waiting for them,
it's only when that fetch occurs that they'll actually
be able to get them.
So that's kind of--
the real time aspect is more behind how often
are you fetching new values.
Now, on the other side of things,
let's say you set a new value in the Remote Config console
and you want that to be applied immediately
to any users who qualify in that audience that you've created.
There's a way to set that up.
And you can do that-- actually, if you look up literally
in Google, just Remote Config, real time,
you're going to find a link to the documentation that we have
on the Firebase documentation site that talks about how
to link up real time updates for Remote Config values to push
those out your clients, using a combination of Cloud functions
and Firebase Cloud Messaging, where every time your Remote
Config changes, you just push a silent FCM to your end
users' devices.
And then they can get those values immediately
and make a fetch request to get the new values.
That's getting a bit more into the weeds,
and maybe not directly what you're asking here.
But if that's something that's important to you,
we'll put a link in the docs as well.
And if you just search that at Google search image,
you'll find a link to that as well.
RYAN VERNON: So it's not exactly real time,
but it can be, if you use functions.
SUMIT CHANDEL: At least in terms of when
you change a value that you want to push immediately
to that audience, yes, you can do that
by hooking it up that way, if that's
what David's looking for.
Great question, David, thank you.
Hey, Ryan.
RYAN VERNON: Yes.
SUMIT CHANDEL: Knock, knock.
RYAN VERNON: Who's there?
SUMIT CHANDEL: Next.
RYAN VERNON: Next?
SUMIT CHANDEL: Next question.
[LAUGHS]
RYAN VERNON: Second question.
We have Dennis.
"Will your awesome game AppShip be available on Google Stadia?
It would be really cool."
SUMIT CHANDEL: Yes, it would.
Thank you, Dennis.
So for those of you who haven't played AppShip before,
it's a game that we've had Google I/O three times
and a game that we have publicly available on a repo as well,
in case you want to try it out.
Yeah, AppShip is a game where there's
multiple users playing in real time, flying these ships,
trying to get as many points and reach a goal,
and answer questions along the way as fast as they can.
And the team that does this the fastest wins.
I don't know if there's any plans right now
to have AppShip available for Google Stadia.
I wish, because that means I might finally
be able to beat Todd if I can play AppShip
on my phone and my laptop on my way to work,
and have the same instance saved throughout the whole process.
That would be pretty cool.
And have my records, or my game state preserved.
So it would be really cool.
And if that's important to you as well,
there's someone you can bug, and that's Abe Haskins.
So he's actually looking at the AppShip at the moment.
So send him a ping if that's an important one for you.
And thanks for the question, Dennis.
RYAN VERNON: Why'd the chicken cross the road?
SUMIT CHANDEL: I don't know.
Why?
RYAN VERNON: To get to the next question.
SUMIT CHANDEL: Oh.
So Ian asks, "I'm using Fire performance monitoring
to monitor some API endpoints.
And I have a feeling one of them is problematic,
but I can't dig deeper into the details.
What can I do?"
RYAN VERNON: That's a great question.
We have got some awesome patterns that are automatically
generated.
And they work really well.
And now we're making them even better,
because we're giving the users the power to customize them.
So if you have a tree of things that are maybe
diluting some of the failures that you
can't see what's going on in this one area,
you can just like pop that off custom
and just look at this one thing separately from the tree.
And that gives you a lot more power
to see what's going on in your app.
SUMIT CHANDEL: Oh.
RYAN VERNON: Make your users happier.
SUMIT CHANDEL: OK, interesting.
So for Ian's case, in this situation, that API endpoint,
there is a way that he can kind of dig deeper into that
specifically for, let's say, some URL for that
API that represents that endpoint?
RYAN VERNON: Yeah, yeah.
He can zoom into that one.
And also, for other people who have asked,
maybe things aren't grouped, aren't aggregated enough.
So with this new powerful customization tool,
you can do that as well.
Take a bunch of separate things and group them together.
SUMIT CHANDEL: Hmm.
RYAN VERNON: Yeah, it's really exciting,
because it affects issues and it helps the UX of everyone
out there.
So I'm happy to work on it.
SUMIT CHANDEL: Oh, nice.
Yeah, actually I think I've seen that question
from a lot of other Firebase developers
as well, wanting to dig in deeper into specific URLs
or endpoints in their app.
So thanks for that question, Ian.
I think that's going to help a lot of people.
Thank you.
RYAN VERNON: Roses are red.
SUMIT CHANDEL: Violets are blue.
RYAN VERNON: We've got another--
SUMIT CHANDEL & RYAN VERNON: Question for you.
RYAN VERNON: Question from Brenda.
Brenda asks, "I'm building a game with Unity and Firebase.
I'm always finding exceptions thrown in the background,
but they're super hard to debug.
Do you have any advice?"
SUMIT CHANDEL: Yes.
So actually, we've recently--
well, sort of recently-- introduced more support
for Unity games and Firebase in Crashlytics.
So Crashlytics is great for a crash
reporting and finding the root cause of different issues
you might encounter as your encountering
crashes in the wild or debugging your app and what not.
And in this case, there's actually a really good blog
post that we wrote shortly after we introduced support for--
better support for Unity in Crashlytics.
Sort there's a link at the bottom
there by Patrick Martin, who wrote a blog post
on very common errors that developers
encounter when they're developing their Unity apps.
Better yet, how to actually debug them in Crashlytics
and find the stack trace that you care about to figure out
what are the root causes for some of these issues
you're encountering.
So, Brenda, I would say, and any other developers out there
experiencing issues or wanting to debug more
the errors that they're seeing in their Unity apps
or Unity games, there's that link
at the bottom there for that post.
So just check it out, and it should help you a long way.
Thanks for that question.
RYAN VERNON: Thanks.
SUMIT CHANDEL: And that's all we have time for today.
Thanks again to Ryan for joining us and helping us
answer all these great questions.
And thank you all again for submitting them.
If you have questions that you want
to ask us and have answered on the next episode
of "AskFirebase," let us know.
Post it in the YouTube comments, send us
some more Stack Overflow questions on Twitter,
and just remember to put that #AskFirebase,
and we'll able to get to it on the next episode.
Thanks again, and make sure to like and subscribe.
And we'll see you next time.
[MUSIC PLAYING]