conceptualizando dietista app desarrollo io

Conceptualizando una app que te ayuda a comer sano

La semana pasada te contaba la problemática que quería resolver con mi nuevo side project. Esta semana te cuento qué concepto de app tengo en mente, y qué tecnologías de iOS me van a ayudar a conseguirlo.

Soluciones a las problemáticas detectadas

Voy a utilizar las hipótesis que planteaba en el anterior post como guión de éste, y concluiré con un diagrama que muestra el concepto de la app.

“¿Qué me toca comer?”

Como te decía, existe esa constante sensación de saber continuamente qué me toca comer después: “¿Qué tenía para cenar?, no me acuerdo, voy a mirarlo de nuevo”. Para aliviar esta sensación mi propuesta es múltiple.

Extensión de Apple Watch. Si tienes un Apple Watch, ¿por qué no simplemente girar la muñeca y verlo directamente en la pantalla? Te lo contaré en un futuro post sobre el tema, pero watchOS (el sistema operativo que corre sobre el reloj de Apple) ofrece una interfaz modular totalmente personalizable por el usuario. El sistema ofrece una serie “huecos” dentro de la esfera del watch para que el usuario pueda seleccionar qué app quiere que los use, y así consumir información actualizada y relevante. Estos “huecos” se llaman complications (sí, a mi también me sorprende el nombre). Estos complications son de diferentes geometrías: utilitario grande, pequeño, circular, modular grande y pequeño, etc… Esas diferentes geomtrías se llaman familias. Es el desarrollador de la app el que elige qué tipo de familias ofrece al watch, dependiendo del tipo de información que quiera mostrar al usuario.

Me gusta especialmente este uso no intrusivo del Apple Watch. Los usuarios estamos ya cansados de tanta notificación, y exigimos cada vez más apps que nos dejen simplemente consultar la información cuando queramos, y que ésta esté actualizada.

ios complication apple watch desarrollo ios

Concepto y primeras pruebas de un complication

 

Extensión Today Widget. El sistema Android ya nos tiene acostumbrados a sus maravillosos widgets de escritorio. Pues bien, en el mundo iOS, podemos también implementar widgets, aunque en este caso no podemos colocarlos en cualquier parte del escitorio, sino que estamos limitados al espacio de la izquierda del springboard (escitorio de iOS). Aunque hay gente que no los usa, yo la verdad es que los uso bastante, cuando quiero, por ejemplo, ver el tiempo de mañana o consultar los resultados de una campaña de mailchimp, todo ellos sin abrir la app. Mi propuesta es implementar un Today Widget que me muestre la siguiente comida de un vistazo, con opción de ver las siguietes al pinchar en “ver más”. También, al pulsar el en widget, nos abrirá la app.

desarrollo ios today widget extension dietista

Concepto y primeras pruebas de implementación de un Today Widget

 

Integración con Siri. ¿Qué te parecería esto? “Oye Siri, qué me toca comer” Y Siri contesa “Pescado con verduras”. Pues bien, mi gozo en un pozo, porque la implementación de conversaciones de este tipo está aún limitada a una serie de dominios de aplicación muy específicos, y no podemos salirnos de ese guión. Es decir, podemos implementar una conversación con Siri que mande un mensaje a uno de nuestros contactos, o que pida un viaje en taxi, o que busque algo en el buscador. Pero no podemos crear experiencias personalizadas a día de hoy. Me llevé un gran chasco cuando investigué este tema, así que tendré que esperar a que madure un poco más esta tecnología.

 

Imprimir el menú en la nevera

Muy bien, tenemos el menú semanal metido en la app, pero también queremos tenerlo a mano, impreso, y pegado en la nevera. Tengo dos alternativas para esto.

CoreGraphics. La tecnología CoreGraphics de Apple nos ofrece diferentes contextos de dibujado. Aunque lo habitual es pintar sobre una imagen, o sobre una vista que queremos customizar, también está disponible un contexto de dibujado sobre PDF. La ventaja que esto ofrece es que obtendremos una calidad excelente sea cual sea el tamaño de impresión del fichero PDF. La idea sería añadir un botón para imprimir a PDF el menú, y que luego el usuario pueda, por ejemplo, mandarlo a la impresora, o enviárselo por email.

HTML + CSS. Otra opción es la de tener un HTML+CSS internos donde sustituyo elementos del DOM por entradas del menú. Aquí tenemos tamibén mucha flexibilidad. Lo que más me gusta de este approach es que, si finalmente publico la app para android, podremos reutilizar estas plantillas.

 

“¡Vaya, Se me ha olvidado poner a remojo los garbanzos!”

O sacar ese túper del congelador que te iba a librar de cocinar al día siguiente. Tengo un par de alternativas para solventar esto.

Remote push notifications. No descubro nada nuevo, notificaciones push de toda la vida. La idea es que el usuario reciba una push todos los días a sus 8pm recordándole la comida que tiene que tener lista para el día siguiente. Lo de “sus 8pm” no es un asunto baladí, y es que un pequeño reto va a ser conseguir mandar una push desde el servidor de firebase a las 8pm en el time zone del usuario. Una solución para esto puede ser, por un lado, que el usuario mande desde su dispositivo el timestamp de sus 8pm, y por otro lado tener un trigger HTTP en firebase que se lance desde cronjob.org cada 5 minutos y que compruebe si la hora actual es posterior a la hora en la habría que mandarle la push. Si es así, mandársela e incrementar en un día la fecha en la que hay que mandar la siguiente. La ventaje de usar pushes remotas es que llegan a todos los dispositivos del usuario, y además, por qué negarlo, suponen un canal de comunicación esencial con ellos.

