Getting started with Firebase in Unity (2019) - Firecasts

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
PATRICK MARTIN: Hi, everybody. My name's Patrick Martin, and I'm here to show you how to get started with Firebase in Unity. One of Unity's strengths, and I'm sure one of the reasons why you're here today, is its ability to target both iOS and Android with a single project and code base. I'll start today by configuring a Unity Project with Firebase that I can deploy to both of these platforms. Let's start up by making sure that our tools are all ready. I like to use the Unity Hub to keep my copy of Unity up to date and manage my components. From here, I can add a new version of Unity, if I don't have one already. I can also use AddComponent on my current editor to make sure I have iOS and Android support. Note that you can only make local iOS builds on a Mac. If you're installing Unity 2019 or later, you can opt to install the Android Build tools now, as well. If you opt out of this, or if you're using an older version of Unity, you will need to download Android Studio and install the SDK separately. If you can, I'd recommend letting Unity manage all of this for you. If you're using an older version of Unity or opted to use your own version of the Android SDK, you can point your specific version of the Android SDK and NDK under Preferences, External Tools. If you have an Apple Computer and want to make an iOS build, you'll need to have Xcode installed. Apple makes this really easy via the Apple App Store. On Windows or Linux, you can still generate an iOS executable using Unity Cloud Build. It's a little more involved than what I'd like to cover here, but you can find instructions from Unity's developer documentation. Now, to initially setup our project to use Firebase, we'll bounce a little bit between both the Unity Editor and the Firebase console. You can easily use an existing Unity or Firebase project, but I'll create new ones from scratch. I'll create a new Unity Project. This is a default empty project, and I'll just add some text for fun. Now, we have a simple project we can just run. I'll save the scene, then open up Build Settings. I will start by building for Android first. If you're not on Mac OS, this is actually the only platform you can target right now. And then I'll add some app identifiers that I'll need to configure Firebase. If you look under Other Settings, Package Name, this is needed to associate your app with Firebase. So let's change this to something unique. Now, if you're setting up iOS, as well, you can click this little button up here, then select a Bundle Identifier here. This does not have to match your Android package name, but I recommend making them as similar as possible for your own sanity. Here, someone already used my Android package name as their iOS bundle identifier, so I have to find my own unique identifier. We're now ready to start setting up our project in the Firebase console. Point your web browser to firebase.google.com, and click on the Go to Console button. Before we create a project, I should talk a little bit about what a Firebase project is versus a Firebase application. A project is a pool of resources shared between a number of client applications. This may include user accounts, analytics data, databases, or anything else that lives in Google's cloud. An app is a single application backed by this data. You can have up to 30 applications under one project before you have to ask to have your limit increased. For this video, I will have one application for iOS and another application for Android, sharing one project as their back end. So now, click Add Project, and give it a nice name. It'll take a moment to put everything into place. Then you'll be dropped into your freshly-minted project. Now, you can create a standalone iOS and Android application, but this little Unity icon will let you create a project and Unity on multiple platforms that Firebase supports. Let's create iOS and Android applications, since we can build both of them from our Unity installation. That package name and bundle identifier you set up before go right here. Click this little Register App button to continue. Now, you have a Google-Services.json file to download for Android, and a GoogleService-Info.plist for iOS. These just tell your app how to connect to Firebase. They're are actually safe to commit to version control. So let's download these files. I like putting these in a subfolder named Data, but they can go anywhere in your Assets Directory. Let's create a Data folder, and drop these files in there. Now, we can jump back into the Firebase console and click Next. Here, we'll see a download link for Firebase Unity's SDK. I'll start that download, and click Next and continue to the console. We have to do one more thing to get started on Android. For security reasons, you'll need to register the SHA1 of your app sign-in key with Firebase. So click on the gear next to Project Overview, and select Project Settings. From here, you can add sign-in certificates. You'll want your release certificate here so your users can access Firebase, but you'll also want to have each of your developers register their debug key, if they're going to work on Firebase features. So open a terminal and type keytool list v alias androiddebug keystore android debug keystore. Note that your password will be Android for your debug key. The debug keystore is automatically generated whenever you first make an Android build. If you get an error message telling you that it can't be found, just run an Android build from Unity real fast. Now, copy the value under SHA1, switch back over to your Firebase console, click Add Fingerprint, and paste the SHA1 key. IOS does not need a similar step to get started, but if you use some features, like Dynamic Links, you will need to provide an App Store ID, which you can enter here. For now, I'll leave this blank. Thanks for sticking around this long. We're almost done. Now, we need to integrate the SDK into Unity. Do you remember that ZIP we downloaded earlier? Let's go ahead and unzip it. We have folders for .NET 4 and .NET 3. Inside of each folder is a Unity package for each of the Firebase products supported in Unity. Now, if you're unfamiliar with Unity packages, these are effectively little pieces of a Unity game that you can share between projects. If you're looking for a clean way to bundle up scripts, art, audio, prefab, scenes, and really anything else you need and Unity between projects, this is a system Unity provides you to do so. If you have one and only one Unity Project open, you can reliably just double-click on the package you want to install. Since that doesn't work in every situation, I'll walk you through importing it from the Assets menu. First, we need to figure out which version of .NET we're using. I highly recommend using .NET 4, but if you're stuck in an older version of Unity, you might not have a choice. To see what your project is using, go over to Unity, bring up your Build Settings, go to Player Settings, and look under Configuration for Scripting Runtime Version. This will be universal for all of your target platforms, and actually requires relaunching your editor to switch. Here, you see that I'm using .NET 4.x Equivalent, which means that I should use the .NET 4 Unity packages. Now, go to Assets, Import Package, Custom Package, and import one of the Unity packages in .NET 4. Analytics is the easiest to pull in, so let's just grab that. Just leave everything checked and click Import. If you really know what you're doing, you can selectively add different bits, but there are really very few situations where you'd want to do this for the Firebase plugins. You may see this dialog box from the Play Services Resolver. You should let this auto-update. What does it do exactly? Firebase requires native dependencies outside of what is typically required by Unity. Rather than requiring you to learn how each platform's build system works, and making sure native components match with their Unity wrappers, the Play Services Resolver will make sure that your Unity Project has any non-Unity dependencies it needs, when generating a device build. Now that you have the SDK downloaded, you have a new menu item under Window, Firebase, Documentation. This lets you jump directly to the console for your application, as well as quickly set up new integrations. You can even configure a new project right from this window, if you choose to install the SDK before configuring the project in the console. One more thing that we need to do is make sure that Firebase is initialized. I'll create a quick script to make sure Firebase is available on this device by calling CheckAndFixedDependenciesAsync. When that completes, I'll call SetAnalyticsCollectionEnabled to make sure everything starts. It's important to note that analytics collection is typically enabled by default, but you need to make a call into Firebase to initialize the SDK. Since this project is really simple without this call, we would never start receiving analytics events. Finally, let's make sure this works. Remember to add the scene to the Build Settings, then make sure you have a phone plugged in or an emulator running with Google Play Services installed. Then hit Build and Run. I always put everything under a Build folder under my home directory so I can clean up large binaries, when I'm running low on disk space. If you jump over to the Analytics Dashboard, you should now see one user in this Users in the Last 30 Minutes panel. Now, I'll target iOS with the same executable. Simply click iOS, and then Switch Platform. We'll run through and reimport everything in a way that better suits iOS. This usually includes things like re-encoding textures as PVR, versus something like ECT for Android. Then just click Build and Run again. I'm saving the Xcode project in the same builds directory is my Android APK. You may see this dialog box appear, when you try to make a build. The Firebase SDK uses a popular and near-universal package manager called CocoaPods to manage dependencies on iOS, much like Gradle on the Android, which the Firebase SDK will download and install for you. This is a one-time cost, and after this finishes running, subsequent builds will be just as snappy as non-Firebase-enabled builds-- even if you do a clean build. If you need to kill some time whilst this runs, I recommend visiting Cats as a Service. Unlike Android, on iOS, Unity actually generates a full Xcode project that you open in Xcode. Then you build your Xcode executable from here. You can export a Google project from Build Settings, if you want to, but I usually only do this if I'm trying to debug native Android plugins I've written on my own. Then we jump over to Xcode and run it on our device. If everything goes well, we should see an iOS device pop up in our Analytics Dashboard, and we're done. So whether you're gearing up for a 48-hour game jam or settling in for the long haul for your next major battle royale tower defense game, you have the foundation of a great mobile-first cloud presence. You can build on Analytics with custom events or properties, or drop in Crashlytics to easily start gathering crash data from the field. You may also want to look into Firebase Authentication, your gateway to the powerful tools Firebase provides to easily create and manage world-- spanning back-end infrastructure. Let me know what you plan to make with Firebase and what you want me to cover next, either in the comments below or by tweeting at me on Twitter with the handle @Pux0r3. Link in the description below. See you next time. [MUSIC PLAYING]
Info
Channel: Firebase
Views: 173,853
Rating: undefined out of 5
Keywords: Getting started with Firebase in Unity, Firebase in Unity, Unity, Firebase, Firebase authentication unity, unity cloud bill for iOS, unity cloud bill, iOS, Android, Unity Hub, Unity 2019, Firebase 2019, Firecasts, firecast, SDK, Android SDK, Android NDK, SDK and NDK, Xcode, installing Xcode, Unity cloud build, Firebase developers, Firebase app, Google Developers, Patrick Martin, Firebase team, team Firebase, GDS: Yes;
Id: A6du3DUTIPI
Channel Id: undefined
Length: 12min 54sec (774 seconds)
Published: Wed Sep 18 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.