Ultimate Mobile Kit for iOS & Android - Firebase

http://gamednastudio.com/plugins/images/UltimateMobileKit/Update14.png

Ultimate Mobile Kit 1.6.0 for UE 4.19 released!

We’ve just released plugin binaries for Unreal Engine 4.19.
You can download it from GitHub repository on releases tab or your Sellfy dashboard (for Sellfy customers). Update also was submitted for UE4 Marketplace but it needs to wait for approval.

CHANGELOG:

  • Added support for UE 4.19
  • Added support for Blueprints C++ Nativization

If you haven’t owned it yet, you can buy now on Sellfy or UE4 Marketplace.

I was looking here: https://db-engines.com/en/system/Goo…loud+Firestore
I noticed your plugin can send images to google cloud. I cant see how to send them to firestore. Is this a capability I am overlooking?

I like the thought of running cloud api’s from firestore. they make it fairly easy and fast. I am fearful to get into this with google cloud storage. Would love feedback of anyone doing this??

Hello,

Ultimate Mobile Kit supports sending images to Firebase Storage which is linked to Firebase Realtime Database and Firebase Cloud Firestore.
Please remember that implementation of Realtime Database is in our separated plugin: https://forums.unrealengine.com/unre…forms-firebase
However we don’t support Cloud Firestore yet because it is in beta and still under high development. We will implement this functionality when Google will release final version.
Please note that Firebase Realtime Database and Firebase Cloud Firestore are completely different databases.

If you have more questions, feel free to ask.

Dynamic Links

Firebase Dynamic Links are links that work the way you want, on multiple platforms, and whether or not your game is already installed.

With Dynamic Links, your users get the best available experience for the platform they open your link on. If a user opens a Dynamic Link on iOS or Android, they can be taken directly to the linked content in your native game. If a user opens the same Dynamic Link in a desktop browser, they can be taken to the equivalent content on your website.

In addition, Dynamic Links work across game installs: if a user opens a Dynamic Link on iOS or Android and doesn’t have your game installed, the user can be prompted to install it; then, after installation, your game starts and can access the link.

You create a Dynamic Link either by using the Firebase console, using a REST API, iOS or Android Builder API, or by forming a URL by adding Dynamic Link parameters to a domain specific to your game. These parameters specify the links you want to open, depending on the user’s platform and whether your game is installed.

When a user opens one of your Dynamic Links, if your game isn’t yet installed, the user is sent to the Google Play Store or App Store to install your game (unless you specify otherwise), and your game opens. You can then retrieve the link that was passed to your game and handle the link as appropriate for your game.

How does it work?

You create a Dynamic Link either by using the Firebase console, using a REST API, iOS or Android Builder API, or by forming a URL by adding Dynamic Link parameters to a domain specific to your game. These parameters specify the links you want to open, depending on the user’s platform and whether your game is installed.

When a user opens one of your Dynamic Links, if your game isn’t yet installed, the user is sent to the Google Play Store or App Store to install your game (unless you specify otherwise), and your game opens. You can then retrieve the link that was passed to your game and handle the link as appropriate for your game.

Initialization

Before making any call to the Firebase Dynamic Links, you should first execute the Firebase Dynamic Links Init function. If the result is a fail, study logs to find out what causes an issue.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki81.png

Create Dynamic Links

There are three ways you can create a Dynamic Link:

  • Using the Firebase console. This is useful if you’re creating one-off links to share on social media.
  • Using plugin’s runtime functions on iOS and Android. This is the preferred way to dynamically create links in your game for user-to-user sharing or in any situation that requires many links. You can track the performance of Dynamic Links created with the runtime functions using Firebase Analytics.
  • Manually. If you don’t need to track click data and you don’t care if the links are long, you can manually construct Dynamic Links using URL parameters, and by doing so, avoid an extra network round trip.

You can create short or long Dynamic Links using Ultimate Mobile Kit plugin. The API takes several optional parameter structures to build links. Short links can also be created from a previously generated long link. Firebase Dynamic Links generates a URL like the following:

Create a long Dynamic Link

To create a Dynamic Link, create a Firebase Dynamic Link Components structure, setting any of the optional members for additional configuration, and passing it to Firebase Dynamic Link Get Short Link or Firebase Dynamic Link Get Long Link.

The following minimal example creates a long Dynamic Link to https://gamednastudio.com that opens with your Android game com…firebase and iOS game com…firebase:

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki82.png

Long Links append all of the configuration settings as query arguments to the link and therefore do not require any network calls.

Create a short Dynamic Link

