首先,我已经在论坛上搜索了大约一年的可行解决方案。我正在寻找一种通过未链接到设备的ID识别移动用户的方法。
所以没有SystemInfo.deviceUniqueIdentifier
我想用用户的Google帐户(Android)或Apple帐户(iOS)识别用户。
到目前为止,我一直在尝试通过GooglePlayGames API连接该应用程序。它已成功连接,并且工作正常。启动应用程序时,它将自动登录,并在我的数据库中检索并存储googleId。 但是,这里的缺点是该应用程序现在依赖于GooglePlayGames,这是我不喜欢的。我不喜欢其他应用程序的显式依赖。而且我还需要找到适合iOS的等效产品。
我还没有实施Unity IAP来启用应用内购买。我找不到有关如何将交易链接到android / iOS上的用户的任何信息。有没有办法在交易期间检索/存储任何与用户相关的ID?
在我看来,例如在进行应用内购买时,您需要某种方式来补偿/重新激活用户在切换电话时所进行的购买。
最佳情况是一种无需依赖Unity IAP即可轻松存储ID的简便方法,以便免费用户也可以轻松地恢复其帐户。
答案 0 :(得分:1)
答案 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的背景,那么真正做一个人并不难。