Cómo llamar a la función nativa de Iphone / Android desde Javascript?

Estoy usando Web View tanto en Iphone como en Android. En Android, utilizo crear una variable para llamar a las funciones / métodos nativos de Andriod. Pero no he podido encontrar algo similar en Iphone. Así, cómo llamar a una función de Iphone nativo de JavaScript.

IOS

En iOS, puede utilizar un esquema de url personalizado mediante la implementación de shouldStartLoadWithRequest . Si quisiera por ejemplo desea cambiar color de tinte de la barra de herramientas:

ViewController.h

 @property (strong, nonatomic) IBOutlet UIToolbar *toolbar; 

ViewController.m

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSURL *url = request.URL; NSString *scheme = [url scheme]; if ([scheme isEqualToString:@"color"]) { self.toolbar.tintColor = [self colorWithHexString:url.host]; } return YES; } 

Javascript

En javascript sólo cambia window.location , que pondrá en marcha un incendio y olvidará :

 window.location = 'color://' + color; 

Simplemente encadene sus parámetros como:

 window.location = 'myscheme://param1/' + value1 + '/param2/' + value2; 

Sólo asegúrese de utilizar encodeURIComponent para codificar sus parámetros (para crear una url válida).

Más información

Androide

En Android agregas una interfaz javascript:

  WebView webView = getWebView(); webView.loadUrl("http://localhost:8080"); // must be after loadUrl on lower apis webView.addJavascriptInterface(new AndroidBridge(this), "AndroidBridge"); 

 public class AndroidBridge { private MainActivity activity; public AndroidBridge(MainActivity activity) { this.activity = activity; } public void changeNavbarBackground(String color) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Log.i(getClass().getSimpleName(), "changeNavbarBackground " + color); Field f = R.color.class.getField(color); final int col = (Integer) f.get(null); activity.changeNavbarBackground(col); } } 

Javascript

En javascript usas la interfaz javascript:

 if (window.AndroidBridge) { window.AndroidBridge.changeNavbarBackground(color); } 
  • IPhone WebApp en la pantalla de inicio Persistencia
  • Configuración del visor para escalar para ajustar tanto el ancho como la altura
  • Nuevo PhoneGap 3.0 No se puede resolver la importación org.apache.cordova
  • Cómo evitar que el teclado en pantalla desaparezca cuando el foco cambia de un campo de texto a otro
  • Android: guarda valor en LocalStorage antes de WebView.loadUrl ()
  • Reproducción de audio html5 en el navegador android
  • ¿Qué tan potentes son los navegadores móviles en comparación con los escritorios?
  • ¿Puedo impedir que el teléfono se quede dormido en una página web?
  • Diferentes valores de giroscopio en celulares cromados móviles y safari
  • La geolocalización HTML5 ignora la opción enableHighAccuracy?
  • Meteor: ANDROID_HOME no está establecido aunque esté configurado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.