To create a short Dynamic Link, pass a previously generated long link to Firebase Dynamic Links Get Short Link or build Firebase Dynamic Link Components the same way as above.

Firebase Dynamic Links Get Short Link optionally takes an extra Firebase Dynamic Link Options config parameter with Path Length; this allows you to control how the link should be generated. Generating a short link requires a network request to the Firebase backend, so Firebase Dynamic Links Get Short Link is asynchronous.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki83.png

Receive Dynamic Links

To check for a received Dynamic Link, call Firebase Dynamic Links Get Listener function and bind event OnDynamicLinkReceivedEvent.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki84.png

You must also call Firebase Dynamic Links Fetch when the application runs or gains focus in order for the listener to be triggered.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki85.png

Invites

Firebase Invites are an out-of-the-box solution for game referrals and sharing via email or SMS.

Word of mouth is one of the most effective ways of getting users to install your game. In a recent study of thousands of smartphone users, researchers found that the #1 reason people discovered a game is because they heard about it from a friend or colleague. Firebase Invites makes it easy to turn your game’s users into your game’s strongest advocates.

Firebase Invites builds on Firebase Dynamic Links, which ensures that recipients of links have the best possible experience for their platform and the apps they have installed.

When a user taps one of your game’s Share buttons and chooses the Firebase Invites channel - usually named “Email and SMS” - the Firebase Invites sharing screen opens. From the sharing screen, the user selects recipients from their Google contacts and contacts stored locally on the device, optionally customizes the invitation message and sends the invitations. Invitations are sent by email or SMS, depending on the available contact information, and contain a Dynamic Link to your app.

When the invitation’s recipients open the Dynamic Link in the invitation, they are sent to the Google Play Store or App Store if they need to install your game; then, your game opens and can retrieve and handle the link.

Key capabilities:

  • Rich sharing that’s easy for users - Firebase Invites makes it simple for users to send content to their friends, over both SMS and email, by ensuring that referral codes, recipe entries, or other shared content gets passed along with the invitation-no cutting-and-pasting required.
  • Rich sharing that’s easy to implement - Firebase Invites handles the invitation flow for you, allowing you to deliver a straightforward user experience without taking engineering time away from the rest of your game.
  • Invitations that survive the installation process - because Firebase Invites is built on Dynamic Links, invitations work across the App Store and Google Play Store installation processes and ensure that recipients get the referral code or shared content, whether or not they have your app installed.

Sending invitations:

  • Combines the most common sharing channels - Firebase Invites can be sent over SMS or email.

  • Merged contacts selector - the share screen’s contact list is populated from the user’s Google Contacts and the contacts stored locally on the device.

  • Recipient recommendations - the share screen recommends recipients based on the contacts the user communicates with frequently.

  • Customizable invitation message - you can set the default message to be sent with invitations. This message can be edited by the user when sending invitations.

  • Customizable rich-text email invitations - you can customize email invitations in either of two ways:

  • Provide custom images that will be used along with additional text and graphics from the app’s entry in the App Store or Play Store.

  • Provide HTML for a fully customized email invitation.

  • Low friction for users - Android users can send invitations without signing in to your game.

Receiving invitations

  • Installation flow initiation - Firebase Invites smartly directs the recipient to the appropriate store when they open the link and need to install the game. iOS users are sent to the App Store, Android users are sent to the Google Play Store, and web users are sent to the store for the sender’s platform.
  • Installation flow survival - Invitations use Dynamic Links, which ensure that the link information contained in the invitation doesn’t get lost, even if the user has to install the game first.
  • Low friction for users - iOS and Android users can receive invitations without signing in to their Google Accounts.

How does it work?

When a user taps one of your game’s Share buttons and chooses the Firebase Invites channel - usually named Email and SMS - the Firebase Invites sharing screen opens. From the sharing screen, the user selects recipients from their Google contacts and contacts stored locally on the device, optionally customizes the invitation message and sends the invitations. Invitations are sent by email or SMS, depending on the available contact information, and contain a Dynamic Link to your game.

When the invitation’s recipients open the Dynamic Link in the invitation, they are sent to the Play Store or App Store if they need to install your game; then, your game opens and can retrieve and handle the link.

Initialization

Before making any call to the Firebase Invites, you should first execute the Firebase Invites Init function. If the result is a fail, study logs to find out what causes an issue.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki86.png

Send Invitation

Create a new instance of structure Firebase Invite. When you are ready to display the invitation call Firebase Invites Send Invite and pass previously created structure.

This will display the Invites client UI, allowing the user to choose the recipients and modify the message if desired. This UI will stay on the screen until the user chooses to either send the invitation or cancel.

