为每个用户生成唯一ID

时间:2018-02-01 12:38:25

标签: android ios uniqueidentifier

我正在开发一个跨平台游戏,我需要为每个用户生成唯一标识符(用户ID)。我知道某些平台(Android或iOS)特定方法来获取与设备相关的标识符,但我正在寻找一种独立于设备标识符的解决方案。

用户ID要求:

  1. 独立于设备的平台
  2. 离线实施(不与任何服务器通信)
  3. 没有注册过程
  4. 我已经实现了一种方法来创建用户ID,我在第一次在设备上启动游戏时存储系统时间。

    我有以下问题:

    1. 是否有其他方法可以生成用户ID(符合上述要求)?
    2. 通过从用户那里获取任何信息来创建唯一标识符的常用方法是什么?
    3. 是否有任何第三方插件来实现用户ID?
    4. 我很感激有关此主题的任何建议和想法。

      修改

      有很多回复要使用 UUID / GUID 。通常,这种方法看起来很好,但我正在寻找一种解决方案,即使用户重新安装游戏,也可以生成相同的用户ID。

4 个答案:

答案 0 :(得分:3)

你看过Java的UUID吗?

https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html

编辑:以下链接可能有助于将UUID用于唯一标识符。

Best practices for permissions & Identifiers

Instance ID

答案 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();
}