以最少侵入的方式唯一识别Android用户

如何唯一标识已安装应用的用户,以便:

  • 如果他们删除并重新安装你的应用程序,你会知道它是他们;
  • 如果他们将您的应用安装在他们打算同时使用的第二台设备上,您会知道这是他们吗?
  • 举例来说,我发现Netflix应用程序会自动链接到您的桌面帐户,无需任何用户交互。 我猜他们使用accountManager.getAccounts()或类似的方法,因为他们还需要GET_ACCOUNTS权限。 但当然,该权限被标记为“ Protection level: dangerous 。 是否有任何技术可以做到这一点,侵入性较小或可能令人担忧?


    回答这个问题的关键是简单(对于用户)和微创。 Android提供了很多识别用户的方法,其中很多方法涉及刺激用户的隐私,如果这是唯一的方法,我会做我现在所做的(可选电子邮件注册)。 我只想为我的应用程序提供一种方式,以便知道用户是否已经在系统中进行跨安装注册,而无需采访用户(用户名/密码,电子邮件地址,第三方OAuth等)。

    我的主要原因是:

  • 我不希望重新安装后孤立其内容的用户提供支持请求; 和
  • 我不想托管大量孤儿内容。

  • 查看Firebase身份验证。 它非常的无缝,并且不需要太多的努力来合并。 它也不会让最终用户感到侵入或麻烦。

    这是Google的视频教程。

    编辑:如果你的用户确定有一个电话号码的蜂窝设备,你可以使用AccountKit。 这也是他们所称的OTA(一次性认证)。 AccountKit只使用用户的电话号码来验证和验证用户。

    编辑:现在,Firebase身份验证功能与上面提到的AccountKit类似,具有“电话验证”功能。 两者都是很好的服务。 但是,Firebase手机验证可让您从头开始创建自己的用户界面(这意味着比AccountKit控制更好)。 此外,如果您不想制作用户界面,则始终可以使用FirebaseUI


    我已经通过推送通知实现了与你的东西很相似的东西,如果用户卸载了我的应用(并且从注册ID获取用户),我可以得到错误,并且如果他重新安装,他将获得新的注册ID,并尝试获取不同设备的用户UUID


    我认为最简单的方法是使用UUID并将散列存储在sharedPreferences上。 您应该尽早在应用程序中生成UUID。

    sharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS,Activity.MODE_PRIVATE);
    if (sharedPrefs.getString("YOUR-KEY-TO-THE-UUID") == null || "".equals(sharedPrefs.getString("YOUR-KEY-TO-THE-UUID"))){
        prefsEditor = sharedPrefs.edit();
        prefsEditor.putString("YOUR-KEY-TO-THE-UUID", UUID.randomUUID().toString());
        prefsEditor.commit();
    }
    
    链接地址: http://www.djcxy.com/p/12091.html

    上一篇: Least invasive way to uniquely identify Android user

    下一篇: URN format for a TNF