콘솔로 이동

Unity용 Firebase 초대 시작하기

Unity로 교차 플랫폼 Firebase 초대 클라이언트 앱을 개발하려면 Firebase Invites API를 사용합니다.

시작하기 전에

Firebase 초대를 사용하려면 먼저 다음 작업을 해야 합니다.

  • Unity 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.

    • Unity 프로젝트에서 현재 Firebase를 사용하고 있다면 이미 등록되어 Firebase용으로 구성된 것입니다.

    • Unity 프로젝트가 없는 경우 샘플 앱을 다운로드할 수 있습니다.

  • Firebase Unity SDK(특히 FirebaseInvites.unitypackage)를 Unity 프로젝트에 추가합니다.

Unity 프로젝트에 Firebase를 추가할 때 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 초대: 권장사항을 참조하세요.

초대 보내기

초대를 표시할 준비가 되면 SendInviteAsync()를 호출합니다.

FirebaseInvites.SendInviteAsync(invite);

이렇게 하면 초대 클라이언트 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 Console의 프로젝트에 각 플랫폼용 애플리케이션이 정확히 하나씩 포함되어 있으면 Firebase 초대는 자동으로 애플리케이션을 서로 연결합니다. 예를 들어 Android 사용자가 보낸 초대를 iOS 사용자가 클릭하면 해당 플랫폼에서 앱을 설치할 수 있는 올바른 위치로 이동합니다.

각 플랫폼에 애플리케이션이 2개 이상 있으면 AndroidPlatformClientId 또는 IOSPlatformClientId를 설정하고 다른 플랫폼에 있는 애플리케이션의 Firebase 클라이언트 ID를 전달할 수 있습니다.

초대 받기

초대를 수신한 사용자가 앱을 아직 설치하지 않았다면 사용자가 해당 플랫폼의 앱 스토어에서 앱을 설치할 수 있습니다.

앱이 새로 설치된 후 또는 앱이 이미 설치된 경우 앱이 시작되고, 콘텐츠를 가리키는 URL을 전송한 경우 URL이 수신됩니다. 또한 초대 ID도 수신되며, 이 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);
}