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.

One Solution collect form web for “Cómo llamar a la función nativa de Iphone / Android desde 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); } 
  • ¿cómo puedo obtener el valor de webkit-column-count y la página actual o ID de columna?
  • Cómo utilizar RouteBoxer.js para Google Map en Android
  • Función de devolución de llamada de Delphi de TWebBrowser por javascript en Delphi XE6 para todas las plataformas (incluyendo iOS, ANDROID)?
  • La selección de WebView hace que el teclado virtual se oculte temporalmente y luego regrese
  • ANDROID / WEBVIEW- Uncaught TypeError: Object no tiene ningún método 'changeActivity' en el archivo:
  • Android 4.0 -> 4.3 (incluido) - Almacenamiento web perdido entre las páginas de visualización web
  • Jest error de caso de prueba en reactivo nativo mediante el complemento externo
  • La aplicación se bloquea en Android 6 porque el módulo tiene reubicaciones de texto
  • Evitar el reflujo de documentos / el tamaño del navegador cuando se abre el teclado de Android
  • JavaScript se detiene en la pestaña inactiva de Chrome de Android
  • ¿Cómo puedo crear una función similar a JQuery Slider en la aplicación web de iPhone / Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.