If your project in the Firebase console contains exactly one application for each platform, Firebase Invites will automatically associate the applications with each other, so that (for example) iOS users clicking on an invitation sent by an Android user will be sent to the right place to install your game on their platform.

If you have more than one application on each platform, you can set iOS Platform Client Id or Android Platform Client Id, passing in the Firebase client ID of the alternate platform.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki87.png

Receive Invitation

When a user receives an invitation, if the user has not yet installed the game, they can choose to install the game from their platform’s app store.

Then, after the game is installed, or if the game was already installed, the game starts and receives the URL to its content, if you sent one. The game will also receive the invitation ID, which will match the invitation ID on the sending side.

To check for a received Invitation, call Firebase Invites Get Listener function and bind event OnInviteReceivedEvent, OnInviteNotReceivedEvent, and OnErrorReceivedEveny.

When your game receives new Invitation and calls OnInviteReceivedEvent, you should also call Firebase Invites Convert Invitation to mark the Invitation as converted in app-specific way.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki88.png

Hello everyone!
When i try to build example project to apk file, i have a error:

No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Borderless.Colored’.

andoid sdk 23

how can i fix this problem?

Crashlytics

Get clear, actionable insight into app issues with this powerful crash reporting solution for Android and iOS.

Firebase Crashlytics is a lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality. Crashlytics saves you troubleshooting time by intelligently grouping crashes and highlighting the circumstances that lead up to them.

Find out if a particular crash is impacting a lot of users. Get alerts when an issue suddenly increases in severity. Figure out which lines of code are causing crashes.

Key capabilities:

  • Curated crash reports - Crashlytics synthesizes an avalanche of crashes into a manageable list of issues, provides contextual information, and highlights the severity and prevalence of crashes so you can pinpoint the root cause faster.

  • Cures for the common crash - Crashlytics offers Crash Insights, helpful tips that highlight common stability problems and provide resources that make them easier to troubleshoot, triage, and resolve.

  • Integrated with Analytics - Crashlytics can capture your game’s errors as app_exception events in Analytics. The events simplify debugging by giving you access a list of other events leading up to each crash, and provide audience insights by letting you pull Analytics reports for users with crashes.

  • Realtime alerts - get realtime alerts for new issues, regressed issues, and growing issues that might require immediate attention.

Force a crash to test your implementation

You don’t have to wait for a crash to know that Crashlytics is working. You can use the functions to force a crash by calling Firebase Crashlytics Force Crash or Firebase Crashlytics Force Exception.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki89.png

When testing, reopen your game after crash to make sure Crashlytics has a chance to report the crash. The report should appear in the Firebase console within five minutes.

Customize crash reports

Firebase Crashlytics can work with very little setup on your part - as soon as you enable module, Crashlytics gets to work sending crash reports to the Firebase console.

For more fine-grained control of your crash reports, customize your Crashlytics configuration. For example, you can enable opt-in reporting for privacy-minded users, add logs to track down pesky bugs, and more.

Add custom logs

To give yourself more context for the events leading up to a crash, you can add custom Crashlytics logs to your app. Crashlytics associates the logs with your crash data and makes them visible in the Firebase console.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki90.png

Add custom keys

Custom keys help you get the specific state of your game leading up to a crash. You can associate arbitrary key/value pairs with your crash reports, and see them in the Firebase console.

There are four methods to set keys. Each handles a different data type.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki91.png

Set user data

To diagnose an issue, it’s often helpful to know which of your users experienced a given crash. Crashlytics includes a way to anonymously identify users in your crash reports.

To add user IDs to your reports, assign each user a unique identifier in the form of an ID number, token, or hashed value.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki92.png

If you need to clear a user identifier after you set it, reset the value to a blank string.

Upload dSYMs symbols

Firebase Crashlytics needs your debug symbols (dSYMs) to give you deobfuscated, human-readable crash reports. Our plugin offers uploading dSYMs to Crashlytics by Plugin Settings.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki93.png

You need to upload dSYMs after each build which is intended to recognize by Firebase Crashlytics (please note that development and shipping builds have different symbols!).

Android

  • Build your game in development or shipping mode.

  • Go to Project Settings -> Ultimate Mobile Kit and click Upload dSYMs for Android [Development] if your build was in development mode or Upload dSYMs for Android [Shipping] if your build was in shipping mode.

  • Please wait until uploading will finish.

