首先,我一直在寻找论坛大约一年的可行解决方案。我正在寻找的是一种通过未链接到设备的ID来识别移动用户的方法。
所以没有SystemInfo.deviceUniqueIdentifier
我的想法是使用用户的Google帐户(Android)或Apple帐户(iOS)识别用户。
到目前为止我尝试过的是通过GooglePlayGames API连接应用程序。它已成功连接并正常工作。它在我启动应用程序时自动登录,并在我的数据库中检索并存储googleId。然而,这里的缺点是应用程序现在依赖于GooglePlayGames,这是我不喜欢的。我不喜欢其他应用程序的显式依赖。我还需要为iOS找到合适的等价物。
我尚未实施Unity IAP以启用应用内购买。我找不到任何有关如何将事务链接到android / 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的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的背景,那么自己制作一个并不是很难。