ios 为每个用户生成唯一ID

de90aj5v  于 2022-12-20  发布在  iOS
关注(0)|答案(5)|浏览(234)

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

    • 用户名要求:**

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

    • 我有以下问题:**

1.是否有其他方法生成用户ID(符合上述要求)?
1.从用户那里获取任何信息来创建唯一标识符的常见方法是什么?
1.是否有任何第三方插件来实现用户ID?
我将感谢任何关于这一主题的建议和想法。

    • 编辑:**

有很多响应使用UUID/GUID。一般来说,这种方法看起来不错,但我正在寻找一个解决方案,可以生成相同的用户ID,即使用户重新安装游戏。

ktecyv1j

ktecyv1j1#

你看过Java中的UUID吗?
https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html
编辑:以下链接可能有助于使用UUID作为唯一标识符。
权限和标识符的最佳做法
Instance ID

x7rlezfr

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

bxgwgixi

bxgwgixi3#

根据我的意见,您的系统当前时间是生成唯一用户ID的最佳方法。
对于安卓系统:System.currentTimeMillis()返回唯一的13位数字,可用作用户ID。
但是当你在iOS中获得当前时间时,它是10位数生成的。所以你可以 * 乘以1000* 使用户ID平台无关。

  • 快乐编程 *
wbrvyc0a

wbrvyc0a4#

假设你的用户名是唯一的,你可以简单地把你的用户名用md5哈希来得到一个唯一的ID(字符串).例如在php中:

$userID = md5($username);

因为m5散列函数存在于几乎每一种编程语言中,所以你应该能够在所有可能的平台上使用这个ID。
如果你正在寻找一个数字ID,你甚至可以从md5计算出一个唯一的数字。
有关详细信息,请参见represent md5-hash as an integer- stack问题

eoigrqb6

eoigrqb65#

只生成一个长的随机字符串。例如,生成一个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();
}

相关问题