iOS

  • Go to Project Settings -> iOS and enable option Generate dSYM file for third party crash tools.

  • Build your game in development or shipping mode.

  • Go to Project Settings -> Ultimate Mobile Kit and click Upload dSYMs for iOS.

  • Firebase Crashlytics Dashboard will open.

  • Upload dSYM file which should be under the following path:

    • Development: [PROJECT_FOLDER]/Binaries/IOS/[PROJECT_NAME].dSYM.zip

    • Shipping: [PROJECT_FOLDER]/Binaries/IOS/[PROJECT_NAME]-IOS-Shipping.dSYM.zip

  • Please wait until uploading will finish.

Please go to Project Settings -> Android -> Ant Verbosity and change to Verbose. We will see more details. Then please try to build game and send logs again.

Thank you for your patience :slight_smile:

Instance Id

Firebase Instance ID provides a unique ID per instance of your apps. In addition to providing unique IDs for authentication, Instance ID can generate security tokens for use with other services.

Key capabilities:

  • Identify and track games - Instance ID is unique across all game instances across the world, so your database can use it to uniquely identify and track game instances. Your server-side code can verify, via the Instance ID cloud service, that an Instance ID is genuine and is the same ID as the original game that registered with your server. For privacy, your game can delete an Instance ID so it is no longer associated with any history in the database. The next time your game calls Instance ID it will get an entirely new Instance ID with no relationship to its previous one.
  • Generate Security Tokens - Instance ID provides a simple API to generate security tokens that authorize third parties to access your game’s server side managed resources.
  • Verify app authenticity - pass Instance ID tokens to your server and use the Instance ID service to verify the game package name and check if it has a valid signature. Verifying tokens with the Instance ID Cloud Service helps identify known games. To reduce cost and redundant round trip communications, configure your server to store these tokens so the check is needed only once. In the event of a security concern, your game can delete tokens or Instance ID itself, and generate new ones. In addition, the Instance ID server initiates token or Instance ID refresh if it detects bugs or security issues. Verifying game authenticity is available only for games distributed by Google Play.
  • Confirm game device is active - the Instance ID server can tell you when the device on which your game is installed was last used. Use this to decide whether to keep data from your game or send a push message to reengage with your users.

The Instance ID is long lived, but may expire for the following reasons:

  • Device factory reset.
  • User uninstalls the game.
  • User performs Clear Data in the game.
  • Device unused for an extended period (device and region determines the timespan).
  • Instance ID service detects abuse or errors and resets the Instance ID.
  • Server-side code if your client app requires that functionality.

Initialization

Before making any call to the Firebase Instance Id, you should first execute Firebase Instance Id Init function. If the result is a fail, study logs to find out what causes an issue.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki95.png

Instance Id

Firebase Instance Id Get Id returns a stable identifier that uniquely identifies the game instance. Once an Instance ID is generated, the library periodically sends information about the application and the device where it’s running to the Firebase backend.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki96.png

Firebase Instance Id Delete Id stops the periodic sending of data to the Firebase backend started when the Instance ID was generated, unless another library that requires Instance Id (like Firebase Cloud Messaging, Firebase Remote Config or Firebase Analytics) is used or it’s configured to be executed automatically.

Tokens

To prove ownership of Instance ID and to allow servers to access data or services associated with the game call Firebase Instance Id Get Token. If you no longer need generated token call Firebase Instance Id Delete Token which revokes access to a scope for an entity.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki97.png

https://gamednastudio.com/plugins/images/UltimateMobileKit/Update20.png

Big Update! Four new modules added to the Ultimate Mobile Kit!

Ultimate Mobile Kit plugin is growing and we have just released big update (1.7.0) with four new Firebase modules added: Crashlytics, Dynamic Links, Invites, and Instance Id.

CHANGELOG:

  • Added Firebase Crashlytics module.
  • Added Firebase Invites module.
  • Added Firebase Dynamic Links module.
  • Added Firebase Instance Id module.
  • Fixed crash in Firebase Storage Get File
  • Functions display names refactored.
  • Support for ANT is removed completely. Please switch to Gradle.
  • Many optimizations and bugfixes.

Buy now on Sellfy (20% OFF): Ultimate Mobile Kit Firebase Plugin for UE4 - gameDNA
Buy now on Marketplace: https://www.unrealengine.com/marketp…e-kit-firebase

Crashlytics

Firebase Crashlytics is a lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality. Crashlytics saves you troubleshooting time by intelligently grouping crashes and highlighting the circumstances that lead up to them. Get clear, actionable insight into app issues with this powerful crash reporting solution for Android and iOS. Find out if a particular crash is impacting a lot of users. Get alerts when an issue suddenly increases in severity. Figure out which lines of code are causing crashes.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Update16.png

