将Android用户唯一标识到服务器的最佳方法是什么?

What's the best way to uniquely identify Android users to a server?

我应该如何识别服务器的Android用户。
我应该获得IMSI号码和一些腌制算法吗?
考虑到机器人的空间和性能限制是否有一个不太重的库我可以用来进行计算?


我认为你无法识别没有任何帐户的用户。其他一切都不可靠或只是设备识别。为什么不为您的服务器提供自己的注册服务,因此您可以为每个用户提供唯一的ID。

另一种选择可能是绑定到设备的Google帐户?或者这会让你瞄准目标受众吗?但是,如果您正在构建一个扩展某种Google工具,应用程序或其他任何内容的应用程序,那么用户就已拥有Google帐户,因此您的应用也可以使用它来识别用户。


正如developer.android所述:

应用程序通常尝试使用以下三种技术之一来记住用户:

  • 要求用户输入用户名
  • 检索唯一的设备ID以记住设备
  • 从AccountManager中检索内置帐户
  • 选项(1)是有问题的。首先,要求用户在输入您的应用程序之前键入内容会自动使您的应用程序不那么吸引人。其次,无法保证所选用户名是唯一的。

    选项(2)对于用户来说不那么繁重,但是要做到正确是很棘手的。更重要的是,它只允许您在一台设备上记住用户。想象一下升级到闪亮的新设备的人的沮丧情绪,却发现你的应用程序不再记得它们。

    选项(3)是首选技术。帐户管理器允许您获取有关用户设备上存储的帐户的信息。正如我们在本课中所看到的,使用帐户管理器可以让您记住您的用户,无论用户拥有多少设备,只需在UI中添加几个额外的点击即可。


    要识别用户,我认为使用Google帐户是最佳选择,请参阅答案
    生成特定于设备的序列号

    如果您只想识别应用程序的实例,那么为什么不让服务器分发ID:s?

    当你的应用程序启动时,获取SharedPreferences并检查"myid"是否有值,如果没有,则从服务器请求一个ID,你在SharedPreferences中存储为"myid"。此ID将在应用更新后生效(但不能卸载/重新安装)。

    在服务器端,存储所有已注册的ID,并确保您的服务器分发唯一的ID。通过这种方式,恶意攻击您的服务器的人无法使用该ID来识别您的用户;)


    在几个月内会有更多的用户拥有Android手机和Android平板电脑,所以如果你想在多个设备上跟踪用户,我认为最好使用OAuth。