我正在开发一个跨平台游戏,我需要为每个用户生成唯一标识符(用户ID)。我知道某些平台(Android或iOS)特定方法来获取与设备相关的标识符,但我正在寻找一种独立于设备标识符的解决方案。
用户ID要求:
我已经实现了一种方法来创建用户ID,我在第一次在设备上启动游戏时存储系统时间。
我有以下问题:
我很感激有关此主题的任何建议和想法。
修改
有很多回复要使用 UUID / GUID 。通常,这种方法看起来很好,但我正在寻找一种解决方案,即使用户重新安装游戏,也可以生成相同的用户ID。
答案 0 :(得分:3)
你看过Java的UUID吗?
https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html
编辑:以下链接可能有助于将UUID用于唯一标识符。
答案 1 :(得分:1)
当您说用户ID时,您是在谈论公共ID,例如用户名还是数据库ID?
如果您正在谈论数据库ID,请转到GUID / UUID。例如,T-sql具有NEWID()方法,该方法将返回尚未存在于数据库中的GUID。我相信你找到的数据库会找到一些使用GUID的方法。
https://docs.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql
答案 2 :(得分:0)
根据我的观点,您的系统当前时间是生成唯一用户ID的最佳方法。
对于Android: System.currentTimeMillis()会返回唯一的 13位数字,可用作用户ID。
但是当您在iOS中获得当前时间时,它会生成 10位数。因此,您可以将其乘以1000 ,以使用户ID平台独立。
快乐编码......
答案 3 :(得分:-1)
只需生成一长串随机字符。例如,生成一串10长的字母数字......
private String GetId(){
String[] chars = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"};
StringBuilder s = new StringBuilder(10);
for(int i = 0;i<10;i++){
int pos = (int) (Math.random() * 62);
String c = "";
if (pos > chars.length-1){
pos = pos - chars.length;
c = chars[pos].toUpperCase();
}else{
c = chars[pos];
}
s.append(c);
}
return s.toString();
}