Dynamic Links

Firebase Dynamic Links are links that work the way you want, on multiple platforms, and whether or not your game is already installed.

With Dynamic Links, your users get the best available experience for the platform they open your link on. If a user opens a Dynamic Link on iOS or Android, they can be taken directly to the linked content in your native game. If a user opens the same Dynamic Link in a desktop browser, they can be taken to the equivalent content on your website.

In addition, Dynamic Links work across game installs: if a user opens a Dynamic Link on iOS or Android and doesn’t have your game installed, the user can be prompted to install it; then, after installation, your game starts and can access the link.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Update17.png

Invites

Firebase Invites are an out-of-the-box solution for game referrals and sharing via email or SMS.

Word of mouth is one of the most effective ways of getting users to install your game. In a recent study of thousands of smartphone users, researchers found that the #1 reason people discovered a game is because they heard about it from a friend or colleague. Firebase Invites makes it easy to turn your game’s users into your game’s strongest advocates.

When a user taps one of your game’s Share buttons and chooses the Firebase Invites channel - usually named “Email and SMS” - the Firebase Invites sharing screen opens. From the sharing screen, the user selects recipients from their Google contacts and contacts stored locally on the device, optionally customizes the invitation message and sends the invitations. Invitations are sent by email or SMS, depending on the available contact information, and contain a Dynamic Link to your app.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Update18.png

Instance Id

Firebase Instance ID provides a unique ID per instance of your apps. In addition to providing unique IDs for authentication, Instance ID can generate security tokens for use with other services.

Key capabilities:

  • Identify and track games
  • Generate Security Tokens
  • Verify app authenticity
  • Confirm game device is active

https://gamednastudio.com/plugins/images/UltimateMobileKit/Update19.png

More info you can find on the official plugin page: https://gamednastudio.com/ultimate-mobile-kit/

Buy now on Sellfy (20% OFF): Ultimate Mobile Kit Firebase Plugin for UE4 - gameDNA
Buy now on Marketplace: https://www.unrealengine.com/marketp…e-kit-firebase

New function - Sign In With Google

You can call Firebase Authentication Sign In With Google function to login with Google Account and Google Play Games Account. After successful login you are able to obtain Id Token and Server Auth Code needed for Firebase Google Credential and Firebase Google Play Games Credential.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki98.png

Examples of Sign In/Link With Credential

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki99.png

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki100.png

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki101.png

Cloud Functions

Cloud Functions for Firebase lets you automatically run backend code in response to events triggered by Firebase features and HTTPS requests. Your code is stored in Google’s cloud and runs in a managed environment. There’s no need to manage and scale your own servers.

The functions you write can respond to events generated by these other Firebase and Google Cloud features:

  • Firebase Authentication Triggers
  • Firebase Analytics Triggers
  • Firebase Crashlytics Triggers
  • Firebase Cloud Storage Triggers
  • Firebase Realtime Triggers
  • Cloud Pub/Sub Triggers
  • HTTP Triggers
  • Cloud Firestore Triggers

Support for Firebase Cloud Functions is already enabled in the Ultimate Mobile Kit plugin.

Deploy your JavaScript or TypeScript code to Google servers with one command from the command line. After that, Firebase automatically scales up computing resources to match the usage patterns of your users. You never worry about credentials, server configuration, provisioning new servers, or decommissioning old ones.
In many cases, developers prefer to control application logic on the server to avoid tampering on the client side. Also, sometimes it’s not desirable to allow that code to be reverse engineered. Cloud Functions is fully insulated from the client, so you can be sure it is private and always does exactly what you want.

How does it work?
After you write and deploy a function, Google’s servers begin to manage the function immediately, listening for events and running the function when it is triggered. As the load increases or decreases, Google responds by rapidly scaling the number of virtual server instances needed to run your function.

Lifecycle of a function

  1. The developer writes code for a new function, selecting an event provider (such as Realtime Database), and defining the conditions under which the function should execute.
  2. The developer deploys the function, and Firebase connects it to the selected event provider.
  3. When the event provider generates an event that matches the function’s conditions, the code is invoked.
  4. If the function is busy handling many events, Google creates more instances to handle work faster. If the function is idle, instances are cleaned up.
  5. When the developer updates the function by deploying updated code, all instances for the old version are cleaned up and replaced by new instances.
  6. When a developer deletes the function, all instances are cleaned up, and the connection between the function and the event provider is removed.

