Terminado

Convertir App de Android a Iphone y publicar en App Store

Publicado el 27 Marzo, 2017 en Programación y Tecnología

Sobre este proyecto

Abierto

La aplicación existe en Android y necesitamos convertirla a iOS para iphone.

Facilito código fuente de la APK Android y última versión de la APK, incluye todos los archivos y elementos gráficos.

La aplicación necesita los siguientes.

- Pantalla de login
- Pantalla principal con el estado de la planta que contendrá 3 botones, cada uno de ellos abrirá una página web con los datos correspondientes al usuario que se ha logueado:
- Unidades móviles
- Energía
- Climatización
- Servicio en segundo plano de notificaciones:
- Realiza una consulta cada cierto tiempo a una web, que devuelve una información de las alertas recibidas, contra las que se comprueba unos valores para , si es necesario, generar una notificación al usuario.

La aplicación se entregará lista para publicar en el App Store.

Se solicita cotización y plazo de ejecución.

Muchas gracias y saludos.

Descripción de la aplicación:
  Básicamente la APP tiene 2 componentes, uno activo (las pantallas con las que interactua el usuario) y otro pasivo (el servicio que está actualizando la información del estado de las alarmas y generando las notificaciones pertinentes).

    El objetivo final de la aplicación es que una serie de técnicos encargados de la supervisión de unas máquinas distribuidas geográficamente por España, reciban notificaciones de forma automática, autónoma y rápida de la aparición/modificación/desaparición de problemas en dichas máquinas.

    La APP es la "punta del iceberg" (el elemento de usuario final), de una infraestructura más compleja que se encarga de gestionar las alarmas de las máquinas, almacenar los históricos de los eventos de las mismas, presentarlas, y trabajar con ellas. Esta infraestructura pre-existente es un servicio con un interfaz web alojado en "http://www.on-tgs-com:8888/" . Dicho interfaz web tiene una API para trabajar con el exterior (o sea con las APPs de Android y iOS) que es el único elemento con el que va a interactuar la aplicación.
Dicha api está basada en el intercambio de información por medio de json
    por organizar un poco la descripción de lo que necesito, voy a empezar por describir los elementos de esa api web, y luego entraré en el detalle de la aplicación y como interactúa con cada uno de ellos.

    SendToken --> Es el primer método al que accede la APP. Se le pasa por medio de un get un usuario y una contraseña, y el método devuelve una estructura json muy sencilla, que contiene un resultado de la petición y en el caso de que las credenciales sean válidas, entrega a su vez un "token de autenticación", que sirve para autenticar a este usuario en interacciones futuras con el servidor.

    CheckToken --> Se le pasa como parámetro en forma de get un token de autenticación, y el servidor responde con un "ok" si el token es válido (se usa al iniciar la aplicación para comprobar si hay que volver a pedir las credenciales al usuario)

    sendalarmsinfo --> este método es la madre del cordero. Se le pasa en un GET el Token de autenticación, y responde con una estructura que entrega el estado de todas las alarmas activas en todas las máquinas (es decir, una "foto" actual de como están las maquinas)

    jumpFromApp --> No es estrictamente un método de la api, sino que es la url a la que hay que ir desde la app cuando se desea ir al interfaz web de gestión de un tipo de máquina

    jumpfromapptomaq --> similar al anterior, pero cuando se quiere saltar al interfaz web de una máquina en concreto


    aplicación de usuario. Ciclo de vida

    1.
El usuario arranca la aplicación manualmente (o pinchando en una notificación de la misma)

    2. La aplicación comprueba si tiene un Token almacenado (de una ejecución anterior) y si es así, lo chequea

    3. Si el token es válido salta al paso 7
    4.
La aplicación comprueba si tiene credenciales (usuario y contraseña) almacenados de un a ejecución anterior, e intenta autenticar (obtener un token) usándolos

    5. Si lo consigue salta al paso 7
    6. La aplicación muestra la pantalla de "Login", solicitando un usuario y contraseña y se queda aquí hasta que se proporcionan unos válidos (y almacena el usuario y la contraseña, y el Token para el futuro).


    7. La aplicación comprueba en sus datos el ultimo estado que tiene de las máquinas y lo "pinta" en su interfaz

    8. La aplicación pone en marcha (si es necesario, el servicio está configurado para ponerse en marcha en el arranque del sistema) o se suscribe (si ya está andando) al servicio encargado de chequear el estado de las alarmas.

    9. El usuario "interactua" con la aplicación. Esta interactuación es una chorrada, y consiste en que o bien pincha en un tipo de máquina y la aplicación abre un navegador que le lleva a "jumpFromApp", o bien pincha en una máquina en concreto y la aplicación abre un navegador y le lleva a "jumpFromAppToMaq"


    Servicio de actualización de información

    1. Se arranca con la APP o en el encendido del teléfono

    2.
De forma periódica (cada minuto)

    3. Hace una petición al servidor de On-Tgs para conseguir el estado actual de las alarmas

    4. Compara dicho estado con el estado actual y genera las notificaciones de los cambios a reportar

    5.
Pasa las notificaciones al sistema de notificaciones del teléfono

    6. Almacena la "foto" recibida

    7. Vuelve a "pintar" en la APP la nueva foto
   
    Y esto es básicamente todo.
La parte que es estrictamente del teléfono (como hacer un servicio periódico, como hacer notificaciones, etc) es lo que entiendo que hay que hacer. La parte de interactuar con el servidor está totalmente hecha (en Java) incluyendo los métodos que se encargar de comparar 2 estados y generar una lista de las notificaciones a enviar

Categoría Programación y Tecnología
Subcategoría Programación de Apps. Android, iOS y otros
¿Cuál es el alcance del proyecto? Cambio mediano
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Experiencia en este tipo de proyectos Sí (He administrado este tipo de proyectos anteriormente)
Integraciones de API Otros (Otras APIs)
Plataformas requeridas iPhone, Android

Plazo de Entrega: No definido

Habilidades necesarias