Least invasive way to uniquely identify Android user

How can you uniquely identify a user who has installed your app so that:

  • You will know it is them if they delete and reinstall your app;
  • You will know it is them if they install your app on a second device they intend to use simultaneously?
  • Just as an example, I see that the Netflix app will automatically link to your desktop account without any user interaction. I'm guessing that they use accountManager.getAccounts() or similar method, because they also require the GET_ACCOUNTS permission. But of course that permission is marked as Protection level: dangerous . Is there any technique to do this that is less invasive or potentially alarming?


    The key to answering this is to be both simple (for the user) and minimally invasive. Android provides heaps of ways to identify users and many of those ways involve piercing a user's privacy, and if that is the only way, I will do what I do now (optional email registration). I just want a way for my app to know if a user already is registered in my system across installs without having to interview the user (username/password, email address, third-party OAuth, etc).

    My main reasons are:

  • I don't want support requests from users who orphaned their content after a reinstall; and
  • I don't want to host lots of orphaned content.

  • Have a look at Firebase Authentication. It's quite seamless and does not require much effort to incorporate. Also it does not feel intrusive or cumbersome to the end user.

    Here is a video tutorial by Google.

    EDIT: In case your users are sure to have a cellular device with a phone number, you can use AccountKit. It is also what they call OTA (One Time Authentication). AccountKit uses just the users phone number to verify and validate users.

    EDIT: Firebase Authentication now features 'Phone Verification' which is similar to AccountKit mentioned above. Both are good services. However, Firebase phone verification lets you make your own UI from scratch (which means a lot better control than AccountKit). Also, if you don't want to make your UI, you can always use FirebaseUI


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


    I think the simplest way would be using UUID and storing the hash on sharedPreferences. You should generate the UUID as earlier as possible in your app.

    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/12092.html

    上一篇: 适用于URL的Path.Combine?

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