C# 在不同的Android设备上识别相同的用户
我正在制作一个Unity游戏,玩家在其中建造一座城市,用户的进化数据保存在服务器上。 考虑到这一点,我需要检测玩家何时连接到不同的设备,为他提供自己的城市(而不是新城市)。实现这一点的最佳方法是什么?如果可能的话,不需要玩家的操作,比如单击登录按钮或接受权限 目前我只为Android开发,我的理解是,我需要应用程序为服务器提供一个令牌id,它可以验证(并检索相关的玩家id)。我该怎么做?我正在尝试使用Google Play Games(Unity插件),但它似乎有很多我不需要的功能。除此之外,可能是由于这些功能,在我的第一次尝试中,我向用户请求了以下权限:C# 在不同的Android设备上识别相同的用户,c#,android,unity3d,device,gnupg,C#,Android,Unity3d,Device,Gnupg,我正在制作一个Unity游戏,玩家在其中建造一座城市,用户的进化数据保存在服务器上。 考虑到这一点,我需要检测玩家何时连接到不同的设备,为他提供自己的城市(而不是新城市)。实现这一点的最佳方法是什么?如果可能的话,不需要玩家的操作,比如单击登录按钮或接受权限 目前我只为Android开发,我的理解是,我需要应用程序为服务器提供一个令牌id,它可以验证(并检索相关的玩家id)。我该怎么做?我正在尝试使用Google Play Games(Unity插件),但它似乎有很多我不需要的功能。除此之外,可
- 知道你在谷歌上是谁吗
- 管理此游戏的游戏活动
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
通过这样做,您将避免仅为此使用Google Play Games插件。谢谢您的详细回答。这样,我如何保证从服务器上的应用程序接收的数据的准确性?假设有人创建了一个脚本,尝试使用不同的帐户名,幸运的是得到了一个有效的帐户名。上次我检查时,该数组中返回的第一个帐户链接到android market,它需要用户名和密码,这意味着使用第一个项目是安全的。我不知道从那以后情况是否有所改变。我建议您在使用之前先进行测试和验证。在我之前的回答中,可能我没有正确解释,但我需要验证服务器上接收到的用户标识数据。否则,一个玩家可以操纵数据,从另一个玩家那里获得城市。按照Google开发者网站()上的建议,我们不应该接受普通用户ID,因此我将使用TokenId方法(使用用于Unity的Google Play Games插件)。尽管如此,我还是感谢你的回答,谢谢!
string[] getAllEmailAccounts()
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass ACManager = new AndroidJavaClass("android.accounts.AccountManager");
AndroidJavaObject ACManagerAct = ACManager.CallStatic<AndroidJavaObject>("get", currentActivity);
AndroidJavaObject accounts = ACManagerAct.Call<AndroidJavaObject>("getAccountsByType", "com.google");
AndroidJavaObject[] accountArray = AndroidJNIHelper.ConvertFromJNIArray<AndroidJavaObject[]>(accounts.GetRawObject());
string[] accountName = new string[accountArray.Length];
for (int i = 0; i < accountName.Length; i++)
{
accountName[i] = accountArray[i].Get<string>("name");
}
return accountName;
}