What Can I Do with Firebase Cloud Functions?

  1. Notify players when something interesting happens
  • Send message to the player when he completes for example 10 achievements.
  • Send confirmation emails to players subscribing/unsubscribing to a newsletter.
  • Send a welcome email when a user completes tutorial.
  • Send an SMS confirmation when player creates a new account.
  1. Perform Realtime Database sanitization and maintenance
  • Convert text to emoji.
  • Purge a deleted user’s content from Realtime Database
  • Limit the number of child nodes in a Firebase database.
  • Track the number of elements in a Realtime Database list.
  • Copy data from Realtime Database to Google Cloud BigQuery.
  • Manage computed metadata for database records.
  1. Execute intensive tasks in the cloud instead of in your game
  • Periodically delete unused Firebase accounts.
  • Automatically moderate uploaded images.
  • Send bulk email to users.
  • Aggregate and summarize data periodically.
  • Process a queue of pending work.
  1. Integrate with third-party services and APIs
  • Use Google Cloud Vision API to analyze and tag uploaded images.
  • Translate messages using Google Translate.
  • Use auth providers like LinkedIn or Instagram to sign in users.
  • Send a request to a webhook on Realtime Database writes.
  • Enable full-text search on Realtime Database elements.
  • Process payments from users.
  • Create auto-responses to phone calls and SMS messages.
  • Create a chatbot using Google Assistant.
  1. And much more… practically infinite possibilities…

A/B Testing

When you are updating your game and using Firebase Remote Config to push it to an game with an active user base, you want to make sure you get it right. You might be uncertain about the following:

  • The best way to implement a feature to optimize the user experience. Too often, game developers don’t learn that their players dislike a new feature or an updated user experience until their game’s rating in the app store declines. A/B testing can help measure whether your players like new variants of features, or whether they prefer the game as it currently exists. Plus, keeping most of your players in a control group ensures that most of your user base can continue to use your game without experiencing any changes to its behavior or appearance until the experiment has concluded.
  • The best way to optimize the user experience for a business goal. Sometimes you’re implementing product changes to maximize a metric like revenue or retention. With A/B testing, you set your business objective, and Firebase does the statistical analysis to determine if a variant is outperforming the control group for your selected objective.

To A/B test feature variants with a control group, do the following:

  1. Create your experiment.
  2. Validate your experiment on a test device.
  3. Manage your experiment.

Support for Firebase A/B Testing is already enabled in the Ultimate Mobile Kit plugin.

Predictions (Machine Learning)

Firebase Predictions applies machine learning to your analytics data to create dynamic user groups based on your players’ predicted behavior. These predictions are automatically available for use with Firebase Remote Config, the Notifications composer, and A/B testing.

When you use Predictions with Remote Config, you can increase conversions by providing a custom experience based on each of your users’ predicted behavior.

You can use Predictions with the Notifications composer to deliver the right message to the right user groups.

And, with A/B testing, you can evaluate the effectiveness of your prediction-based strategies.

Support for Firebase A/B Testing is already enabled in the Ultimate Mobile Kit plugin.

Key capabilities:

  • Bring the power of Google’s machine learning to your data – Firebase Predictions applies Google’s expertise in machine learning to your analytics data, creating dynamic user groups based on users’ predicted behavior. With Google’s powerful machine learning, you can make product decisions based on predicted behavior, rather than historic behavior.
  • Boost conversions through dynamic, customized user experiences – Firebase Predictions is integrated with Remote Config, letting you customize a player’s experience based on their predicted behavior. For example, for players who are predicted to spend, you can show a new in-app purchase bundle, while for players who are predicted to not spend, you can adjust the frequency of ads. Groups update dynamically over time as an individual’s prediction changes, so you can always offer a fresh, personalized experience to your players.
  • Increase retention with smarter notifications – re-engaging a player who has already stopped using your game is tough. By using Predictions, you can engage players who are predicted to churn, before they ever stop using your game.
  • Create custom predictions – in addition to the built-in predictions - will churn, will not churn, will spend, and will not spend - Firebase Predictions allows you to create predictions based on any conversion event in your analytics data. Once you define the event, Predictions creates a dynamic user group composed of players who are predicted to complete that event in your game.

How does it work?
Predictions are available for iOS and Android games that include the Firebase Analytics SDK. Predictions creates dynamic groups of players who are likely to complete a certain event over the next 7 days. You can use these groups to target users with Remote Config and the Notifications composer.

By default, Predictions provides two types of predictions: churn, which predicts which users will disengage from your game over the next 7 days (that is, they will not open the game or game-related notification messages), and spend, which predicts which players will spend money in your game over the next seven days. You can also create your own predictions based on custom conversion Analytics events that you collect in your game.

