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



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

所以没有SystemInfo.deviceUniqueIdentifier

我的想法是使用用户的Google帐户(Android(或Apple帐户(iOS(来识别用户。

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

我尚未实施 Unity IAP 以启用应用程序购买。我找不到有关交易如何链接到安卓/iOS用户的任何信息。有没有办法在交易过程中检索/存储任何与用户相关的ID?

在我看来,在使用应用程序内购买时,您需要某种方法来报销/重新激活用户在切换手机时进行的购买。

最好的情况是在不依赖Unity IAP的情况下存储ID的简单方法,以便免费游戏用户也可以轻松恢复其帐户。

您可以使用 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地址。

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

您可以使用 Unity 的SocialPlatformsAPI 检查用户是否已登录,然后获取用户 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的背景,自己做一个并不难。

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

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

之后应该与Google Play商店API相同。

相关内容

最新更新