Se comenta en las últimas entradas del blog de Android Developers el hecho que muchas veces es necesario identificar las instalaciones y los dispositivos en los que se instalan nuestras Apps. En el mundo #IPhone la cosa es relativamente más sencilla, ya que todo está «etiquetado»: hardware, software, Apple IDs…
En Android, la cosa es más compleja. Resumo a grandes rasgos las mejores maneras de identificar (hacer tracking) dispositivos y instalaciones.
Instalaciones de aplicación:
- Usar TelephonyManager.getDeviceId(): problema, ya que el sistema devolverá el IMEI, MEID, o ESN, pero no todos los dispositivos Android deben tener estos identificadores. Además, el ID no varia en distintos wipes (resets) y necesita permisos especiales (READ_PHONE_STATE).
- Utilizar un UID pseudo-aleatorio y registrarlo en el servidor: puede funcionar, pero existe una pequeña probabilidad de colisión entre identificadores.
- Con el modelo del punto 2, lo mejor sería utilizar el método UUID.randomUUID() que devuelva un UID único (RFC 4122)
Identificar dispositivos:
- Usar TelephonyManager.getDeviceId(), con el problema acabado de comentar.
- Utilizar la MAC Address del dispositivo: no muy recomendado, ya que no todos los dispositivos tienen un adaptador WIFI
- Utilizar la variable del sistema android.os.Build.SERIAL , pero sólo está disponible desde la versión 2.3 (GingerBread)
- Variable Settings.Secure.ANDROID_ID , disponible desde la versión 2.2 (Froyo), parece la mejor elección
Articulos relacionados
- Identifying App Installations (android-developers.blogspot.com)
- Is there a compilation of useful iOS frameworks? – Quora (quora.com)
- Android Gets In-App Billing (blogs.wsj.com)
- Bogus Metrics for Honeycomb Apps (jeanhsu.com)
- Android Market Finally Gets In-App Billing System, Developers Breath Sigh of Relief (inquisitr.com)