Predictions lets you adjust the risk tolerance of a prediction so that you can strike the right balance between targeting fewer users with more accuracy, or more users with less accuracy, and it shows you what percentage of your user base will be targeted at each risk tolerance level. The machine learning model for your game improves as the amount and relevance of data collected using Analytics increases, and as your number of users increases. In addition, the accuracy of the model for a specific user will improve further after that user has used the game for at least a few days.

Predictions creates groups of players, called predicted user groups. You can send notifications to the predicted user groups. Or, you can change the behavior or appearance of app instances used by predicted user groups using Remote Config.

Hosting

Firebase Hosting provides fast and secure static hosting for your web app.

Firebase Hosting is production-grade web content hosting for developers. With Hosting, you can quickly and easily deploy web apps and static content to a global content-delivery network (CDN) with a single command.

Support for Firebase Hosting is already enabled in the Ultimate Mobile Kit plugin.

Key capabilities:

  • Served over a secure connection – the modern web is secure. Zero-configuration SSL is built into Firebase Hosting so content is always delivered securely.
  • Fast content delivery – each file you upload is cached on SSDs at CDN edges around the world. No matter where your users are, the content is delivered fast.
  • Rapid deployment – using the Firebase CLI, you can get your app up and running in seconds. Command line tools make it easy to add deployment targets into your build process.
  • One-click rollbacks – quick deployments are great, but being able to undo mistakes is even better. Firebase Hosting provides full versioning and release management with one-click rollbacks.

How does it work?
Firebase Hosting is built for the modern web developer. Static sites are more powerful than ever with the rise of front-end JavaScript frameworks like Angular and static generator tools like Jekyll. Whether you are deploying a simple app landing page or a complex Progressive Web App, Hosting gives you the infrastructure, features, and tooling tailored to deploying and managing static websites.

Hosting gives your project a subdomain on the firebaseapp.com domain. Using the Firebase CLI, you can deploy files from local directories on your computer to your Hosting server. Files are served over an SSL connection from the closest edge server on Google’s global CDN.

In addition to static content hosting, Firebase Hosting offers lightweight configuration options for you to be able to build sophisticated Progressive Web Apps. You can easily rewrite URLs for client-side routing or set up custom headers.
Once you’re ready to take a site to production, you can connect your own domain name to Firebase Hosting. Firebase automatically provisions an SSL certificate for your domain so all your content is served securely.

Test Lab

Firebase Test Lab for Android runs tests against a test matrix that you create to validate your game across a range of device types and device configurations. To understand how this works, we first need to explain test dimensions and test executions.

  • Test Dimension. A test dimension is a set of related device attributes. The dimensions used by Test Lab are model, Android API level, locale, and screen orientation.
  • Test Execution. Each valid combination of test dimensions that you select for your test matrix is a test execution. Test Lab supports testing your game on up to 200 unique combinations at a time. You can select the specific model and Android API level combinations to use when testing your game to focus your testing; for example, when you are validating a bug fix. Each test execution can either pass or fail. If one test execution fails, the whole test matrix is marked as failed.
  • Test Matrix. The test matrix is the set of test executions that you select. When you run your game test on a test matrix, you get test results for each valid test execution created by combining test dimension attributes.

Automating game testing is challenging because of the wide range of UI frameworks used for game development (some of which are engine-dependent), and the difficulties of automating UI navigation in games. To support game app testing, Test Lab now includes support for using a “demo mode” where the game app runs while simulating the actions of a player. This mode can include multiple loops (or scenarios).

To use the game loop test in Test Lab, your game must be modified to do the following:

  1. Launch the loop
  2. Run the loop
  3. Close the game app

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki102.png

You should call function Firebase Test Lab Get Game Loop Scenario when your game is launched (for example in Event BeginPlay in the main level). You can then implement your game loop (or multiple loops) based on provided Game Loop Scenario. For example, game loops can be used to:

  • Run a level of your game the same way an end user would play it. You can either script the input of the player, let the player idle, or replace the user with an AI if it makes sense in your game (for example, if you already have an AI implemented, like in a car racing game, and you can easily put an AI driver in charge of the player’s input).
  • Run your game at the highest quality setting to see if devices support it.
  • Run a technical test (compile multiple shaders, execute them, check that the output is as expected, etc).

At any point in your test where you want to take a screenshot, call the Firebase Test Lab Take Screenshot method, where the argument is a label that you use to identify the screenshot (TestLabel is used in the example). After your test has completed, you can compare any screenshots taken during testing by selecting an element in the test results tree and then clicking the View Screenshots option.

