如何在没有明确注册的情况下在Unity中识别移动用户

时间:2018-09-12 13:38:15

标签: c# unity3d

首先,我已经在论坛上搜索了大约一年的可行解决方案。我正在寻找一种通过未链接到设备的ID识别移动用户的方法。

所以没有SystemInfo.deviceUniqueIdentifier

我想用用户的Google帐户(Android)或Apple帐户(iOS)识别用户。

到目前为止,我一直在尝试通过GooglePlayGames API连接该应用程序。它已成功连接,并且工作正常。启动应用程序时,它将自动登录,并在我的数据库中检索并存储googleId。 但是,这里的缺点是该应用程序现在依赖于GooglePlayGames,这是我不喜欢的。我不喜欢其他应用程序的显式依赖。而且我还需要找到适合iOS的等效产品。

我还没有实施Unity IAP来启用应用内购买。我找不到有关如何将交易链接到android / iOS上的用户的任何信息。有没有办法在交易期间检索/存储任何与用户相关的ID?

在我看来,例如在进行应用内购买时,您需要某种方式来补偿/重新激活用户在切换电话时所进行的购买。

最佳情况是一种无需依赖Unity IAP即可轻松存储ID的简便方法,以便免费用户也可以轻松地恢复其帐户。

2 个答案:

答案 0 :(得分:1)

对于iOS,您需要实现Apple Game Center

文档使它看起来非常简单,看起来像一个函数调用,如果尚未登录,则将提示用户登录。

此后应与Google Play商店API相同。

答案 1 :(得分:1)

您可以使用Mac地址。这对于每个设备都是唯一的。

string GetMacAddress()
{
    string reesult = "";
    foreach (NetworkInterface ninf in NetworkInterface.GetAllNetworkInterfaces())
    {
        if (ninf.NetworkInterfaceType != NetworkInterfaceType.Ethernet) continue;
        if (ninf.OperationalStatus == OperationalStatus.Up)
        {
            reesult += ninf.GetPhysicalAddress().ToString();
            break;
        }
    }
    return reesult;
}

现在,如果设备越狱或被篡改,则可以伪造Mac地址或临时更改Mac地址。

  

SystemInfo.deviceUniqueIdentifier不是100%可靠的,尤其是不是   在IOS上。此外,如果他与我失去联系,   切换设备。

您可以使用Unity的SocialPlatforms API来检查用户是否已登录,然后获取用户ID。您可以用来确定任何设备上的用户。

Social.localUser.Authenticate(success =>
{
    if (success)
    {
        Debug.Log("Authentication successful");

        string userInfo = Social.localUser.id;

        Debug.Log(userInfo);
    }
    else
        Debug.Log("Authentication failed");
});

如果您确实需要对用户的更多控制,则应实施自己的基于令牌的身份验证,例如 oauth2 。如果您具有PHP和MySQL的背景,那么真正做一个人并不难。