Local notifications. Notificaciones locales de toda la vida. En este caso la ventaja es que son mucho más fáciles de implementar ya que no tenemos que añadir esa lógica especial para avisar al usuario a las 8pm de su time zone. Por el contrario, perdemos un canal de comunicación esencial con nuestros usuarios, y además sólo se recibirían en uno de sus dispostivos.

Push notifications ios desarrollo ios

Pruebas y concepto de notificación push que te recuerda el día anterior

 

Registro de peso

Mi idea es mostrarle al usuario en su perfil: su peso actual, su peso objetivo, y una gráfica con todas las medidas de peso anteriores. Quiero investigar el uso de HealthKit en este apartado, para poder sacar el histórico de pesos de su perfil si el usuario usó algna balanza electrónica alguna vez. Además, para mostrar la gráfica usaré la librería “Charts” para iOS, con la que ya tengo alguna experiencia trabajando.

Por otro lado, quiero ofrecer también la posibilidad de configurar una push para avisar al usuario de que se tiene que pesar. Quiero ofrecer una configuración flexible, pero en la primera versión me ceñiré a que el usuario pueda seleccionar un día y una hora semanalmente para recibir esta push.

 

Lista de la compra automática

Vale, ya tenemos cargado el menú en la app, y lo hemos imprimido y pegado en la nevera, pero ahora, ¡hay que hacer la lista de la compra! Para esto, lo que tengo pensado es que cada plato de cada comida configurada en la app (ofreceremos varios platos saludables de forma predefinida) lleve asociada una lsita de ingredientes que la componen.

De esta manera, podremos mostrar en una sección de lista de la compra todos aquellos alimentos que nos hacen falta para cumplir el menú activo. Ahora el usuario sólo tiene que abrir la nevera/despensa, y marcar aquellos que ya tienen para que quede reflejado que no los tiene que comprar.

Esta sección da mucho juego. Podemos, por ejemplo, marcar con un código de colores aquellos alimentos que son más urgentes que otros. De cara a la monetización, también podemos intentar conectar con algún API de compra on-line, aunque reconozco que esto lo tengo que investigar un poco más.

 

Diagrama de bloques

Como fase primera de la conceptualización de una app, suelo hacerme un diagrama de bloques con draw.io. Cada bloque correspondería a una pantalla/módulo de la app. A cada bloque asigno una nota donde pongo dos cosas. Primero, qué información se muestra; y segundo, qué acciones de usuario están permitidas en dicho módulo. Esto me ayuda a detectar necesidades de datos en cada módulo, además de permitirme comprobar que la problemática que quiero resolver queda plasmada en la app.

Te muestro el diagrama de bloques de conceptualización que he trabajado en Dietistaapp. Puede que no todo lo que está en el diagrama se implemente en la primera release, o puede que sí. Lo iremos viendo.

Dietista app desarollo ios conceptualización diagrama de bloques

Conceptualización de Dietista app. Módulos y tecnologías involucradas en el desarrollo de la app

 

Retos

Diría que el gran reto de esta app es la introducción de datos. Es un tremendo jaleo tener que meter cada plato, de cada comida, de cada día, semana tras semana. Así que el UX tiene que estar muy cuidado. Me gusta mucho el modelo de interacción de la app Bring!, que en su día Urtzi me recomendó, y que también me recomienda basarme en él para dietista app.

La idea sería, a la hora de configurar una comida, ofrecer una sección con todos los platos disponibles como “tarjetitas” en la sección inferior. Cuando el usuario toca en un ade ellas, ésta pasa a la sección superior, donde después se podrán reordenar a gusto del usuario.

Por otro lado, sería buena idea ofrecer herramientas de copia y duplicado de comidas de un día a otro, e incluso de una semana a la siguiente. De esta forma sólo habría que editar los cambios. Lo iremos viendo.

 

Conclusión

Te comentaba en un post anterior que antes de tirar una línea de código tienes que intentar validar la idea. Yo intenté validar Dietistaapp mediante una encuesta online publicada en el lugar adecuado y en el momento preciso.

Después he querido hacer un estudio de tecnologías que me pueden ayudar a sobrevellevar dicha problemática. Creo que es una app muy sencilla de generar, ya no tiene a penas lógica de negocio, ni en cliente, ni en servidor. Te he hablado de extensiones de iOS de Apple Watch y Today Widgets. También de Firebase y de notificaciones push. HTML+CSS o CoreGraphics para imprimir el menú. Creo que todo ello encaja muy bien. La decepción me la he llevado con SiriKit, porque realmente pensaba que iba a ser muy útil, pero en este caso toca esperar.

¿Y tú? ¿Cómo seleccionas la tecnología en tus apps? ¿Te parece coherente mi planteamiento para Dietista app? ¡Cuéntamelo en los comentarios!

No hay comentarios

Deja un comentario