要使用 Unity 编写跨平台 Firebase 邀请客户端应用,请使用 Firebase Invites API。
准备工作
在使用 Firebase 邀请之前,您需要:
注册 Unity 项目并将其配置为使用 Firebase。
如果您的 Unity 项目已在使用 Firebase,那么您就已注册该 Unity 项目并已将其配置为使用 Firebase。
如果您没有 Unity 项目,则可以下载示例应用。
将 Firebase Unity SDK(具体而言是
FirebaseInvites.unitypackage
)添加到您的 Unity 项目。
请注意,将 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 邀请最佳做法。
发送邀请
当您准备好显示邀请时,调用 SendInviteAsync()
:
FirebaseInvites.SendInviteAsync(invite);
这将显示邀请客户端界面,允许用户选择收件人和修改消息(如果需要)。此界面将一直显示在屏幕上,直到用户选择发送邀请或取消发送。
SendInviteAsync()
会立即返回并异步显示此界面。结果是通过 System.Threading.Tasks.Task
,您可以通过查询该任务来查明邀请是否已发送,并确定界面何时不再显示在屏幕上,也可以使用其 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 控制台中的项目对于每个平台恰好包含一个应用,则 Firebase 邀请会自动将应用与相应平台关联,例如,若 iOS 用户点击了由 Android 用户发送的邀请,则前者将被引导至适当位置,并在相应平台安装您的应用。
如果每个平台对应有多个应用,则可以设置 AndroidPlatformClientId
或 IOSPlatformClientId
,并传入相应平台上的应用的 Firebase 客户端 ID。
接收邀请
收到邀请后,如果用户尚未安装您的应用,可以选择从自己所用平台的应用商店中下载并安装您的应用。
在用户安装您的应用后(或如果用户已安装您的应用),应用会启动并接收内容网址(如果您已发送)。应用还会接收邀请 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); }