我正在开发一款跨平台游戏,需要为每个用户生成唯一标识符(用户ID)。我知道一些平台(Android或iOS)特定的方法来获取设备相关标识符,但我正在寻找一种独立于设备标识符的解决方案。
- 用户名要求:**
1.独立于设备的平台
1.离线实施(不与任何服务器通信)
1.无注册流程
我已经实现了一种创建用户ID的方法,当游戏第一次在设备上启动时,我在其中存储系统时间。
- 我有以下问题:**
1.是否有其他方法生成用户ID(符合上述要求)?
1.从用户那里获取任何信息来创建唯一标识符的常见方法是什么?
1.是否有任何第三方插件来实现用户ID?
我将感谢任何关于这一主题的建议和想法。
- 编辑:**
有很多响应使用UUID/GUID。一般来说,这种方法看起来不错,但我正在寻找一个解决方案,可以生成相同的用户ID,即使用户重新安装游戏。
5条答案
按热度按时间ktecyv1j1#
你看过Java中的UUID吗?
https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html
编辑:以下链接可能有助于使用UUID作为唯一标识符。
权限和标识符的最佳做法
Instance ID
x7rlezfr2#
当你说用户id时,你是在说一个公共id,比如用户名,还是数据库id?
如果你在谈论一个数据库id,那么选择一个GUID/UUID。例如,T-sql有一个NEWID()方法,它将返回一个在数据库中还不存在的GUID。我相信无论你选择哪个数据库,你都会找到一些使用GUID的方法。
https://learn.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql
bxgwgixi3#
根据我的意见,您的系统当前时间是生成唯一用户ID的最佳方法。
对于安卓系统:System.currentTimeMillis()返回唯一的13位数字,可用作用户ID。
但是当你在iOS中获得当前时间时,它是10位数生成的。所以你可以 * 乘以1000* 使用户ID平台无关。
wbrvyc0a4#
假设你的用户名是唯一的,你可以简单地把你的用户名用md5哈希来得到一个唯一的ID(字符串).例如在php中:
因为m5散列函数存在于几乎每一种编程语言中,所以你应该能够在所有可能的平台上使用这个ID。
如果你正在寻找一个数字ID,你甚至可以从md5计算出一个唯一的数字。
有关详细信息,请参见represent md5-hash as an integer- stack问题
eoigrqb65#
只生成一个长的随机字符串。例如,生成一个10长的字母数字字符串...