¿Cómo puedo desarrollar una aplicación web que sea tan buena como una aplicación móvil nativa? [cerrado]

Me estoy preparando para comenzar a trabajar en un proyecto que te permitirá escuchar tu colección de música desde cualquier dispositivo. Mi plan es construirlo como un sitio web receptivo, por lo que puedo orientarme a casi todos los dispositivos con una sola interfaz.

El problema es que quiero que la aplicación funcione sin conexión. Quiero que los usuarios de dispositivos móviles y de escritorio puedan guardar canciones para reproducirlas sin conexión y no quiero que la aplicación dependa estrictamente de la presencia de una conexión a Internet.

¿Es esta una idea factible? Creo que probablemente podría hacer que esto funcione en el escritorio agregando una extensión o aplicación de Chrome (estoy de acuerdo con que mi sitio web esté limitado a un solo navegador), pero no tengo ni idea de si esto es factible en el móvil. Realmente solo me importa Android; ¿Hay alguna forma en que pueda hacer que esto funcione en Android como una aplicación web?

aparte: sí, sé que una aplicación web nunca será tan fácil de usar como una aplicación nativa. Planeo hacer este proyecto solo, por lo que me importa más reducir las horas de trabajo de desarrollo que tener la experiencia de usuario perfecta.

TLDR: estoy creando una aplicación web receptiva, pero quiero que funcione sin conexión en Android y en Chrome para escritorio. Debe poder almacenar muchos archivos grandes de forma permanente y funcionar sin conexión a Internet. ¿Hay alguna biblioteca/API/software que me permita hacer esto?

Respuestas (1)

Hmm, en realidad creo que he encontrado una solución bastante buena para esto. Android le permite crear una aplicación que es solo una WebView para ver un sitio web, y puede vincular métodos de JavaScript a métodos en su aplicación de Android. Hay una gran cantidad de API disponibles para las extensiones de Chrome que pueden hacer cosas como acceder al sistema de archivos.

Básicamente, cuando se carga mi aplicación web, comprueba si Android o la extensión de Chrome están disponibles. Si una de esas cosas está realmente disponible, entonces usa los métodos apropiados para acceder al sistema de archivos y cualquier otra cosa. Si ninguno está disponible, entonces la aplicación se ejecuta en un modo "lite" con algunas características no disponibles.

En cuanto al almacenamiento en caché de las páginas para asegurarme de que funcionen sin conexión: creo que necesitaré mantener algún tipo de índice de los archivos que deben estar siempre disponibles y almacenados en caché, y descargar esos archivos localmente lo antes posible. En Android, puedo usar shouldOverrideUrlLoading() para asegurarme de que todas las solicitudes a estos archivos almacenados en caché se intercepten y, en su lugar, se cargue la copia local. Todavía no he averiguado los detalles exactos, pero sé que algo similar es factible en Chrome (en realidad, parece que las aplicaciones de Chrome se pueden ejecutar en Android/iOS , así que tal vez solo desarrolle una aplicación de Chrome...)