¿Alguna forma para que la vista web se comunique con la aplicación nativa de iOS?

Tengo una aplicación para iPad que contiene una vista web. La página de la vista web tiene un button que, cuando se hace clic, necesita de alguna manera decirle a la aplicación nativa que cierre la vista web. ¿Hay alguna forma de hacer esto? es decir, una forma de que el javascript en la vista web pase posts a la aplicación nativa, y viceversa?

¡Gracias!

Tal vez tenga un NSNotification cuando se NSString un campo de instancia de NSString . Use la publicación aquí para ayudar a entender cómo comunicarse entre JavaScript y Objective-C.

Entonces, es solo cuestión de notificación y lógica de cadena:

Pasos para JavaScript a Objective-C:

  1. Se presiona el button de vista web.
  2. JavaScript dispara el método que devuelve la cadena.
  3. Se actualizó NSString local para indicar el button en la vista Web (ver publicación anterior).
  4. NSNotification dispara según el cambio de cadena.
  5. Objective-C cierra la vista web.

No está seguro de qué desea devolver a la vista Web desde Objective-C, pero la publicación anterior debería ayudar.

Puede considerar usar -webView:shouldStartLoadWithRequest:navigationType: Cree un enlace ficticio en el que pueda identificar y cerrar la vista web. En cuanto al revés, la respuesta de @ Paska parece apropiada.

Puede adjuntar cualquier acción usando

 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 

¡que detecta el javascript desde tu webview!

Aquí está el documento: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

Creo que la mejor manera es usar pseudo image en su lugar.

JS insertá una nueva image como: http://example.com/callnative_1354524562763.gif?p1=v1&p2=v2

Y su vista web anulará NSURLCache para recuperar imágenes transparentes 1×1 y analizar los parameters de su contenido web.

Tenga en count que NSURLCache solo almacena en caching una sola vez, así que genere una nueva timestamp para cada llamada.

De esta manera funciona mi proyecto y llamo inmediatamente a la aplicación nativa de iOS.