2012-01-29 18 views
8

Quiero asignar una ID única a cada usuario tan pronto como instale la aplicación para que cada vez que la aplicación se contacte con el servidor, sepa con quién se está contactando. Para este propósito, pensé que en la primera instalación, la aplicación se contacta con el servidor y obtiene una identificación única. Pero no sé dónde almacenarlo permanentemente para que la próxima vez que se inicie la aplicación, sepa cuál es su ID en lugar de contactar al servidor.ID único para cada usuario en Android

Lo siento si esa es una pregunta obvia ya que soy novato.

+1

¿Hay alguna razón por la que no vaya por el nombre de usuario/contraseña? Si un usuario tiene múltiples dispositivos y/o reemplaza su dispositivo Android, ya no podrá saber si son ellos. (No digo que no es lo correcto en este caso, pero ¿qué es realmente este caso? :) –

+1

Por cierto, de todos los duplicados sobre ID únicos, que parece ser uno de los más autorizados: http: // stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id, aunque eso no tiene en cuenta las advertencias que mencioné en mi respuesta. – EboMike

+0

Quiero rastrear la actividad del usuario y enviarla al servidor. Entonces, cada vez que un cliente ingresa esa identificación única en mi sitio web, él podría ver los registros asociados con ese usuario. Es por eso que no quiero que tenga identificación de inicio de sesión ya que la aplicación siempre se ejecutará en segundo plano. – Gaurav

Respuesta

6

Esta pregunta se ha hecho muchas veces en Stack Overflow.

En resumen: Android siempre ha admitido una ID única. Sin embargo, antes de Android 2.2, la identificación no siempre era idéntica en ciertos tipos de teléfonos. Dado que 2.2 es bastante ubicuo por ahora, usaría esa identificación.

El blog para desarrolladores de Android tiene a good article acerca de esto.

Y como dijo Joachim, es posible que desee considerar un enfoque diferente por completo. La identificación única de Android es buena y persistente en restablecimientos de fábrica, pero no en una actualización de dispositivo. También tenga en cuenta que muchas personas tienen varios dispositivos (como un teléfono y una tableta). Es posible que desee utilizar la cuenta de Google en su lugar, el AccountManager puede ayudarlo allí.

0

Use SharedPreferences para almacenar la identificación única.

Aquí se muestra un ejemplo:

Android SharedPreferences

Para datos más complejos, puede utilizar SQLite.

+0

Estoy pensando en generar una identificación aleatoria en el servidor usando la ID del dispositivo del usuario o alguna otra ID que averiguaré pronto. El problema fue almacenar una identificación aleatoria en el dispositivo. Entonces problema resuelto Gracias. :) – Gaurav

+0

SharedPreferences no sobrevivirá la reinstalación o el restablecimiento de fábrica o simplemente borrará la operación de datos de la aplicación por parte del usuario. Es posible que desee realizar una copia de seguridad en la cuenta de Google del usuario, pero aún se puede eliminar fácilmente. –

0

Para la identificación única, puede usar el IMEI del dispositivo en el que se instalará la aplicación. Consulte this link para obtener el número IMEI. Luego almacenó ese número IMEI en preferencia compartida. Consulte el enlace de Guillermo lobar para eso. Debe verificar esa ID única de preferencia cuando se inicia la aplicación. En el primer momento, guarda eso en preferencia. Entonces, cuando la próxima vez busque ese ID, la aplicación lo encontrará de preferencia y, por lo tanto, no será necesario conectar el servidor. :)

+0

IMEI en una tableta? Buena suerte... – EboMike

+0

@EboMike Gracias por hacer que lo mire. –

+0

@Gaurav En el caso de la tableta, Only 3G Tablets tiene IMEI. Pero por el enlace que he dado en mi respuesta, también puedes encontrar el ID del dispositivo de la tableta y que es único. Y para una ID única también puede usar ANDROID_ID. Consulte [http://stackoverflow.com/questions/8366013/android-imei-number-for-tablet]. Pero no es muy confiable según la respuesta de este enlace. –

0

Puede obtener el IMEI del dispositivo. A partir de API 26, getDeviceId() está en desuso. Si necesita obtener el IMEI del dispositivo, use lo siguiente:

String deviceId = ""; 
    if (Build.VERSION.SDK_INT >= 26) { 
     deviceId = getSystemService(TelephonyManager.class).getImei(); 
    }else{ 
     deviceId = getSystemService(TelephonyManager.class).getDeviceId(); 
    } 
+0

Necesita el permiso READ_PHONE_STATE para eso ... –

Cuestiones relacionadas