sd |
| Fernando | |
Buenas a tod@s los foristas. CONCIDERACIONES : * Aplicación OFFLINE/ANDROID. * Me disculpo por lo largo, la idea es pedir colaboración y al mismo tiempo aportar IDEAS al foro, más allá de si la IDEA es buena o mala. El ClientInformation.ID que genexus nos provee, como bien lo indica sus notas, es un ACEPTABLE IDENTIFICADOR DEL DISPOSITIVO. Desde un comienzo y hasta ahora estoy utilizando este identificador para reconocer al usuario offline que se está conectándo a los API del sistema. (SEND/RECEIVE/REST). Entorno a este identificador se construyen los parámetros que regirán el comportamiento de la aplicación (VENDEDOR/COBRADOR/FLETERO
etc), cada quien con sus opciones de menú. Todo esto funciona bien PEROOOO
. Cuando el usuario realiza un UPGRADE de la aplicación, dependiendo del grado del UPGRADE, GeneXus le genera al mismo dispositivo OTRO ClientInformation.ID., con esto se debe volver a re-configurar el dispositivo. Este cambio de ClientInformation.ID se produce tambien cuando el dispositivo sufre un UPGRADE del ANDROID o por lo menos así lo he detectado. Un cambio del identificador produce que todo el historial producido por el anterior (Ej. tracking) ya no esté relacionados con el nuevo, sin contar con los procesos que quedan sin finalizarse en el dispositivo con el identificador anterior. LO QUE ESTOY PROBANDO: a. Durante el proceso de identificación del usuario genero un código único a través de un servicio REST siguiendo ciertos criterios, a ese código luego le genero un CryptoHash. b. Generado el código guardo en el dispositivo un archivo del tipo aplicationname.conf donde a parte del código guardo otras informaciones encriptada. PROBLEMAS : 1. Si utilizo cualquiera de las opciones de DIRECTORY, este archivo se guarda en el entorno de la aplicación; por lo que los procesos de eliminar la aplicación o borrar el cache BORRAN el archivó generado. 2. Si utilizo por ejemplo Path = /storage/emulated/0/Documents/ + aplicationname.conf el archivo se guarda en el dispositivo (emulador) es visible por el usuario y no se borra al eliminar la aplicación o borrar el cache. * El problema es que al intentar leer nuevamente el archivo generado File.OpenRead() da un error desconocido (-1), previamente File.Exists devuelve true. CONSULTA: a. Alguien ha podido generar un IDENTIFICADOR que INEQUIVOCAMENTE y por una UNICA VEZ permita reconocer el dispositivo. b. Alguien a podido guardar un archivo fuera de la carpeta de la aplicación y luego lo a podido volver a leer. ALGUNAS IDEAS QUE NO ME OFRECEN TOTAL GARANTIA: * Producir un PIN unico para el usuario, pero no me garantiza que al momento de instalar o reinstalar la aplicación se ingrese el PIN de otro usuario que esta en producción. * Lectura del CODIGO GENERADO a travez de un QR, puede pasar lo anterior. Ambas situaciones son responsabilidad del administrador de la aplicación, pero no esta exento de errores. DESDE YA GRACIAS POR LOS COMENTARIOS. Atentamente. |
|
|
| | |
Back to sd |
|