firebase - Unity Firebase 自动创建匿名帐户
问题描述
在这里寻求一些想法。当有人第一次启动我的手机游戏时,我宁愿他们先进入游戏,而不必担心“注册”。
我认为这提供了更好的用户体验,因为您可以立即进入游戏。Firebase 支持匿名帐户并保存匿名帐户的进度,这些帐户稍后可以转换为实际帐户(例如,将他们的 google 或 facebook 帐户链接到他们的匿名帐户),同时保留他们的游戏进度。
有没有人对这种方法有任何想法,或者强制用户在应用程序启动时决定在创建匿名帐户或使用谷歌/脸书/电子邮件/等注册之间做出选择是否更好?
干杯凯文
解决方案
这实际上与它经常向使用 Firebase 的 Web 开发人员推销的用例非常相似:对于购物应用程序,您通常会让开发人员完成购物流程并完成结帐。结帐完成后,您然后将他们的帐户“提升”为完整帐户,这样您就不会在关键流程中将客户拒之门外。
对于一款游戏,我不仅喜欢这种匿名帐户流程(现在玩,然后“升级”以获得您需要的任何社交功能),而且我认为您可以获得一个非常酷的自然流程。例如,如果您正在玩井字游戏,您可以使用动态链接来邀请您的朋友与您对战。此链接通常会在应用程序安装过程中持续存在(iOS 和 Android,尽管在 iOS 上有点不稳定),因此您邀请的玩家可以直接进入您正在玩的游戏,使用匿名身份验证无缝创建帐户。
但是,您需要考虑两个因素:
如果您将实时数据库与匿名帐户配对,您仍在存储用户数据。我不是律师,但如果您所在地区有严格的隐私法规,您会想和律师谈谈。
将匿名帐户合并到“完整”帐户过程中确实有一些重要的边缘情况。如果玩家已经拥有完整帐户,您会怎么做(显然,您必须合并数据。但您必须手动完成,因为 Firebase 没有与游戏无关的方式为您完成)?如果在您推广帐户时其他用户声明了相同的电子邮件地址,您会怎么做(您需要扔掉一个,并且有规则可以解决哪个对名称有更强的声明)?
Firebase auth SDK的当前架构也有点复杂。所有 C# 对象都是指向 C++ 对象的指针。“当前用户”的绑定方式是它引用 C++ 端代表用户数据的全局单例。这有一个不幸的副作用,如果用户在“升级”帐户时错误地输入了他们的凭据(通常表现为必须重新输入用户名/密码和可能会丢失缓存的数据)。正在积极跟踪此错误(我相信这是此错误的副作用),但在短期内,这只是意味着您可能想要一种重新上传本地数据的好方法(假设您一旦删除匿名帐户就会失去对 DB 节点的访问权限),或者您希望避免持久化在将玩家迁移到“完整”帐户之前的任何用户特定数据(无论如何,我可能会考虑当前的隐私法规)。
推荐阅读
- python - 使用 Selenium 从网站中抓取文本
- android - Firebase Analytics 未显示 iOS 应用的用户参与度
- r - 如何使用 dim(x) 修复 fitafirma 错误?
- vega - Vega-lite 图表,用于具有动态 timeUnit 分箱的可缩放时间线直方图
- flutter - 在颤振中为表单域和控制器构建一个包装器小部件
- elasticsearch - Filebeat 未将日志转发到 AWS 中的 Elasticsearch 服务
- bash - 当使用 sigint 检测到 ctrl c 时,需要从头开始重新启动我的脚本
- elasticsearch - 消息在索引中,但无法显示在搜索查询中
- linux - 如何将命令输出存储在变量中而不仅仅是一行?
- python - 升级后 Python pip 模块无法正常工作