Get Started with Firebase Invites for Unity

To write your cross-platform Firebase Invites client app with Unity, use the Firebase Invites API.

Before you begin

Before you can use the Firebase Invites, you need to create a Firebase project and add the Firebase Unity SDK packages to your Unity project.

Setup:

Prerequisites

Android

iOS

  • Unity 5.0 or later
  • Xcode 7.0 or later

If you don't have a Unity project already, you can download one of our quickstart samples and experiment with a specific Firebase feature. If you're using a quickstart, remember to get the bundle identifier from the project settings; you need it for the next step.

Set up your app in the Firebase console

To add Firebase to your app, you need a Firebase project and a Firebase configuration file for your app.

Create a Firebase project in the Firebase console if you don't already have one. If you already have an existing Google project associated with your mobile app, click Import Google Project. Otherwise, click Create New Project.

Android

  1. Click Add Firebase to your Android app and follow the setup steps. If you're importing an existing Google project, this may happen automatically and you can just download the config file.
  2. When prompted, enter your app's package name. It's important to enter the package name your app is using; this can only be set when you add an app to your Firebase project.
  3. Download a google-services.json file when instructed. You can redownload this file again at any time.
  4. Copy this file to anywhere inside your project's assets folder.

IOs

  1. Click Add Firebase to your iOS app and follow the setup steps. If you're importing an existing Google project, this may happen automatically and you can just download the config file.
  2. When prompted, enter your app's bundle ID. It's important to enter the bundle ID your app is using; this can only be set when you add an app to your Firebase project.
  3. Download a GoogleService-Info.plist file when instructed. You can redownload this file again at any time.
  4. Add the GoogleService-Info.plist file to the project.

  5. Drag the GoogleService-Info.plist downloaded from the Firebase console into any folder in the Unity project.

Add the Firebase Unity SDK to your app

  1. Download the Firebase Unity SDK.
  2. Select the Assets > Import Package > Custom Package menu item.
  3. Import the FirebaseInvites.unitypackage package from the Firebase Unity SDK, downloaded previously.
  4. When the Import Unity Package window appears, click the Import button.

Build your app

Android

  1. Select the File > Build Settings menu option.
  2. Select Android in the Platform list.
  3. Click Switch Platform to select Android as the target platform.
  4. Wait for the spinner (compiling) icon in the bottom right corner of the Unity status bar to stop.
  5. Click Build and Run.

iOS

  1. Select the File > Build Settings menu option.
  2. Select iOS in the Platform list.
  3. Click Switch Platform to select iOS as the target platform.
  4. Wait for the spinner (compiling) icon in the bottom right corner of the Unity status bar to stop.
  5. Click Build and Run.

Sending invitations

Configure the invitation

Create a new Invite object to configure the invitation:

var invite = new Firebase.Invites.Invite() {
    TitleText = "Invites Test App",
    MessageText = "Please try my app! It's awesome.",
    CallToActionText = "Download it for FREE",
    DeepLinkUrl = "http://google.com/abc"
}

See here for the full list of invitation settings.

For more information on customizing invitations, see Firebase Invites: Best Practices.

Send the invitation

When you are ready to display the invitation, call SendInviteAsync():

FirebaseInvites.SendInviteAsync(invite);

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

SendInviteAsync() returns immediately and displays the UI asynchronously. It returns its results via a System.Threading.Tasks.Task, which you can query to find out whether the invitation was sent and determine when the UI is no longer on screen, or you can use its ContinueWith method to trigger code automatically when it completes.

Here is an example of sending an invite, and reading the results:

public void SendInvite() {
  Debug.Log("Sending an invitation...");
  var invite = new Firebase.Invites.Invite() {
    TitleText = "Invites Test App",
    MessageText = "Please try my app! It's awesome.",
    CallToActionText = "Download it for FREE",
    DeepLinkUrl = "http://google.com/abc"
  }
  Firebase.Invites.FirebaseInvites
    .SendInviteAsync(invite).ContinueWith(HandleSentInvite);
}

void HandleSentInvite(Task< Firebase.Invites.SendInviteResult > sendTask) {
  if (sendTask.IsCanceled) {
    Debug.Log("Invitation canceled.");
  } else if (sendTask.IsFaulted) {
    Debug.Log("Invitation encountered an error:");
    Debug.Log(sendTask.Exception.ToString());
  } else if (sendTask.IsCompleted) {
    int inviteCount = (new List(sendTask.Result.InvitationIds)).Count;
    Debug.Log("SendInvite: " + inviteCount + " invites sent successfully.");
    foreach (string id in sendTask.Result.InvitationIds) {
      Debug.Log("SendInvite: Invite code: " + id);
    }
  }
}

Cross-platform invitations

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

If you have more than one application on each platform, you can set AndroidPlatformClientId or IOSPlatformClientId, passing in the Firebase client ID of the application on the alternate platform.

Receiving invitations

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

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

Register for receiving incoming invitation

To check for invites, you need to register for the InviteReceived event.

void Start() {
    Firebase.Invites.FirebaseInvites.InviteReceived += OnInviteReceived;
    Firebase.Invites.FirebaseInvites.InviteNotReceived += OnInviteNotReceived;
    Firebase.Invites.FirebaseInvites.ErrorReceived += OnErrorReceived;
}

void OnInviteReceived(object sender,
                      Firebase.Invites.InviteReceivedEventArgs e) {
  if (e.InvitationId != "") {
    Debug.Log("Invite received: Invitation ID: " + e.InvitationId);
    Firebase.Invites.FirebaseInvites.ConvertInvitationAsync(
        e.InvitationId).ContinueWith(HandleConversionResult);
  }
  if (e.DeepLink.ToString() != "") {
    Debug.Log("Invite received: Deep Link: " + e.DeepLink);
  }
}

void OnInviteNotReceived(object sender, System.EventArgs e) {
  Debug.Log("No Invite or Deep Link received on start up");
}

void OnErrorReceived(object sender,
                     Firebase.Invites.InviteErrorReceivedEventArgs e) {
  Debug.LogError("Error occurred received the invite: " + e.ErrorMessage);
}

Send feedback about...

Need help? Visit our support page.