You can also support multiple game loops in your game app. For example, if you have multiple levels in your game, you might want to have one game loop to launch each level instead of having one loop that iterates through all of them.

That way, if your game crashes on level 32 you can directly launch that game loop to try and reproduce the crash and to test bug fixes.

For example, if you have 5 game loops in your game go to Project Settings -> Ultimate Mobile Kit -> Firebase Test Lab and set Number Of Game Loops to 5.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki104.png

Then, when you launch Test Lab Test Loop Manager, you can select which loop to launch. If you select multiple loops to launch, it launches each loop in sequence after the preceding loop completes. In each loop you can call Firebase Test Lab Get Game Loop Scenario and get current Scenario (Loop Number) in order to make actions based on this. Scenario parameter is in the range of 1 to the maximum number of loops supported.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Wiki103.png

At the end of your test you should close the game using Firebase Test Lab Finish Test.

Generally, the game loop test allows the UI framework to start the next loop. If you do not close the game, the UI framework running your loops won’t know that the test has finished, and may terminate the game after some time has passed.

https://gamednastudio.com/plugins/images/UltimateMobileKit/Update21.png

The next big update for Ultimate Mobile Kit Firebase!

We are crazy! After 10 days of previous big update we released another one! Many improvements, bugfixes, Google Play Games authentication, Sign In With Google, and four new Firebase modules: Test Lab, Predictions (Machine Learning), A/B Testing, and Cloud Functions.

CHANGELOG:

  • Added support for Google Play Games authentication. Your players can login now to Firebase using Google Play Games.
  • Added new login method: Sign In With Google. Useful for obtaining Id Token and Auth Server Code for login with Google Account and Google Play Games.
  • Added Firebase Test Lab module. Test your games on physical and virtual devices hosted by Google that allow you to run tests that simulate actual usage environments.
  • Added support for Firebase Predictions (Machine Learning). Use the power of Google’s machine learning to create dynamic user groups based on players’ predicted behavior.
  • Added support for Firebase A/B Testing. Create experiments to optimize the users experience for a business goal.
  • Added support for Firebase Cloud Functions. Run backend code without managing servers and keep your logic private and secure.
  • Firebase SDK updated to 4.5.0
  • Google Play Services updated to 12.0.1
  • Added MD5 Hash to the Firebase Storage Metadata
  • Added support for accessing user metadata.
  • Added Phone Number to the user info.
  • Added a link URL to messages sent to users.
  • Added Message Forwarding Service for Firebase Push Notifications.
  • Fixed occasional crash in Firebase Get File and Firebase Put File on IOS.
  • Fixed a problem with updating user’s Display Name.
  • Fixed a problem with not registering multiple parameters in Firebase Analytics Log Event.
  • Fixed calculating FetchTime and ThrottledEndTime in Firebase Remote Config Info.
  • Fixed stability of Firebase Storage Get Metadata and Firebase Storage Update Metadata.
  • Fixed calculating CreationTime, Generation, MetadataGeneration, SizeBytes, and UpdatedTime in Firebase Storage Metadata.
  • Fixed UpdateMetadata when Custom Metadata is empty.
  • Fixed stability of Firebase Storage Reference.
  • Fixed stability of passing parameters to Firebase Send Invite function.
  • Fixed stability of sending messages in Firebase Cloud Messaging.
  • Updated ProGuard rules.
  • Improved overall performance and stability.
  • And other minor bugfixes.

Buy now on Sellfy (20% OFF): Ultimate Mobile Kit Firebase Plugin for UE4 - gameDNA
Buy now on Marketplace: https://www.unrealengine.com/marketp…e-kit-firebase

We are developing a mobile app and rely on Firebase deeply in our product.
Just wanted to give a big thumbs up to the guys at studio - you are doing an amazing job!
Definitely one of the best and most useful plugins by far - a must for mobile apps.

Keep up with the awesome and personal support - thanks again!

Thank you very much for this kind of words! Good luck with your app! :smiley:

Ultimate Mobile Kit 1.8.1 for UE 4.19 released!

We’ve just released plugin binaries for Unreal Engine 4.19.
You can download it from GitHub repository on releases tab or your Sellfy dashboard (for Sellfy customers). Update also was submitted for UE4 Marketplace but it needs to wait for approval.

CHANGELOG:

  • Implemented changes for new GDPR law in European Union (General Data Protection Regulation)
  • Google Play Services updated to 15.0.1
  • Firebase SDK for Android updated to 15.0.1
  • Firebase SDK for IOS updated to 5.0.1

If you haven’t owned it yet, you can buy now on Sellfy or UE4 Marketplace.