Firebase Invites for Unity を使ってみる

クロスプラットフォームの Firebase Invites クライアント アプリを Unity で記述するには、Firebase Invites API を使用します。

始める前に

Firebase Invites を使用するには、あらかじめ次の作業が必要です。

  • Firebase を使用するように Unity プロジェクトを登録して構成する。

    • Unity プロジェクトですでに Firebase を使用している場合、この登録と構成はすでに行われています。

    • Unity プロジェクトがない場合は、サンプルアプリをダウンロードできます。

  • Unity プロジェクトに Firebase Unity SDK(具体的には FirebaseInvites.unitypackage)を追加する。

Firebase を Unity プロジェクトに追加するには、Firebase コンソールと開いている Unity プロジェクトの両方でタスクを行う必要があります(コンソールから Firebase 構成ファイルをダウンロードし、それを Unity プロジェクトに移動するなど)。

招待を送信する

招待を構成する

招待を構成するための新しい Invite オブジェクトを作成します。

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: おすすめの方法をご覧ください。

招待を送信する

招待を表示する準備ができたら、SendInviteAsync() を呼び出します。

FirebaseInvites.SendInviteAsync(invite);

Invites クライアント UI が表示され、ここでユーザーは受信者を選択したり、必要に応じてメッセージを変更したりできます。この UI は、ユーザーが招待を送信するかキャンセルするまで、画面に表示されたままになります。

SendInviteAsync() の結果がすぐに返され、UI が非同期的に表示されます。結果は System.Threading.Tasks.Task を通して返されます。これにより、招待が送られたかどうか確認し、UI を画面から消すタイミングを決定できます。また、ContinueWith メソッドを使用して、完了時にコードを自動的にトリガーすることもできます。

次に、招待を送信して結果を読み取る例を示します。

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);
    }
  }
}

クロスプラットフォームの招待

Firebase コンソールのプロジェクトに含まれているアプリケーションがプラットフォームごとに 1 つだけの場合、Firebase Invites は自動的にそれらのアプリケーションを相互に関連付けるので、たとえば iOS ユーザーが Android ユーザーから送信された招待状をクリックすると、ユーザーのプラットフォームに応じて適切な場所に誘導され、アプリをインストールできます。

プラットフォームごとにアプリケーションが複数ある場合は、AndroidPlatformClientId または IOSPlatformClientId を設定し、別のプラットフォームのアプリケーションの Firebase クライアント ID を渡すことができます。

招待を受信する

ユーザーが招待を受信したときにまだアプリをインストールしていない場合、ユーザーは自分のプラットフォームのアプリストアからアプリをインストールすることを選択できます。

アプリをインストールした後、またはアプリがすでにインストール済みである場合、アプリが起動して、アプリのコンテンツの URL が送信された場合はその URL を受信します。アプリは、招待 ID も受信します。これは送信側の招待 ID と一致します。

着信招待の受信を登録する

招待の有無をチェックするには、InviteReceived イベントに登録する必要があります。

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);
}

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。