Firebase Invites for Unity を使ってみる

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

準備

Firebase Invites を使用するには、その前に Firebase プロジェクトを作成して、Firebase Unity SDK パッケージを Unity プロジェクトに追加する必要があります。

設定:

事前準備

Android

iOS

  • Unity 5.0 以降
  • Xcode 7.0 以降

Unity プロジェクトをまだ用意していない場合は、いずれかのクイックスタート サンプルをダウンロードし、特定の Firebase 機能をお試しいただけます。 クイックスタートを使用する場合は、次のステップでバンドル識別子が必要になるため、プロジェクト設定からバンドル識別子を忘れずに取得してください。

Firebase コンソールでアプリを設定する

アプリに Firebase を追加するには、Firebase プロジェクトと、アプリ用の Firebase 設定ファイルが必要です。

Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[Google プロジェクトをインポート] をクリックします。それ以外の場合は、[新規プロジェクトを作成] をクリックします。

Android

  1. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  2. プロンプトが表示されたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 指示されたら google-services.json ファイルをダウンロードします。このファイルはいつでも再ダウンロードできます。
  4. このファイルを、プロジェクトのアセット フォルダ内の任意の場所にコピーします。

iOS 版

  1. [iOS アプリに Firebase を追加] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのバンドル ID を入力してください。必ずアプリで使用しているバンドル ID を入力してください。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 指示されたら GoogleService-Info.plist ファイルをダウンロードします。このファイルはいつでも再ダウンロードできます。
  4. プロジェクトに GoogleService-Info.plist ファイルを追加します。

  5. Firebase コンソールからダウンロードした GoogleService-Info.plist を、Unity プロジェクトの任意のフォルダにドラッグします。

アプリに Firebase Unity SDK を追加する

  1. Firebase Unity SDK をダウンロードします。
  2. [Assets] > [Import Package] > [Custom Package] メニュー項目を選択します。
  3. 以前にダウンロードした Firebase Unity SDK から FirebaseInvites.unitypackage パッケージをインポートします。
  4. [Import Unity Package] ウィンドウが表示されたら、[Import] ボタンをクリックします。

アプリをビルドする

Android

  1. [File] > [Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [Android] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [Android] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

iOS

  1. [File] > [Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [iOS] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [iOS] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

招待を送信する

招待を設定する

招待を設定するための新しい 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 のサポートページをご覧ください。