Utilizando el enrutador Backbone.js y pushState en UIWebView

Estoy desarrollando una aplicación web basada en Backbone.js que, para algunos casos de uso, se envolverá dentro de un iOS UIWebView nativo. En la aplicación iOS, cuando queremos cambiar la página en la vista web, simplemente iniciamos una nueva request en la vista web, que carga la página en consecuencia.

Mi único problema es que cuando hay una ruta Backbone definida para la URL solicitada, quiero que la vista web use el routing de Backbone y pushState lugar de iniciar una carga de página completamente nueva. Sin embargo, cuando no hay ninguna ruta Backbone correspondiente a la URL solicitada, la vista web debe manejarla como una request de página nueva completa y "volver a cargar" la página con esa URL.

En este momento, la aplicación nativa utiliza el UIWebView loadRequest: UIWebView y pasa una nueva NSURLRequest , con un URL de, por ejemplo, "http://example.com/search", como parámetro.

En este momento, mi única idea es utilizar el UIWebView de stringByEvaluatingJavaScriptFromString: :

  • Haga que la vista web llame a alguna function JS que a su vez verificará si mis routes Backbone pueden manejar esa URL.
  • En caso afirmativo, debe activar la callback del enrutador.
  • De lo contrario, debería iniciar una nueva request de página con la URL.

¿Alguna input? ¿Hay alguna forma construida de resolver esto?

¡Gracias!

¿Podrías cambiar el uso de pushState para la aplicación de iOS? Supongo que la url no es visible para el usuario en la aplicación de todos modos, por lo que la desventaja de las direcciones URL más feas no se aplica. Entonces, en lugar de cambiar la URL a / items / 3, la cambiarías a # / items / 3.

Esto significaría que los cambios que necesitan ser manejados por la networking troncal simplemente cambiarían el hash y los cambios que necesitan una nueva página cambiarían la location.