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

How should I go about identifying an android user to a server.
Should I get the IMSI number and some salting algorithm?
Considering androids space and performance limitations is there a library that isn’t too heavy that I can use to do the calculation?

  • Android ListView: Detect if ListView data fits on screen without scrolling
  • How is application orientation (landscape or portrait) locked?
  • Android Text Selection In Webview
  • Android : Device density is returned as zero from some devices
  • Android bug in Slide Activity transition
  • Two app with shared UserID
  • Related posts:

    Integrating video file in android app as app background
    wrong version keystore when doing https call
    Android- POST multipart form data
    AsyncTask and error handling on Android
    What's the home key for the Android emulator on Mac OS?
    Gradle Build Running in Android Studio for too long
  • Canvas does not draw in Custom View
  • Get new position of coordinate after rotation with Matrix
  • Is there a way to import a 3D model into Android?
  • Text size with different resolution
  • Vuforia vs. Metaio SDK vs. ARKit vs. D'Fusion Mobile vs. Layar SDK
  • Correct way to use IdlingResource in Espresso Android
  • 4 Solutions collect form web for “What's the best way to uniquely identify Android users to a server?”

    I think you cannot identify a user without any kind of account. Everything else is not reliable or only a device identification. Why don’t you provide an own registration service for your server, so you can give an unique id to every user.

    Another option might be the Google account which is bound to the device? Or will this cut you target audience for your up? But if you’re building an app which extends some sort of Google tool, app or whatever then user will already have a Google account so your app could also use it to identify the user.

    As stated by developer.android:

    Applications typically try to remember the user using one of three techniques:

    1. Ask the user to type in a username
    2. Retrieve a unique device ID to remember the device
    3. Retrieve a built-in account from AccountManager

    Option (1) is problematic. First, asking the user to type something before entering your app will automatically make your app less appealing. Second, there’s no guarantee that the username chosen will be unique.

    Option (2) is less onerous for the user, but it’s tricky to get right. More importantly, it only allows you to remember the user on one device. Imagine the frustration of someone who upgrades to a shiny new device, only to find that your app no longer remembers them.

    Option (3) is the preferred technique. Account Manager allows you to get information about the accounts that are stored on the user’s device. As we’ll see in this lesson, using Account Manager lets you remember your user, no matter how many devices the user may own, by adding just a couple of extra taps to your UI.

    in a few months many more users will have android phones and android tablets so if you want to track a user over multiple devices it’s best to use OAuth I think.

    To identify the user I should think using the google account is the best option, see the answer at
    Generating Device-Specific Serial Number

    If you just wish to identify an instance of your application, then why not let the server distribute ID:s?

    When your app launches, get SharedPreferences and check if “myid” has a value, if not, then request an ID from the server, which you store as “myid” in SharedPreferences. This id will survive app updates (but not uninstall/reinstall).

    On the server side, store all registered ID’s, and make sure your server distributes unique id’s. This way, nasty people hacking your server can’t use the ID’s to identify your users 😉

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.